intel/fs: No need to copy null destinations in lower_simd_width.

The copy would be discarded immediately.  Until now we were relying on
DCE to eliminate these, but it seems like in some cases MOVs into the
null register emitted by lower_simd_width() are never eliminated,
likely because a lower_simd_width() call has been introduced close to
the bottom of optimize() which isn't follow by any additional DCE
passes.

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26585>
This commit is contained in:
Francisco Jerez
2023-12-07 20:00:31 -08:00
committed by Marge Bot
parent 5e0760a993
commit 09ea840987
+3
View File
@@ -5238,6 +5238,9 @@ emit_unzip(const fs_builder &lbld, fs_inst *inst, unsigned i)
static inline bool
needs_dst_copy(const fs_builder &lbld, const fs_inst *inst)
{
if (inst->dst.is_null())
return false;
/* If the instruction writes more than one component we'll have to shuffle
* the results of multiple lowered instructions in order to make sure that
* they end up arranged correctly in the original destination region.