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:
Rhys Perry
2020-09-01 16:35:24 +01:00
committed by Marge Bot
parent 36da9c4aa2
commit 8850a63161
6 changed files with 8 additions and 0 deletions

View File

@@ -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);

View File

@@ -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,

View File

@@ -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);

View File

@@ -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 */

View File

@@ -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);

View File

@@ -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);