i965/fs: don't make unused payload registers interfere
Before, we were setting payload_last_use_ip for unused payload registers to 0, which made them interfere with whatever the first instruction wrote to due to the workaround for SIMD16 uniform arguments. Just use -1 to mean "unused" instead, and then skip setting any interferences for unused payload registers. instructions in affected programs: 0 -> 0 helped: 0 HURT: 0 GAINED: 1 LOST: 0 Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Signed-off-by: Connor Abbott <connor.w.abbott@intel.com>
This commit is contained in:
parent
18e73bf7f8
commit
bde4c8ec1f
1 changed files with 6 additions and 1 deletions
|
|
@ -341,7 +341,9 @@ fs_visitor::setup_payload_interference(struct ra_graph *g,
|
|||
int loop_end_ip = 0;
|
||||
|
||||
int payload_last_use_ip[payload_node_count];
|
||||
memset(payload_last_use_ip, 0, sizeof(payload_last_use_ip));
|
||||
for (int i = 0; i < payload_node_count; i++)
|
||||
payload_last_use_ip[i] = -1;
|
||||
|
||||
int ip = 0;
|
||||
foreach_block_and_inst(block, fs_inst, inst, cfg) {
|
||||
switch (inst->opcode) {
|
||||
|
|
@ -411,6 +413,9 @@ fs_visitor::setup_payload_interference(struct ra_graph *g,
|
|||
}
|
||||
|
||||
for (int i = 0; i < payload_node_count; i++) {
|
||||
if (payload_last_use_ip[i] == -1)
|
||||
continue;
|
||||
|
||||
/* Mark the payload node as interfering with any virtual grf that is
|
||||
* live between the start of the program and our last use of the payload
|
||||
* node.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue