broadcom/compiler: try to use ldunif(a) instead of ldunif(a)rf in v71
The rf variants need to encode the destination in the cond bits, which prevents these to be merged with any other instruction that need them. In 4.x, ldunif(a) write to r5 which is a special register that only ldunif(a) and ldvary can write so we have a special register class for it and only allow it for them. Then when we need to choose a register for a node, if this register is available we always use it. In 7.x these instructions write to rf0, which can be used by any instruction, so instead of restricting rf0, we track the temps that are used as ldunif(a) destinations and use that information to favor rf0 for them. Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25450>
This commit is contained in:

committed by
Marge Bot

parent
d8a25bdb07
commit
3a36a618d7
@@ -605,6 +605,9 @@ struct v3d_ra_node_info {
|
||||
struct {
|
||||
uint32_t priority;
|
||||
uint8_t class_bits;
|
||||
|
||||
/* V3D 7.x */
|
||||
bool is_ldunif_dst;
|
||||
} *info;
|
||||
uint32_t alloc_count;
|
||||
};
|
||||
|
Reference in New Issue
Block a user