diff --git a/src/compiler/nir/nir_divergence_analysis.c b/src/compiler/nir/nir_divergence_analysis.c index 6a5225d3b94..4996c2e8839 100644 --- a/src/compiler/nir/nir_divergence_analysis.c +++ b/src/compiler/nir/nir_divergence_analysis.c @@ -112,6 +112,7 @@ visit_intrinsic(nir_intrinsic_instr *instr, struct divergence_state *state) case nir_intrinsic_load_subgroup_le_mask: case nir_intrinsic_load_subgroup_lt_mask: case nir_intrinsic_first_invocation: + case nir_intrinsic_last_invocation: case nir_intrinsic_load_base_instance: case nir_intrinsic_load_base_vertex: case nir_intrinsic_load_first_vertex: diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py index deafdb0e8c6..f7e51c6fd9d 100644 --- a/src/compiler/nir/nir_intrinsics.py +++ b/src/compiler/nir/nir_intrinsics.py @@ -266,10 +266,11 @@ intrinsic("read_first_invocation", src_comp=[0], dest_comp=0, flags=[CAN_ELIMINA # # These correspond to the SPIR-V opcodes # -# OpGroupUniformElect +# OpGroupNonUniformElect # OpSubgroupFirstInvocationKHR intrinsic("elect", dest_comp=1, flags=[CAN_ELIMINATE]) intrinsic("first_invocation", dest_comp=1, flags=[CAN_ELIMINATE]) +intrinsic("last_invocation", dest_comp=1, flags=[CAN_ELIMINATE]) # Memory barrier with semantics analogous to the compute shader # groupMemoryBarrier(), memoryBarrierAtomicCounter(), memoryBarrierBuffer(),