nir/opt_deref: Don't remove casts with alignment information
Generally, if a cast has alignment information, that information is useful and we don't want to loose it. Reviewed-by: Jesse Natalie <jenatali@microsoft.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Karol Herbst <kherbst@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6472>
This commit is contained in:
parent
beefd37021
commit
99bb2a4de6
|
@ -924,6 +924,9 @@ opt_replace_struct_wrapper_cast(nir_builder *b, nir_deref_instr *cast)
|
|||
if (!parent)
|
||||
return false;
|
||||
|
||||
if (cast->cast.align_mul > 0)
|
||||
return false;
|
||||
|
||||
if (!glsl_type_is_struct(parent->type))
|
||||
return false;
|
||||
|
||||
|
@ -954,6 +957,12 @@ opt_deref_cast(nir_builder *b, nir_deref_instr *cast)
|
|||
if (!is_trivial_deref_cast(cast))
|
||||
return progress;
|
||||
|
||||
/* If this deref still contains useful alignment information, we don't want
|
||||
* to delete it.
|
||||
*/
|
||||
if (cast->cast.align_mul > 0)
|
||||
return progress;
|
||||
|
||||
bool trivial_array_cast = is_trivial_array_deref_cast(cast);
|
||||
|
||||
assert(cast->dest.is_ssa);
|
||||
|
|
Loading…
Reference in New Issue