diff --git a/.pick_status.json b/.pick_status.json index 7bebc6aee54..1b5bb74829f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -94,7 +94,7 @@ "description": "nir/opt_uniform_subgroup: fix swizzle_amd without fetch_inactive", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "ad5be403039bea8d0b6937fee14c1dfb60604fba", "notes": null diff --git a/src/compiler/nir/nir_opt_uniform_subgroup.c b/src/compiler/nir/nir_opt_uniform_subgroup.c index 1bf0c94be36..459bbbe3463 100644 --- a/src/compiler/nir/nir_opt_uniform_subgroup.c +++ b/src/compiler/nir/nir_opt_uniform_subgroup.c @@ -20,6 +20,11 @@ opt_uniform_subgroup_filter(const nir_instr *instr, const void *_state) nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr); switch (intrin->intrinsic) { + case nir_intrinsic_quad_swizzle_amd: + case nir_intrinsic_masked_swizzle_amd: + if (!nir_intrinsic_fetch_inactive(intrin)) + return false; + FALLTHROUGH; case nir_intrinsic_shuffle: case nir_intrinsic_read_invocation: case nir_intrinsic_read_first_invocation: @@ -27,8 +32,6 @@ opt_uniform_subgroup_filter(const nir_instr *instr, const void *_state) case nir_intrinsic_quad_swap_horizontal: case nir_intrinsic_quad_swap_vertical: case nir_intrinsic_quad_swap_diagonal: - case nir_intrinsic_quad_swizzle_amd: - case nir_intrinsic_masked_swizzle_amd: case nir_intrinsic_vote_all: case nir_intrinsic_vote_any: case nir_intrinsic_vote_feq: