mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
nir: Turn imov/fmov of undef into undef
Reverting the previous attempt at this a5502a721f resulted in
the following Vulkan test failing.
dEQP-VK.glsl.return.return_in_dynamic_loop_dynamic_vertex
This time we use the num_components from the alu dest rather than
num_inputs to the op to determine the size of the undef.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Cc: "13.0" <mesa-stable@lists.freedesktop.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99100
This commit is contained in:
parent
08fc74663b
commit
3421b3f5a3
1 changed files with 6 additions and 6 deletions
|
|
@ -79,22 +79,22 @@ opt_undef_vecN(nir_builder *b, nir_alu_instr *alu)
|
|||
{
|
||||
if (alu->op != nir_op_vec2 &&
|
||||
alu->op != nir_op_vec3 &&
|
||||
alu->op != nir_op_vec4)
|
||||
alu->op != nir_op_vec4 &&
|
||||
alu->op != nir_op_fmov &&
|
||||
alu->op != nir_op_imov)
|
||||
return false;
|
||||
|
||||
assert(alu->dest.dest.is_ssa);
|
||||
|
||||
unsigned num_components = nir_op_infos[alu->op].num_inputs;
|
||||
|
||||
for (unsigned i = 0; i < num_components; i++) {
|
||||
for (unsigned i = 0; i < nir_op_infos[alu->op].num_inputs; i++) {
|
||||
if (!alu->src[i].src.is_ssa ||
|
||||
alu->src[i].src.ssa->parent_instr->type != nir_instr_type_ssa_undef)
|
||||
return false;
|
||||
}
|
||||
|
||||
b->cursor = nir_before_instr(&alu->instr);
|
||||
nir_ssa_def *undef =
|
||||
nir_ssa_undef(b, num_components, nir_dest_bit_size(alu->dest.dest));
|
||||
nir_ssa_def *undef = nir_ssa_undef(b, alu->dest.dest.ssa.num_components,
|
||||
nir_dest_bit_size(alu->dest.dest));
|
||||
nir_ssa_def_rewrite_uses(&alu->dest.dest.ssa, nir_src_for_ssa(undef));
|
||||
|
||||
return true;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue