intel/brw: Make VEC() perform a single write to its destination.

This gathers a number of sources into a contiguous vector register,
typically using LOAD_PAYLOAD.  However, it uses MOV for a single source.

Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28666>
This commit is contained in:
Kenneth Graunke
2024-01-03 08:06:36 -08:00
committed by Marge Bot
parent 7df492923a
commit 344d4ee9f0
+3 -8
View File
@@ -789,16 +789,11 @@ namespace brw {
return inst;
}
void
fs_inst *
VEC(const fs_reg &dst, const fs_reg *src, unsigned sources) const
{
/* For now, this emits a series of MOVs to ease the transition
* to the new helper. The intention is to have this emit either
* a single MOV or a LOAD_PAYLOAD to fully initialize dst from a
* the list of sources.
*/
for (unsigned i = 0; i < sources; i++)
MOV(offset(dst, dispatch_width(), i), src[i]);
return sources == 1 ? MOV(dst, src[0])
: LOAD_PAYLOAD(dst, src, sources, 0);
}
fs_inst *