blob: 70367ae7af6a780d4f8b32adb1f0a8e990593467 [file] [log] [blame]
/* Copyright (C) 2018 Red Hat
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*/
#ifndef _NIR_INTRINSICS_
#define _NIR_INTRINSICS_
typedef enum {
nir_intrinsic_addr_mode_is,
nir_intrinsic_atomic_counter_add,
nir_intrinsic_atomic_counter_add_deref,
nir_intrinsic_atomic_counter_and,
nir_intrinsic_atomic_counter_and_deref,
nir_intrinsic_atomic_counter_comp_swap,
nir_intrinsic_atomic_counter_comp_swap_deref,
nir_intrinsic_atomic_counter_exchange,
nir_intrinsic_atomic_counter_exchange_deref,
nir_intrinsic_atomic_counter_inc,
nir_intrinsic_atomic_counter_inc_deref,
nir_intrinsic_atomic_counter_max,
nir_intrinsic_atomic_counter_max_deref,
nir_intrinsic_atomic_counter_min,
nir_intrinsic_atomic_counter_min_deref,
nir_intrinsic_atomic_counter_or,
nir_intrinsic_atomic_counter_or_deref,
nir_intrinsic_atomic_counter_post_dec,
nir_intrinsic_atomic_counter_post_dec_deref,
nir_intrinsic_atomic_counter_pre_dec,
nir_intrinsic_atomic_counter_pre_dec_deref,
nir_intrinsic_atomic_counter_read,
nir_intrinsic_atomic_counter_read_deref,
nir_intrinsic_atomic_counter_xor,
nir_intrinsic_atomic_counter_xor_deref,
nir_intrinsic_ballot,
nir_intrinsic_ballot_bit_count_exclusive,
nir_intrinsic_ballot_bit_count_inclusive,
nir_intrinsic_ballot_bit_count_reduce,
nir_intrinsic_ballot_bitfield_extract,
nir_intrinsic_ballot_find_lsb,
nir_intrinsic_ballot_find_msb,
nir_intrinsic_begin_invocation_interlock,
nir_intrinsic_bindless_image_atomic_add,
nir_intrinsic_bindless_image_atomic_and,
nir_intrinsic_bindless_image_atomic_comp_swap,
nir_intrinsic_bindless_image_atomic_dec_wrap,
nir_intrinsic_bindless_image_atomic_exchange,
nir_intrinsic_bindless_image_atomic_fadd,
nir_intrinsic_bindless_image_atomic_imax,
nir_intrinsic_bindless_image_atomic_imin,
nir_intrinsic_bindless_image_atomic_inc_wrap,
nir_intrinsic_bindless_image_atomic_or,
nir_intrinsic_bindless_image_atomic_umax,
nir_intrinsic_bindless_image_atomic_umin,
nir_intrinsic_bindless_image_atomic_xor,
nir_intrinsic_bindless_image_format,
nir_intrinsic_bindless_image_load,
nir_intrinsic_bindless_image_load_raw_intel,
nir_intrinsic_bindless_image_order,
nir_intrinsic_bindless_image_samples,
nir_intrinsic_bindless_image_size,
nir_intrinsic_bindless_image_store,
nir_intrinsic_bindless_image_store_raw_intel,
nir_intrinsic_bindless_resource_ir3,
nir_intrinsic_cond_end_ir3,
nir_intrinsic_control_barrier,
nir_intrinsic_convert_alu_types,
nir_intrinsic_copy_deref,
nir_intrinsic_demote,
nir_intrinsic_demote_if,
nir_intrinsic_deref_atomic_add,
nir_intrinsic_deref_atomic_and,
nir_intrinsic_deref_atomic_comp_swap,
nir_intrinsic_deref_atomic_exchange,
nir_intrinsic_deref_atomic_fadd,
nir_intrinsic_deref_atomic_fcomp_swap,
nir_intrinsic_deref_atomic_fmax,
nir_intrinsic_deref_atomic_fmin,
nir_intrinsic_deref_atomic_imax,
nir_intrinsic_deref_atomic_imin,
nir_intrinsic_deref_atomic_or,
nir_intrinsic_deref_atomic_umax,
nir_intrinsic_deref_atomic_umin,
nir_intrinsic_deref_atomic_xor,
nir_intrinsic_deref_buffer_array_length,
nir_intrinsic_deref_mode_is,
nir_intrinsic_discard,
nir_intrinsic_discard_if,
nir_intrinsic_elect,
nir_intrinsic_emit_vertex,
nir_intrinsic_emit_vertex_with_counter,
nir_intrinsic_end_invocation_interlock,
nir_intrinsic_end_patch_ir3,
nir_intrinsic_end_primitive,
nir_intrinsic_end_primitive_with_counter,
nir_intrinsic_exclusive_scan,
nir_intrinsic_execute_callable,
nir_intrinsic_first_invocation,
nir_intrinsic_get_ssbo_size,
nir_intrinsic_get_ubo_size,
nir_intrinsic_global_atomic_add,
nir_intrinsic_global_atomic_and,
nir_intrinsic_global_atomic_comp_swap,
nir_intrinsic_global_atomic_exchange,
nir_intrinsic_global_atomic_fadd,
nir_intrinsic_global_atomic_fcomp_swap,
nir_intrinsic_global_atomic_fmax,
nir_intrinsic_global_atomic_fmin,
nir_intrinsic_global_atomic_imax,
nir_intrinsic_global_atomic_imin,
nir_intrinsic_global_atomic_or,
nir_intrinsic_global_atomic_umax,
nir_intrinsic_global_atomic_umin,
nir_intrinsic_global_atomic_xor,
nir_intrinsic_group_memory_barrier,
nir_intrinsic_ignore_ray_intersection,
nir_intrinsic_image_atomic_add,
nir_intrinsic_image_atomic_and,
nir_intrinsic_image_atomic_comp_swap,
nir_intrinsic_image_atomic_dec_wrap,
nir_intrinsic_image_atomic_exchange,
nir_intrinsic_image_atomic_fadd,
nir_intrinsic_image_atomic_imax,
nir_intrinsic_image_atomic_imin,
nir_intrinsic_image_atomic_inc_wrap,
nir_intrinsic_image_atomic_or,
nir_intrinsic_image_atomic_umax,
nir_intrinsic_image_atomic_umin,
nir_intrinsic_image_atomic_xor,
nir_intrinsic_image_deref_atomic_add,
nir_intrinsic_image_deref_atomic_and,
nir_intrinsic_image_deref_atomic_comp_swap,
nir_intrinsic_image_deref_atomic_dec_wrap,
nir_intrinsic_image_deref_atomic_exchange,
nir_intrinsic_image_deref_atomic_fadd,
nir_intrinsic_image_deref_atomic_imax,
nir_intrinsic_image_deref_atomic_imin,
nir_intrinsic_image_deref_atomic_inc_wrap,
nir_intrinsic_image_deref_atomic_or,
nir_intrinsic_image_deref_atomic_umax,
nir_intrinsic_image_deref_atomic_umin,
nir_intrinsic_image_deref_atomic_xor,
nir_intrinsic_image_deref_format,
nir_intrinsic_image_deref_load,
nir_intrinsic_image_deref_load_param_intel,
nir_intrinsic_image_deref_load_raw_intel,
nir_intrinsic_image_deref_order,
nir_intrinsic_image_deref_samples,
nir_intrinsic_image_deref_size,
nir_intrinsic_image_deref_store,
nir_intrinsic_image_deref_store_raw_intel,
nir_intrinsic_image_format,
nir_intrinsic_image_load,
nir_intrinsic_image_load_raw_intel,
nir_intrinsic_image_order,
nir_intrinsic_image_samples,
nir_intrinsic_image_size,
nir_intrinsic_image_store,
nir_intrinsic_image_store_raw_intel,
nir_intrinsic_inclusive_scan,
nir_intrinsic_interp_deref_at_centroid,
nir_intrinsic_interp_deref_at_offset,
nir_intrinsic_interp_deref_at_sample,
nir_intrinsic_interp_deref_at_vertex,
nir_intrinsic_is_helper_invocation,
nir_intrinsic_last_invocation,
nir_intrinsic_load_aa_line_width,
nir_intrinsic_load_barycentric_at_offset,
nir_intrinsic_load_barycentric_at_sample,
nir_intrinsic_load_barycentric_centroid,
nir_intrinsic_load_barycentric_model,
nir_intrinsic_load_barycentric_pixel,
nir_intrinsic_load_barycentric_sample,
nir_intrinsic_load_base_global_invocation_id,
nir_intrinsic_load_base_instance,
nir_intrinsic_load_base_vertex,
nir_intrinsic_load_base_work_group_id,
nir_intrinsic_load_blend_const_color_a_float,
nir_intrinsic_load_blend_const_color_aaaa8888_unorm,
nir_intrinsic_load_blend_const_color_b_float,
nir_intrinsic_load_blend_const_color_g_float,
nir_intrinsic_load_blend_const_color_r_float,
nir_intrinsic_load_blend_const_color_rgba,
nir_intrinsic_load_blend_const_color_rgba8888_unorm,
nir_intrinsic_load_color0,
nir_intrinsic_load_color1,
nir_intrinsic_load_constant,
nir_intrinsic_load_constant_base_ptr,
nir_intrinsic_load_deref,
nir_intrinsic_load_deref_block_intel,
nir_intrinsic_load_draw_id,
nir_intrinsic_load_fb_layers_v3d,
nir_intrinsic_load_first_vertex,
nir_intrinsic_load_frag_coord,
nir_intrinsic_load_front_face,
nir_intrinsic_load_fs_input_interp_deltas,
nir_intrinsic_load_global,
nir_intrinsic_load_global_block_intel,
nir_intrinsic_load_global_constant,
nir_intrinsic_load_global_invocation_id,
nir_intrinsic_load_global_invocation_id_zero_base,
nir_intrinsic_load_global_invocation_index,
nir_intrinsic_load_global_ir3,
nir_intrinsic_load_gs_header_ir3,
nir_intrinsic_load_helper_invocation,
nir_intrinsic_load_hs_patch_stride_ir3,
nir_intrinsic_load_input,
nir_intrinsic_load_input_vertex,
nir_intrinsic_load_instance_id,
nir_intrinsic_load_interpolated_input,
nir_intrinsic_load_invocation_id,
nir_intrinsic_load_is_indexed_draw,
nir_intrinsic_load_kernel_input,
nir_intrinsic_load_layer_id,
nir_intrinsic_load_line_coord,
nir_intrinsic_load_line_width,
nir_intrinsic_load_local_group_size,
nir_intrinsic_load_local_invocation_id,
nir_intrinsic_load_local_invocation_index,
nir_intrinsic_load_local_shared_r600,
nir_intrinsic_load_num_subgroups,
nir_intrinsic_load_num_work_groups,
nir_intrinsic_load_output,
nir_intrinsic_load_param,
nir_intrinsic_load_patch_vertices_in,
nir_intrinsic_load_per_vertex_input,
nir_intrinsic_load_per_vertex_output,
nir_intrinsic_load_point_coord,
nir_intrinsic_load_primitive_id,
nir_intrinsic_load_primitive_location_ir3,
nir_intrinsic_load_push_constant,
nir_intrinsic_load_raw_output_pan,
nir_intrinsic_load_ray_flags,
nir_intrinsic_load_ray_geometry_index,
nir_intrinsic_load_ray_hit_kind,
nir_intrinsic_load_ray_instance_custom_index,
nir_intrinsic_load_ray_launch_id,
nir_intrinsic_load_ray_launch_size,
nir_intrinsic_load_ray_object_direction,
nir_intrinsic_load_ray_object_origin,
nir_intrinsic_load_ray_object_to_world,
nir_intrinsic_load_ray_t_max,
nir_intrinsic_load_ray_t_min,
nir_intrinsic_load_ray_world_direction,
nir_intrinsic_load_ray_world_origin,
nir_intrinsic_load_ray_world_to_object,
nir_intrinsic_load_reloc_const_intel,
nir_intrinsic_load_sample_id,
nir_intrinsic_load_sample_id_no_per_sample,
nir_intrinsic_load_sample_mask_in,
nir_intrinsic_load_sample_pos,
nir_intrinsic_load_sample_pos_from_id,
nir_intrinsic_load_sampler_lod_parameters_pan,
nir_intrinsic_load_scratch,
nir_intrinsic_load_scratch_base_ptr,
nir_intrinsic_load_shader_record_ptr,
nir_intrinsic_load_shared,
nir_intrinsic_load_shared_base_ptr,
nir_intrinsic_load_shared_block_intel,
nir_intrinsic_load_shared_ir3,
nir_intrinsic_load_simd_width_intel,
nir_intrinsic_load_size_ir3,
nir_intrinsic_load_ssbo,
nir_intrinsic_load_ssbo_address,
nir_intrinsic_load_ssbo_block_intel,
nir_intrinsic_load_ssbo_ir3,
nir_intrinsic_load_subgroup_eq_mask,
nir_intrinsic_load_subgroup_ge_mask,
nir_intrinsic_load_subgroup_gt_mask,
nir_intrinsic_load_subgroup_id,
nir_intrinsic_load_subgroup_invocation,
nir_intrinsic_load_subgroup_le_mask,
nir_intrinsic_load_subgroup_lt_mask,
nir_intrinsic_load_subgroup_size,
nir_intrinsic_load_tcs_header_ir3,
nir_intrinsic_load_tcs_in_param_base_r600,
nir_intrinsic_load_tcs_out_param_base_r600,
nir_intrinsic_load_tcs_rel_patch_id_r600,
nir_intrinsic_load_tcs_tess_factor_base_r600,
nir_intrinsic_load_tess_coord,
nir_intrinsic_load_tess_factor_base_ir3,
nir_intrinsic_load_tess_level_inner,
nir_intrinsic_load_tess_level_inner_default,
nir_intrinsic_load_tess_level_outer,
nir_intrinsic_load_tess_level_outer_default,
nir_intrinsic_load_tess_param_base_ir3,
nir_intrinsic_load_tlb_color_v3d,
nir_intrinsic_load_ubo,
nir_intrinsic_load_ubo_vec4,
nir_intrinsic_load_uniform,
nir_intrinsic_load_user_clip_plane,
nir_intrinsic_load_user_data_amd,
nir_intrinsic_load_vertex_id,
nir_intrinsic_load_vertex_id_zero_base,
nir_intrinsic_load_view_index,
nir_intrinsic_load_viewport_offset,
nir_intrinsic_load_viewport_scale,
nir_intrinsic_load_viewport_x_scale,
nir_intrinsic_load_viewport_y_scale,
nir_intrinsic_load_viewport_z_offset,
nir_intrinsic_load_viewport_z_scale,
nir_intrinsic_load_vs_primitive_stride_ir3,
nir_intrinsic_load_vs_vertex_stride_ir3,
nir_intrinsic_load_vulkan_descriptor,
nir_intrinsic_load_work_dim,
nir_intrinsic_load_work_group_id,
nir_intrinsic_load_work_group_id_zero_base,
nir_intrinsic_masked_swizzle_amd,
nir_intrinsic_mbcnt_amd,
nir_intrinsic_memcpy_deref,
nir_intrinsic_memory_barrier,
nir_intrinsic_memory_barrier_atomic_counter,
nir_intrinsic_memory_barrier_buffer,
nir_intrinsic_memory_barrier_image,
nir_intrinsic_memory_barrier_shared,
nir_intrinsic_memory_barrier_tcs_patch,
nir_intrinsic_nop,
nir_intrinsic_quad_broadcast,
nir_intrinsic_quad_swap_diagonal,
nir_intrinsic_quad_swap_horizontal,
nir_intrinsic_quad_swap_vertical,
nir_intrinsic_quad_swizzle_amd,
nir_intrinsic_read_first_invocation,
nir_intrinsic_read_invocation,
nir_intrinsic_reduce,
nir_intrinsic_report_ray_intersection,
nir_intrinsic_scoped_barrier,
nir_intrinsic_set_vertex_and_primitive_count,
nir_intrinsic_shader_clock,
nir_intrinsic_shared_atomic_add,
nir_intrinsic_shared_atomic_and,
nir_intrinsic_shared_atomic_comp_swap,
nir_intrinsic_shared_atomic_exchange,
nir_intrinsic_shared_atomic_fadd,
nir_intrinsic_shared_atomic_fcomp_swap,
nir_intrinsic_shared_atomic_fmax,
nir_intrinsic_shared_atomic_fmin,
nir_intrinsic_shared_atomic_imax,
nir_intrinsic_shared_atomic_imin,
nir_intrinsic_shared_atomic_or,
nir_intrinsic_shared_atomic_umax,
nir_intrinsic_shared_atomic_umin,
nir_intrinsic_shared_atomic_xor,
nir_intrinsic_shuffle,
nir_intrinsic_shuffle_down,
nir_intrinsic_shuffle_up,
nir_intrinsic_shuffle_xor,
nir_intrinsic_ssbo_atomic_add,
nir_intrinsic_ssbo_atomic_add_ir3,
nir_intrinsic_ssbo_atomic_and,
nir_intrinsic_ssbo_atomic_and_ir3,
nir_intrinsic_ssbo_atomic_comp_swap,
nir_intrinsic_ssbo_atomic_comp_swap_ir3,
nir_intrinsic_ssbo_atomic_exchange,
nir_intrinsic_ssbo_atomic_exchange_ir3,
nir_intrinsic_ssbo_atomic_fadd,
nir_intrinsic_ssbo_atomic_fcomp_swap,
nir_intrinsic_ssbo_atomic_fmax,
nir_intrinsic_ssbo_atomic_fmin,
nir_intrinsic_ssbo_atomic_imax,
nir_intrinsic_ssbo_atomic_imax_ir3,
nir_intrinsic_ssbo_atomic_imin,
nir_intrinsic_ssbo_atomic_imin_ir3,
nir_intrinsic_ssbo_atomic_or,
nir_intrinsic_ssbo_atomic_or_ir3,
nir_intrinsic_ssbo_atomic_umax,
nir_intrinsic_ssbo_atomic_umax_ir3,
nir_intrinsic_ssbo_atomic_umin,
nir_intrinsic_ssbo_atomic_umin_ir3,
nir_intrinsic_ssbo_atomic_xor,
nir_intrinsic_ssbo_atomic_xor_ir3,
nir_intrinsic_store_combined_output_pan,
nir_intrinsic_store_deref,
nir_intrinsic_store_deref_block_intel,
nir_intrinsic_store_global,
nir_intrinsic_store_global_block_intel,
nir_intrinsic_store_global_ir3,
nir_intrinsic_store_local_shared_r600,
nir_intrinsic_store_output,
nir_intrinsic_store_per_vertex_output,
nir_intrinsic_store_raw_output_pan,
nir_intrinsic_store_scratch,
nir_intrinsic_store_shared,
nir_intrinsic_store_shared_block_intel,
nir_intrinsic_store_shared_ir3,
nir_intrinsic_store_ssbo,
nir_intrinsic_store_ssbo_block_intel,
nir_intrinsic_store_ssbo_ir3,
nir_intrinsic_store_tf_r600,
nir_intrinsic_store_tlb_sample_color_v3d,
nir_intrinsic_terminate,
nir_intrinsic_terminate_if,
nir_intrinsic_terminate_ray,
nir_intrinsic_trace_ray,
nir_intrinsic_vote_all,
nir_intrinsic_vote_any,
nir_intrinsic_vote_feq,
nir_intrinsic_vote_ieq,
nir_intrinsic_vulkan_resource_index,
nir_intrinsic_vulkan_resource_reindex,
nir_intrinsic_write_invocation_amd,
nir_last_intrinsic = nir_intrinsic_write_invocation_amd,
nir_num_intrinsics = nir_last_intrinsic + 1
} nir_intrinsic_op;
#endif /* _NIR_INTRINSICS_ */