From bc26e11c2a792aba82739a65931702cda545291f Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 6 May 2024 22:21:34 -0400 Subject: [PATCH] agx: lower more quad ops Part-of: --- src/asahi/compiler/agx_nir_lower_subgroups.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/asahi/compiler/agx_nir_lower_subgroups.c b/src/asahi/compiler/agx_nir_lower_subgroups.c index ebc05c2f671..f837febf9e3 100644 --- a/src/asahi/compiler/agx_nir_lower_subgroups.c +++ b/src/asahi/compiler/agx_nir_lower_subgroups.c @@ -37,6 +37,19 @@ lower(nir_builder *b, nir_intrinsic_instr *intr, void *data) return true; } + case nir_intrinsic_quad_vote_any: { + nir_def *ballot = nir_quad_ballot_agx(b, 16, intr->src[0].ssa); + nir_def_rewrite_uses(&intr->def, nir_ine_imm(b, ballot, 0)); + return true; + } + + case nir_intrinsic_quad_vote_all: { + nir_def *ballot = + nir_quad_ballot_agx(b, 16, nir_inot(b, intr->src[0].ssa)); + nir_def_rewrite_uses(&intr->def, nir_ieq_imm(b, ballot, 0)); + return true; + } + case nir_intrinsic_first_invocation: { nir_def *active_id = nir_load_active_subgroup_invocation_agx(b, 16); nir_def *is_first = nir_ieq_imm(b, active_id, 0);