radv/aco,nir/lower_subgroups: don't lower elect
ACO can implement this better. fossil-db (Navi): Totals from 33 (0.02% of 135946) affected shaders: SGPRs: 1736 -> 1744 (+0.46%) VGPRs: 1680 -> 1656 (-1.43%) CodeSize: 246160 -> 245916 (-0.10%); split: -0.14%, +0.04% MaxWaves: 449 -> 461 (+2.67%) Instrs: 48301 -> 48266 (-0.07%); split: -0.12%, +0.05% Cycles: 469740 -> 469240 (-0.11%); split: -0.18%, +0.08% Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6558>
This commit is contained in:
@@ -601,6 +601,7 @@ radv_shader_compile_to_nir(struct radv_device *device,
|
||||
.lower_quad_broadcast_dynamic = 1,
|
||||
.lower_quad_broadcast_dynamic_to_const = gfx7minus,
|
||||
.lower_shuffle_to_swizzle_amd = 1,
|
||||
.lower_elect = radv_use_llvm_for_stage(device, stage),
|
||||
});
|
||||
|
||||
nir_lower_load_const_to_scalar(nir);
|
||||
|
@@ -4440,6 +4440,7 @@ typedef struct nir_lower_subgroups_options {
|
||||
bool lower_quad:1;
|
||||
bool lower_quad_broadcast_dynamic:1;
|
||||
bool lower_quad_broadcast_dynamic_to_const:1;
|
||||
bool lower_elect:1;
|
||||
} nir_lower_subgroups_options;
|
||||
|
||||
bool nir_lower_subgroups(nir_shader *shader,
|
||||
|
@@ -550,6 +550,9 @@ lower_subgroups_instr(nir_builder *b, nir_instr *instr, void *_options)
|
||||
}
|
||||
|
||||
case nir_intrinsic_elect: {
|
||||
if (!options->lower_elect)
|
||||
return NULL;
|
||||
|
||||
nir_intrinsic_instr *first =
|
||||
nir_intrinsic_instr_create(b->shader,
|
||||
nir_intrinsic_first_invocation);
|
||||
|
@@ -3114,6 +3114,7 @@ Converter::run()
|
||||
struct nir_lower_subgroups_options subgroup_options = {
|
||||
.subgroup_size = 32,
|
||||
.ballot_bit_size = 32,
|
||||
.lower_elect = true,
|
||||
};
|
||||
|
||||
/* prepare for IO lowering */
|
||||
|
@@ -663,6 +663,7 @@ static void si_lower_nir(struct si_screen *sscreen, struct nir_shader *nir)
|
||||
.lower_subgroup_masks = true,
|
||||
.lower_vote_trivial = false,
|
||||
.lower_vote_eq_to_ballot = true,
|
||||
.lower_elect = true,
|
||||
};
|
||||
NIR_PASS_V(nir, nir_lower_subgroups, &subgroups_options);
|
||||
|
||||
|
@@ -752,6 +752,7 @@ brw_preprocess_nir(const struct brw_compiler *compiler, nir_shader *nir,
|
||||
.lower_vote_trivial = !is_scalar,
|
||||
.lower_shuffle = true,
|
||||
.lower_quad_broadcast_dynamic = true,
|
||||
.lower_elect = true,
|
||||
};
|
||||
OPT(nir_lower_subgroups, &subgroups_options);
|
||||
|
||||
|
Reference in New Issue
Block a user