mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 05:18:08 +02:00
nir: fix lower array to vec metadata preserve
indirect store lowering will change control flow, so we should not preserve control flow metadate when it's present. Fixes:35b8f6f40b("nir: Add a new pass to lower array dereferences on vectors") Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Signed-off-by: Qiang Yu <yuq825@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29894> (cherry picked from commit09b4ba27a3)
This commit is contained in:
parent
00449b8615
commit
11d6ddf559
2 changed files with 6 additions and 3 deletions
|
|
@ -294,7 +294,7 @@
|
|||
"description": "nir: fix lower array to vec metadata preserve",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "35b8f6f40bb45dbffb04dd883ac6644300832981",
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ nir_lower_array_deref_of_vec_impl(nir_function_impl *impl,
|
|||
nir_lower_array_deref_of_vec_options options)
|
||||
{
|
||||
bool progress = false;
|
||||
bool has_indirect_store = false;
|
||||
|
||||
nir_builder b = nir_builder_create(impl);
|
||||
|
||||
|
|
@ -91,6 +92,8 @@ nir_lower_array_deref_of_vec_impl(nir_function_impl *impl,
|
|||
nir_def *index = deref->arr.index.ssa;
|
||||
nir_build_write_masked_stores(&b, vec_deref, value, index,
|
||||
0, num_components);
|
||||
|
||||
has_indirect_store = true;
|
||||
}
|
||||
nir_instr_remove(&intrin->instr);
|
||||
|
||||
|
|
@ -127,8 +130,8 @@ nir_lower_array_deref_of_vec_impl(nir_function_impl *impl,
|
|||
}
|
||||
|
||||
if (progress) {
|
||||
nir_metadata_preserve(impl, nir_metadata_block_index |
|
||||
nir_metadata_dominance);
|
||||
/* indirect store lower will change control flow */
|
||||
nir_metadata_preserve(impl, has_indirect_store ? nir_metadata_none : (nir_metadata_block_index | nir_metadata_dominance));
|
||||
} else {
|
||||
nir_metadata_preserve(impl, nir_metadata_all);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue