mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 03:48:06 +02:00
i965/fs: Remove the requirement of no dead code for interference checks.
This will be convenient when I want to comment out optimization code to see the raw program being optimized, but more importantly will let the interference check be used during optimization. Acked-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
d7787adda8
commit
f42cdc7984
1 changed files with 11 additions and 11 deletions
|
|
@ -226,19 +226,19 @@ fs_visitor::calculate_live_intervals()
|
|||
bool
|
||||
fs_visitor::virtual_grf_interferes(int a, int b)
|
||||
{
|
||||
int start = MAX2(this->virtual_grf_def[a], this->virtual_grf_def[b]);
|
||||
int end = MIN2(this->virtual_grf_use[a], this->virtual_grf_use[b]);
|
||||
int a_def = this->virtual_grf_def[a], a_use = this->virtual_grf_use[a];
|
||||
int b_def = this->virtual_grf_def[b], b_use = this->virtual_grf_use[b];
|
||||
|
||||
/* We can't handle dead register writes here, without iterating
|
||||
* over the whole instruction stream to find every single dead
|
||||
* write to that register to compare to the live interval of the
|
||||
* other register. Just assert that dead_code_eliminate() has been
|
||||
* called.
|
||||
/* If there's dead code (def but not use), it would break our test
|
||||
* unless we consider it used.
|
||||
*/
|
||||
assert((this->virtual_grf_use[a] != -1 ||
|
||||
this->virtual_grf_def[a] == MAX_INSTRUCTION) &&
|
||||
(this->virtual_grf_use[b] != -1 ||
|
||||
this->virtual_grf_def[b] == MAX_INSTRUCTION));
|
||||
if ((a_use == -1 && a_def != MAX_INSTRUCTION) ||
|
||||
(b_use == -1 && b_def != MAX_INSTRUCTION)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
int start = MAX2(a_def, b_def);
|
||||
int end = MIN2(a_use, b_use);
|
||||
|
||||
/* If the register is used to store 16 values of less than float
|
||||
* size (only the case for pixel_[xy]), then we can't allocate
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue