nir_intrinsics.h revision 10e230b6
110e230b6Smaya/* Copyright (C) 2018 Red Hat 210e230b6Smaya * 310e230b6Smaya * Permission is hereby granted, free of charge, to any person obtaining a 410e230b6Smaya * copy of this software and associated documentation files (the "Software"), 510e230b6Smaya * to deal in the Software without restriction, including without limitation 610e230b6Smaya * the rights to use, copy, modify, merge, publish, distribute, sublicense, 710e230b6Smaya * and/or sell copies of the Software, and to permit persons to whom the 810e230b6Smaya * Software is furnished to do so, subject to the following conditions: 910e230b6Smaya * 1010e230b6Smaya * The above copyright notice and this permission notice (including the next 1110e230b6Smaya * paragraph) shall be included in all copies or substantial portions of the 1210e230b6Smaya * Software. 1310e230b6Smaya * 1410e230b6Smaya * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1510e230b6Smaya * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1610e230b6Smaya * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1710e230b6Smaya * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1810e230b6Smaya * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 1910e230b6Smaya * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 2010e230b6Smaya * IN THE SOFTWARE. 2110e230b6Smaya */ 2210e230b6Smaya 2310e230b6Smaya#ifndef _NIR_INTRINSICS_ 2410e230b6Smaya#define _NIR_INTRINSICS_ 2510e230b6Smaya 2610e230b6Smaya 2710e230b6Smaya 2810e230b6Smayatypedef enum { 2910e230b6Smaya nir_intrinsic_atomic_counter_add, 3010e230b6Smaya nir_intrinsic_atomic_counter_add_deref, 3110e230b6Smaya nir_intrinsic_atomic_counter_and, 3210e230b6Smaya nir_intrinsic_atomic_counter_and_deref, 3310e230b6Smaya nir_intrinsic_atomic_counter_comp_swap, 3410e230b6Smaya nir_intrinsic_atomic_counter_comp_swap_deref, 3510e230b6Smaya nir_intrinsic_atomic_counter_exchange, 3610e230b6Smaya nir_intrinsic_atomic_counter_exchange_deref, 3710e230b6Smaya nir_intrinsic_atomic_counter_inc, 3810e230b6Smaya nir_intrinsic_atomic_counter_inc_deref, 3910e230b6Smaya nir_intrinsic_atomic_counter_max, 4010e230b6Smaya nir_intrinsic_atomic_counter_max_deref, 4110e230b6Smaya nir_intrinsic_atomic_counter_min, 4210e230b6Smaya nir_intrinsic_atomic_counter_min_deref, 4310e230b6Smaya nir_intrinsic_atomic_counter_or, 4410e230b6Smaya nir_intrinsic_atomic_counter_or_deref, 4510e230b6Smaya nir_intrinsic_atomic_counter_post_dec, 4610e230b6Smaya nir_intrinsic_atomic_counter_post_dec_deref, 4710e230b6Smaya nir_intrinsic_atomic_counter_pre_dec, 4810e230b6Smaya nir_intrinsic_atomic_counter_pre_dec_deref, 4910e230b6Smaya nir_intrinsic_atomic_counter_read, 5010e230b6Smaya nir_intrinsic_atomic_counter_read_deref, 5110e230b6Smaya nir_intrinsic_atomic_counter_xor, 5210e230b6Smaya nir_intrinsic_atomic_counter_xor_deref, 5310e230b6Smaya nir_intrinsic_ballot, 5410e230b6Smaya nir_intrinsic_ballot_bit_count_exclusive, 5510e230b6Smaya nir_intrinsic_ballot_bit_count_inclusive, 5610e230b6Smaya nir_intrinsic_ballot_bit_count_reduce, 5710e230b6Smaya nir_intrinsic_ballot_bitfield_extract, 5810e230b6Smaya nir_intrinsic_ballot_find_lsb, 5910e230b6Smaya nir_intrinsic_ballot_find_msb, 6010e230b6Smaya nir_intrinsic_barrier, 6110e230b6Smaya nir_intrinsic_begin_invocation_interlock, 6210e230b6Smaya nir_intrinsic_bindless_image_atomic_add, 6310e230b6Smaya nir_intrinsic_bindless_image_atomic_and, 6410e230b6Smaya nir_intrinsic_bindless_image_atomic_comp_swap, 6510e230b6Smaya nir_intrinsic_bindless_image_atomic_exchange, 6610e230b6Smaya nir_intrinsic_bindless_image_atomic_fadd, 6710e230b6Smaya nir_intrinsic_bindless_image_atomic_max, 6810e230b6Smaya nir_intrinsic_bindless_image_atomic_min, 6910e230b6Smaya nir_intrinsic_bindless_image_atomic_or, 7010e230b6Smaya nir_intrinsic_bindless_image_atomic_xor, 7110e230b6Smaya nir_intrinsic_bindless_image_load, 7210e230b6Smaya nir_intrinsic_bindless_image_load_raw_intel, 7310e230b6Smaya nir_intrinsic_bindless_image_samples, 7410e230b6Smaya nir_intrinsic_bindless_image_size, 7510e230b6Smaya nir_intrinsic_bindless_image_store, 7610e230b6Smaya nir_intrinsic_bindless_image_store_raw_intel, 7710e230b6Smaya nir_intrinsic_copy_deref, 7810e230b6Smaya nir_intrinsic_deref_atomic_add, 7910e230b6Smaya nir_intrinsic_deref_atomic_and, 8010e230b6Smaya nir_intrinsic_deref_atomic_comp_swap, 8110e230b6Smaya nir_intrinsic_deref_atomic_exchange, 8210e230b6Smaya nir_intrinsic_deref_atomic_fadd, 8310e230b6Smaya nir_intrinsic_deref_atomic_fcomp_swap, 8410e230b6Smaya nir_intrinsic_deref_atomic_fmax, 8510e230b6Smaya nir_intrinsic_deref_atomic_fmin, 8610e230b6Smaya nir_intrinsic_deref_atomic_imax, 8710e230b6Smaya nir_intrinsic_deref_atomic_imin, 8810e230b6Smaya nir_intrinsic_deref_atomic_or, 8910e230b6Smaya nir_intrinsic_deref_atomic_umax, 9010e230b6Smaya nir_intrinsic_deref_atomic_umin, 9110e230b6Smaya nir_intrinsic_deref_atomic_xor, 9210e230b6Smaya nir_intrinsic_deref_buffer_array_length, 9310e230b6Smaya nir_intrinsic_discard, 9410e230b6Smaya nir_intrinsic_discard_if, 9510e230b6Smaya nir_intrinsic_elect, 9610e230b6Smaya nir_intrinsic_emit_vertex, 9710e230b6Smaya nir_intrinsic_emit_vertex_with_counter, 9810e230b6Smaya nir_intrinsic_end_invocation_interlock, 9910e230b6Smaya nir_intrinsic_end_primitive, 10010e230b6Smaya nir_intrinsic_end_primitive_with_counter, 10110e230b6Smaya nir_intrinsic_exclusive_scan, 10210e230b6Smaya nir_intrinsic_first_invocation, 10310e230b6Smaya nir_intrinsic_get_buffer_size, 10410e230b6Smaya nir_intrinsic_global_atomic_add, 10510e230b6Smaya nir_intrinsic_global_atomic_and, 10610e230b6Smaya nir_intrinsic_global_atomic_comp_swap, 10710e230b6Smaya nir_intrinsic_global_atomic_exchange, 10810e230b6Smaya nir_intrinsic_global_atomic_fadd, 10910e230b6Smaya nir_intrinsic_global_atomic_fcomp_swap, 11010e230b6Smaya nir_intrinsic_global_atomic_fmax, 11110e230b6Smaya nir_intrinsic_global_atomic_fmin, 11210e230b6Smaya nir_intrinsic_global_atomic_imax, 11310e230b6Smaya nir_intrinsic_global_atomic_imin, 11410e230b6Smaya nir_intrinsic_global_atomic_or, 11510e230b6Smaya nir_intrinsic_global_atomic_umax, 11610e230b6Smaya nir_intrinsic_global_atomic_umin, 11710e230b6Smaya nir_intrinsic_global_atomic_xor, 11810e230b6Smaya nir_intrinsic_group_memory_barrier, 11910e230b6Smaya nir_intrinsic_image_atomic_add, 12010e230b6Smaya nir_intrinsic_image_atomic_and, 12110e230b6Smaya nir_intrinsic_image_atomic_comp_swap, 12210e230b6Smaya nir_intrinsic_image_atomic_exchange, 12310e230b6Smaya nir_intrinsic_image_atomic_fadd, 12410e230b6Smaya nir_intrinsic_image_atomic_max, 12510e230b6Smaya nir_intrinsic_image_atomic_min, 12610e230b6Smaya nir_intrinsic_image_atomic_or, 12710e230b6Smaya nir_intrinsic_image_atomic_xor, 12810e230b6Smaya nir_intrinsic_image_deref_atomic_add, 12910e230b6Smaya nir_intrinsic_image_deref_atomic_and, 13010e230b6Smaya nir_intrinsic_image_deref_atomic_comp_swap, 13110e230b6Smaya nir_intrinsic_image_deref_atomic_exchange, 13210e230b6Smaya nir_intrinsic_image_deref_atomic_fadd, 13310e230b6Smaya nir_intrinsic_image_deref_atomic_max, 13410e230b6Smaya nir_intrinsic_image_deref_atomic_min, 13510e230b6Smaya nir_intrinsic_image_deref_atomic_or, 13610e230b6Smaya nir_intrinsic_image_deref_atomic_xor, 13710e230b6Smaya nir_intrinsic_image_deref_load, 13810e230b6Smaya nir_intrinsic_image_deref_load_param_intel, 13910e230b6Smaya nir_intrinsic_image_deref_load_raw_intel, 14010e230b6Smaya nir_intrinsic_image_deref_samples, 14110e230b6Smaya nir_intrinsic_image_deref_size, 14210e230b6Smaya nir_intrinsic_image_deref_store, 14310e230b6Smaya nir_intrinsic_image_deref_store_raw_intel, 14410e230b6Smaya nir_intrinsic_image_load, 14510e230b6Smaya nir_intrinsic_image_load_raw_intel, 14610e230b6Smaya nir_intrinsic_image_samples, 14710e230b6Smaya nir_intrinsic_image_size, 14810e230b6Smaya nir_intrinsic_image_store, 14910e230b6Smaya nir_intrinsic_image_store_raw_intel, 15010e230b6Smaya nir_intrinsic_inclusive_scan, 15110e230b6Smaya nir_intrinsic_interp_deref_at_centroid, 15210e230b6Smaya nir_intrinsic_interp_deref_at_offset, 15310e230b6Smaya nir_intrinsic_interp_deref_at_sample, 15410e230b6Smaya nir_intrinsic_load_alpha_ref_float, 15510e230b6Smaya nir_intrinsic_load_barycentric_at_offset, 15610e230b6Smaya nir_intrinsic_load_barycentric_at_sample, 15710e230b6Smaya nir_intrinsic_load_barycentric_centroid, 15810e230b6Smaya nir_intrinsic_load_barycentric_pixel, 15910e230b6Smaya nir_intrinsic_load_barycentric_sample, 16010e230b6Smaya nir_intrinsic_load_base_instance, 16110e230b6Smaya nir_intrinsic_load_base_vertex, 16210e230b6Smaya nir_intrinsic_load_blend_const_color_a_float, 16310e230b6Smaya nir_intrinsic_load_blend_const_color_aaaa8888_unorm, 16410e230b6Smaya nir_intrinsic_load_blend_const_color_b_float, 16510e230b6Smaya nir_intrinsic_load_blend_const_color_g_float, 16610e230b6Smaya nir_intrinsic_load_blend_const_color_r_float, 16710e230b6Smaya nir_intrinsic_load_blend_const_color_rgba8888_unorm, 16810e230b6Smaya nir_intrinsic_load_constant, 16910e230b6Smaya nir_intrinsic_load_deref, 17010e230b6Smaya nir_intrinsic_load_draw_id, 17110e230b6Smaya nir_intrinsic_load_first_vertex, 17210e230b6Smaya nir_intrinsic_load_frag_coord, 17310e230b6Smaya nir_intrinsic_load_front_face, 17410e230b6Smaya nir_intrinsic_load_global, 17510e230b6Smaya nir_intrinsic_load_global_invocation_id, 17610e230b6Smaya nir_intrinsic_load_global_invocation_index, 17710e230b6Smaya nir_intrinsic_load_helper_invocation, 17810e230b6Smaya nir_intrinsic_load_input, 17910e230b6Smaya nir_intrinsic_load_instance_id, 18010e230b6Smaya nir_intrinsic_load_interpolated_input, 18110e230b6Smaya nir_intrinsic_load_invocation_id, 18210e230b6Smaya nir_intrinsic_load_is_indexed_draw, 18310e230b6Smaya nir_intrinsic_load_kernel_input, 18410e230b6Smaya nir_intrinsic_load_layer_id, 18510e230b6Smaya nir_intrinsic_load_local_group_size, 18610e230b6Smaya nir_intrinsic_load_local_invocation_id, 18710e230b6Smaya nir_intrinsic_load_local_invocation_index, 18810e230b6Smaya nir_intrinsic_load_num_subgroups, 18910e230b6Smaya nir_intrinsic_load_num_work_groups, 19010e230b6Smaya nir_intrinsic_load_output, 19110e230b6Smaya nir_intrinsic_load_param, 19210e230b6Smaya nir_intrinsic_load_patch_vertices_in, 19310e230b6Smaya nir_intrinsic_load_per_vertex_input, 19410e230b6Smaya nir_intrinsic_load_per_vertex_output, 19510e230b6Smaya nir_intrinsic_load_primitive_id, 19610e230b6Smaya nir_intrinsic_load_push_constant, 19710e230b6Smaya nir_intrinsic_load_sample_id, 19810e230b6Smaya nir_intrinsic_load_sample_id_no_per_sample, 19910e230b6Smaya nir_intrinsic_load_sample_mask_in, 20010e230b6Smaya nir_intrinsic_load_sample_pos, 20110e230b6Smaya nir_intrinsic_load_sample_pos_from_id, 20210e230b6Smaya nir_intrinsic_load_scratch, 20310e230b6Smaya nir_intrinsic_load_shared, 20410e230b6Smaya nir_intrinsic_load_size_ir3, 20510e230b6Smaya nir_intrinsic_load_ssbo, 20610e230b6Smaya nir_intrinsic_load_ssbo_ir3, 20710e230b6Smaya nir_intrinsic_load_subgroup_eq_mask, 20810e230b6Smaya nir_intrinsic_load_subgroup_ge_mask, 20910e230b6Smaya nir_intrinsic_load_subgroup_gt_mask, 21010e230b6Smaya nir_intrinsic_load_subgroup_id, 21110e230b6Smaya nir_intrinsic_load_subgroup_invocation, 21210e230b6Smaya nir_intrinsic_load_subgroup_le_mask, 21310e230b6Smaya nir_intrinsic_load_subgroup_lt_mask, 21410e230b6Smaya nir_intrinsic_load_subgroup_size, 21510e230b6Smaya nir_intrinsic_load_tess_coord, 21610e230b6Smaya nir_intrinsic_load_tess_level_inner, 21710e230b6Smaya nir_intrinsic_load_tess_level_outer, 21810e230b6Smaya nir_intrinsic_load_ubo, 21910e230b6Smaya nir_intrinsic_load_uniform, 22010e230b6Smaya nir_intrinsic_load_user_clip_plane, 22110e230b6Smaya nir_intrinsic_load_vertex_id, 22210e230b6Smaya nir_intrinsic_load_vertex_id_zero_base, 22310e230b6Smaya nir_intrinsic_load_view_index, 22410e230b6Smaya nir_intrinsic_load_viewport_offset, 22510e230b6Smaya nir_intrinsic_load_viewport_scale, 22610e230b6Smaya nir_intrinsic_load_viewport_x_scale, 22710e230b6Smaya nir_intrinsic_load_viewport_y_scale, 22810e230b6Smaya nir_intrinsic_load_viewport_z_offset, 22910e230b6Smaya nir_intrinsic_load_viewport_z_scale, 23010e230b6Smaya nir_intrinsic_load_vulkan_descriptor, 23110e230b6Smaya nir_intrinsic_load_work_dim, 23210e230b6Smaya nir_intrinsic_load_work_group_id, 23310e230b6Smaya nir_intrinsic_memory_barrier, 23410e230b6Smaya nir_intrinsic_memory_barrier_atomic_counter, 23510e230b6Smaya nir_intrinsic_memory_barrier_buffer, 23610e230b6Smaya nir_intrinsic_memory_barrier_image, 23710e230b6Smaya nir_intrinsic_memory_barrier_shared, 23810e230b6Smaya nir_intrinsic_nop, 23910e230b6Smaya nir_intrinsic_quad_broadcast, 24010e230b6Smaya nir_intrinsic_quad_swap_diagonal, 24110e230b6Smaya nir_intrinsic_quad_swap_horizontal, 24210e230b6Smaya nir_intrinsic_quad_swap_vertical, 24310e230b6Smaya nir_intrinsic_read_first_invocation, 24410e230b6Smaya nir_intrinsic_read_invocation, 24510e230b6Smaya nir_intrinsic_reduce, 24610e230b6Smaya nir_intrinsic_set_vertex_count, 24710e230b6Smaya nir_intrinsic_shader_clock, 24810e230b6Smaya nir_intrinsic_shared_atomic_add, 24910e230b6Smaya nir_intrinsic_shared_atomic_and, 25010e230b6Smaya nir_intrinsic_shared_atomic_comp_swap, 25110e230b6Smaya nir_intrinsic_shared_atomic_exchange, 25210e230b6Smaya nir_intrinsic_shared_atomic_fadd, 25310e230b6Smaya nir_intrinsic_shared_atomic_fcomp_swap, 25410e230b6Smaya nir_intrinsic_shared_atomic_fmax, 25510e230b6Smaya nir_intrinsic_shared_atomic_fmin, 25610e230b6Smaya nir_intrinsic_shared_atomic_imax, 25710e230b6Smaya nir_intrinsic_shared_atomic_imin, 25810e230b6Smaya nir_intrinsic_shared_atomic_or, 25910e230b6Smaya nir_intrinsic_shared_atomic_umax, 26010e230b6Smaya nir_intrinsic_shared_atomic_umin, 26110e230b6Smaya nir_intrinsic_shared_atomic_xor, 26210e230b6Smaya nir_intrinsic_shuffle, 26310e230b6Smaya nir_intrinsic_shuffle_down, 26410e230b6Smaya nir_intrinsic_shuffle_up, 26510e230b6Smaya nir_intrinsic_shuffle_xor, 26610e230b6Smaya nir_intrinsic_ssbo_atomic_add, 26710e230b6Smaya nir_intrinsic_ssbo_atomic_add_ir3, 26810e230b6Smaya nir_intrinsic_ssbo_atomic_and, 26910e230b6Smaya nir_intrinsic_ssbo_atomic_and_ir3, 27010e230b6Smaya nir_intrinsic_ssbo_atomic_comp_swap, 27110e230b6Smaya nir_intrinsic_ssbo_atomic_comp_swap_ir3, 27210e230b6Smaya nir_intrinsic_ssbo_atomic_exchange, 27310e230b6Smaya nir_intrinsic_ssbo_atomic_exchange_ir3, 27410e230b6Smaya nir_intrinsic_ssbo_atomic_fadd, 27510e230b6Smaya nir_intrinsic_ssbo_atomic_fcomp_swap, 27610e230b6Smaya nir_intrinsic_ssbo_atomic_fmax, 27710e230b6Smaya nir_intrinsic_ssbo_atomic_fmin, 27810e230b6Smaya nir_intrinsic_ssbo_atomic_imax, 27910e230b6Smaya nir_intrinsic_ssbo_atomic_imax_ir3, 28010e230b6Smaya nir_intrinsic_ssbo_atomic_imin, 28110e230b6Smaya nir_intrinsic_ssbo_atomic_imin_ir3, 28210e230b6Smaya nir_intrinsic_ssbo_atomic_or, 28310e230b6Smaya nir_intrinsic_ssbo_atomic_or_ir3, 28410e230b6Smaya nir_intrinsic_ssbo_atomic_umax, 28510e230b6Smaya nir_intrinsic_ssbo_atomic_umax_ir3, 28610e230b6Smaya nir_intrinsic_ssbo_atomic_umin, 28710e230b6Smaya nir_intrinsic_ssbo_atomic_umin_ir3, 28810e230b6Smaya nir_intrinsic_ssbo_atomic_xor, 28910e230b6Smaya nir_intrinsic_ssbo_atomic_xor_ir3, 29010e230b6Smaya nir_intrinsic_store_deref, 29110e230b6Smaya nir_intrinsic_store_global, 29210e230b6Smaya nir_intrinsic_store_output, 29310e230b6Smaya nir_intrinsic_store_per_vertex_output, 29410e230b6Smaya nir_intrinsic_store_scratch, 29510e230b6Smaya nir_intrinsic_store_shared, 29610e230b6Smaya nir_intrinsic_store_ssbo, 29710e230b6Smaya nir_intrinsic_store_ssbo_ir3, 29810e230b6Smaya nir_intrinsic_vote_all, 29910e230b6Smaya nir_intrinsic_vote_any, 30010e230b6Smaya nir_intrinsic_vote_feq, 30110e230b6Smaya nir_intrinsic_vote_ieq, 30210e230b6Smaya nir_intrinsic_vulkan_resource_index, 30310e230b6Smaya nir_intrinsic_vulkan_resource_reindex, 30410e230b6Smaya 30510e230b6Smaya nir_last_intrinsic = nir_intrinsic_vulkan_resource_reindex, 30610e230b6Smaya nir_num_intrinsics = nir_last_intrinsic + 1 30710e230b6Smaya} nir_intrinsic_op; 30810e230b6Smaya 30910e230b6Smaya#endif /* _NIR_INTRINSICS_ */