diff --git a/src/freedreno/ir3/ir3_compiler_nir.c b/src/freedreno/ir3/ir3_compiler_nir.c index 70f116f115f..2ccbf5af210 100644 --- a/src/freedreno/ir3/ir3_compiler_nir.c +++ b/src/freedreno/ir3/ir3_compiler_nir.c @@ -2483,6 +2483,12 @@ shfl_mode(nir_intrinsic_instr *intr) switch (intr->intrinsic) { case nir_intrinsic_rotate: return SHFL_RDOWN; + case nir_intrinsic_shuffle_up_uniform_ir3: + return SHFL_RUP; + case nir_intrinsic_shuffle_down_uniform_ir3: + return SHFL_RDOWN; + case nir_intrinsic_shuffle_xor_uniform_ir3: + return SHFL_XOR; default: unreachable("unsupported shfl"); } @@ -3285,6 +3291,9 @@ emit_intrinsic(struct ir3_context *ctx, nir_intrinsic_instr *intr) break; } case nir_intrinsic_rotate: + case nir_intrinsic_shuffle_up_uniform_ir3: + case nir_intrinsic_shuffle_down_uniform_ir3: + case nir_intrinsic_shuffle_xor_uniform_ir3: dst[0] = emit_shfl(ctx, intr); break; default: