From 70fccc59fceee6a53171d0c9d2288baf9a59a358 Mon Sep 17 00:00:00 2001 From: Mel Henning Date: Thu, 26 Jun 2025 17:57:12 -0400 Subject: [PATCH] nir/opt_uniform_subgroup: Handle vote_ieq No shader-db changes here, but it does improve some cts shaders, eg. the vertex shader in dEQP-VK.subgroups.vote.framebuffer.subgroupallequal_i64vec4_vertex goes from 80 to 56 instructions with NAK Reviewed-by: Faith Ekstrand Part-of: --- src/compiler/nir/nir_opt_uniform_subgroup.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/compiler/nir/nir_opt_uniform_subgroup.c b/src/compiler/nir/nir_opt_uniform_subgroup.c index 9648b6fb88f..d2732a26c40 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_ieq: return !nir_src_is_divergent(&intrin->src[0]); case nir_intrinsic_reduce: @@ -142,6 +143,8 @@ opt_uniform_subgroup_instr(nir_builder *b, nir_instr *instr, void *_state) intrin->src[0].ssa); } } + } else if (intrin->intrinsic == nir_intrinsic_vote_ieq) { + return nir_imm_true(b); } return intrin->src[0].ssa;