nir: Switch to using nir_vec_scalars() for things that used nir_channel().

This should reduce follow-on optimization work to copy-propagate and
dead-code away the movs generated in construction of vectors.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14865>
This commit is contained in:
Emma Anholt
2022-02-03 12:23:34 -08:00
committed by Marge Bot
parent 16c064dfaf
commit d506d910e4
10 changed files with 67 additions and 64 deletions
+4 -4
View File
@@ -411,12 +411,12 @@ lower_compute_system_value_instr(nir_builder *b,
is_zero |= b->shader->info.workgroup_size[1] == 1 ? 0x2 : 0x0;
is_zero |= b->shader->info.workgroup_size[2] == 1 ? 0x4 : 0x0;
if (!b->shader->info.workgroup_size_variable && is_zero) {
nir_ssa_def *defs[3];
nir_ssa_scalar defs[3];
for (unsigned i = 0; i < 3; i++) {
defs[i] = is_zero & (1 << i) ? nir_imm_zero(b, 1, 32) :
nir_channel(b, &intrin->dest.ssa, i);
defs[i] = is_zero & (1 << i) ? nir_get_ssa_scalar(nir_imm_zero(b, 1, 32), 0) :
nir_get_ssa_scalar(&intrin->dest.ssa, i);
}
return nir_vec(b, defs, 3);
return nir_vec_scalars(b, defs, 3);
}
return NULL;