diff --git a/src/compiler/nir/nir_divergence_analysis.c b/src/compiler/nir/nir_divergence_analysis.c index 2ba6bcf7c5b..05a21a8d33a 100644 --- a/src/compiler/nir/nir_divergence_analysis.c +++ b/src/compiler/nir/nir_divergence_analysis.c @@ -159,6 +159,8 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr) case nir_intrinsic_load_force_vrs_rates_amd: case nir_intrinsic_load_tess_level_inner_default: case nir_intrinsic_load_tess_level_outer_default: + case nir_intrinsic_load_scalar_arg_amd: + case nir_intrinsic_load_smem_amd: is_divergent = false; break; @@ -542,6 +544,7 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr) case nir_intrinsic_gds_atomic_add_amd: case nir_intrinsic_load_rt_arg_scratch_offset_amd: case nir_intrinsic_load_intersection_opaque_amd: + case nir_intrinsic_load_vector_arg_amd: is_divergent = true; break; diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py index 04192896b09..a4189f798b8 100644 --- a/src/compiler/nir/nir_intrinsics.py +++ b/src/compiler/nir/nir_intrinsics.py @@ -1330,6 +1330,14 @@ system_value("intersection_opaque_amd", 1, bit_sizes=[1]) # Load forced VRS rates. intrinsic("load_force_vrs_rates_amd", dest_comp=1, bit_sizes=[32], flags=[CAN_ELIMINATE, CAN_REORDER]) +intrinsic("load_scalar_arg_amd", dest_comp=0, bit_sizes=[32], indices=[BASE], flags=[CAN_ELIMINATE, CAN_REORDER]) +intrinsic("load_vector_arg_amd", dest_comp=0, bit_sizes=[32], indices=[BASE], flags=[CAN_ELIMINATE, CAN_REORDER]) + +# src[] = { 64-bit base address, 32-bit offset }. +intrinsic("load_smem_amd", src_comp=[1, 1], dest_comp=0, bit_sizes=[32], + indices=[ALIGN_MUL, ALIGN_OFFSET], + flags=[CAN_ELIMINATE, CAN_REORDER]) + # V3D-specific instrinc for tile buffer color reads. # # The hardware requires that we read the samples and components of a pixel