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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user