diff options
author | Jose Maria Casanova Crespo <[email protected]> | 2018-07-11 11:19:20 +0200 |
---|---|---|
committer | Dylan Baker <[email protected]> | 2018-07-13 10:00:41 -0700 |
commit | 251cf0dc3637ad170a6cf6917cb771ac37956a06 (patch) | |
tree | b6e1fcf767ec16e75661b0b91917be56cf582844 /progs/openvg/trivial/lineto.c | |
parent | 658d4e8e0096ececfb4e587969f1b65689d2c913 (diff) |
i965/fs: unspills shoudn't use grf127 as dest since Gen8+
At 232ed8980217dd65ab0925df28156f565b94b2e5 "i965/fs: Register allocator
shoudn't use grf127 for sends dest" we didn't take into account the case
of SEND instructions that are not send_from_grf. But since Gen7+ although
the backend still uses MRFs internally for sends they are finally
assigned to a GRFs.
In the case of unspills the backend assigns directly as source its
destination because it is suppose to be available. So we always have a
source-destination overlap. If the reg_allocator assigns registers that
include the grf127 we fail the validation rule that affects Gen8+
"r127 must not be used for return address when there is a src and dest
overlap in send instruction."
So this patch activates the grf127_send_hack_node for Gen8+ and if we
have any register spilled we add interferences to the destination of
the unspill operations.
We also need to avoid that opt_bank_conflicts() optimization, that runs
after the register allocation, doesn't move things around, causing the
grf127 to be used in the condition we were avoiding.
Fixes piglit test tests/spec/arb_compute_shader/linker/bug-93840.shader_test
and some shader-db crashed because of the grf127 validation rule..
v2: make sure that opt_bank_conflicts() optimization doesn't change
the use of grf127. (Caio)
Found by Caio Marcelo de Oliveira Filho
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107193
Fixes: 232ed89802 "i965/fs: Register allocator shoudn't use grf127 for sends dest"
Cc: 18.1 <[email protected]>
Cc: Caio Marcelo de Oliveira Filho <[email protected]>
Cc: Jason Ekstrand <[email protected]>
Reviewed-by: Caio Marcelo de Oliveira Filho <[email protected]>
(cherry picked from commit 62f37ee53d9d5388eecef94369893b5467349306)
Diffstat (limited to 'progs/openvg/trivial/lineto.c')
0 files changed, 0 insertions, 0 deletions