mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 04:50:11 +01:00
nir: Skip common instructions when comparing deref paths
Deref paths may share the same deref instructions in their chains,
e.g.
ssa_100 = deref_var A
ssa_101 = deref_struct "array_field" of ssa_100
ssa_102 = deref_array "[1]" of ssa_101
ssa_103 = deref_struct "field_a" of ssa_102
ssa_104 = deref_struct "field_a" of ssa_103
when comparing the two last deref instructions, their paths will share
a common sequence ssa_100, ssa_101, ssa_102. This patch skips to next
iteration if the deref instructions are the same. Path[0] (the var)
is still handled specially, so in the case above, only ssa_101 and
ssa_102 will be skipped.
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
5196041e93
commit
8364ec3fce
1 changed files with 3 additions and 0 deletions
|
|
@ -294,6 +294,9 @@ nir_compare_deref_paths(nir_deref_path *a_path,
|
|||
nir_deref_instr *a_tail = *(a_p++);
|
||||
nir_deref_instr *b_tail = *(b_p++);
|
||||
|
||||
if (a_tail == b_tail)
|
||||
continue;
|
||||
|
||||
switch (a_tail->deref_type) {
|
||||
case nir_deref_type_array:
|
||||
case nir_deref_type_array_wildcard: {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue