nir/copy_prop_vars: Re-order some logic in compare_derefs

Acked-by: Rob Clark <robdclark@gmail.com>
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Acked-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Jason Ekstrand 2018-03-27 17:21:35 -07:00
parent c5d9a65944
commit fa6ffcc083

View file

@ -151,19 +151,19 @@ compare_derefs(nir_deref_var *a, nir_deref_var *b)
nir_deref_array *a_arr = nir_deref_as_array(a_tail);
nir_deref_array *b_arr = nir_deref_as_array(b_tail);
if (a_arr->deref_array_type == nir_deref_array_type_direct &&
b_arr->deref_array_type == nir_deref_array_type_direct) {
/* If they're both direct and have different offsets, they
* don't even alias much less anything else.
*/
if (a_arr->base_offset != b_arr->base_offset)
return 0;
} else if (a_arr->deref_array_type == nir_deref_array_type_wildcard) {
if (a_arr->deref_array_type == nir_deref_array_type_wildcard) {
if (b_arr->deref_array_type != nir_deref_array_type_wildcard)
result &= ~derefs_b_contains_a_bit;
} else if (b_arr->deref_array_type == nir_deref_array_type_wildcard) {
if (a_arr->deref_array_type != nir_deref_array_type_wildcard)
result &= ~derefs_a_contains_b_bit;
} else if (a_arr->deref_array_type == nir_deref_array_type_direct &&
b_arr->deref_array_type == nir_deref_array_type_direct) {
/* If they're both direct and have different offsets, they
* don't even alias much less anything else.
*/
if (a_arr->base_offset != b_arr->base_offset)
return 0;
} else if (a_arr->deref_array_type == nir_deref_array_type_indirect &&
b_arr->deref_array_type == nir_deref_array_type_indirect) {
assert(a_arr->indirect.is_ssa && b_arr->indirect.is_ssa);