diff --git a/src/compiler/nir/nir_divergence_analysis.c b/src/compiler/nir/nir_divergence_analysis.c index b932b6adac7..8194cac3807 100644 --- a/src/compiler/nir/nir_divergence_analysis.c +++ b/src/compiler/nir/nir_divergence_analysis.c @@ -385,6 +385,7 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr) case nir_intrinsic_ballot_find_lsb: case nir_intrinsic_ballot_find_msb: case nir_intrinsic_ballot_bit_count_reduce: + case nir_intrinsic_rotate: case nir_intrinsic_shuffle_xor: case nir_intrinsic_shuffle_up: case nir_intrinsic_shuffle_down: diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py index e446d11a34c..050a2000088 100644 --- a/src/compiler/nir/nir_intrinsics.py +++ b/src/compiler/nir/nir_intrinsics.py @@ -449,6 +449,10 @@ intrinsic("quad_swap_horizontal", src_comp=[0], dest_comp=0, flags=[CAN_ELIMINAT intrinsic("quad_swap_vertical", src_comp=[0], dest_comp=0, flags=[CAN_ELIMINATE]) intrinsic("quad_swap_diagonal", src_comp=[0], dest_comp=0, flags=[CAN_ELIMINATE]) +# Rotate operation from SPIR-V: SpvOpGroupNonUniformRotateKHR. +intrinsic("rotate", src_comp=[0, 1], dest_comp=0, bit_sizes=src0, + indices=[EXECUTION_SCOPE, CLUSTER_SIZE], flags=[CAN_ELIMINATE]); + intrinsic("reduce", src_comp=[0], dest_comp=0, bit_sizes=src0, indices=[REDUCTION_OP, CLUSTER_SIZE], flags=[CAN_ELIMINATE]) intrinsic("inclusive_scan", src_comp=[0], dest_comp=0, bit_sizes=src0,