From 879500699449881ee19e2f784d404969c0742969 Mon Sep 17 00:00:00 2001 From: Mel Henning Date: Fri, 27 Jun 2025 13:56:02 -0400 Subject: [PATCH] nir/opt_uniform_subgroup: Handle vote_feq Brings the vertex shader in dEQP-VK.subgroups.vote.framebuffer.subgroupallequal_dvec4_vertex from 234 to 169 instructions on NAK. Reviewed-by: Faith Ekstrand Part-of: --- src/compiler/nir/nir_opt_uniform_subgroup.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/compiler/nir/nir_opt_uniform_subgroup.c b/src/compiler/nir/nir_opt_uniform_subgroup.c index d2732a26c40..df269856943 100644 --- a/src/compiler/nir/nir_opt_uniform_subgroup.c +++ b/src/compiler/nir/nir_opt_uniform_subgroup.c @@ -31,6 +31,7 @@ opt_uniform_subgroup_filter(const nir_instr *instr, const void *_state) case nir_intrinsic_masked_swizzle_amd: case nir_intrinsic_vote_all: case nir_intrinsic_vote_any: + case nir_intrinsic_vote_feq: case nir_intrinsic_vote_ieq: return !nir_src_is_divergent(&intrin->src[0]); @@ -143,6 +144,9 @@ opt_uniform_subgroup_instr(nir_builder *b, nir_instr *instr, void *_state) intrin->src[0].ssa); } } + } else if (intrin->intrinsic == nir_intrinsic_vote_feq) { + nir_def *x = intrin->src[0].ssa; + return nir_feq(b, x, x); } else if (intrin->intrinsic == nir_intrinsic_vote_ieq) { return nir_imm_true(b); }