mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
i965/vec4: Ignore swizzle of VGRF for use by var_range_end()
Issue description from Matt's commite7c376ad: "var_range_end(v, n) loops over the n components of variable number v and finds the maximum value, giving the last use of any component of v. Therefore it expects v to correspond to the variable associated with the .x channel of the VGRF. var_from_reg() however returns the variable for the first channel of the VGRF, post-swizzle. So, if the last register had a swizzle with y, z, or w in the swizzle component, we would read out of bounds. For any other register, we would read liveness information from the next register. The fix is to convert the src_reg to a dst_reg in order to call the dst_reg version of var_from_reg() that doesn't consider the swizzle." Closes: #3003 Fixes:48dfb30f('intel/compiler: Move all live interval analysis results into vec4_live_variables') Reviewed-by: Matt Turner <mattst88@gmail.com> Signed-off-by: Andrii Simiklit <asimiklit.work@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4941> (cherry picked from commitd1b7462849)
This commit is contained in:
parent
a366c3f548
commit
2303be5ff1
2 changed files with 2 additions and 2 deletions
|
|
@ -2362,7 +2362,7 @@
|
|||
"description": "i965/vec4: Ignore swizzle of VGRF for use by var_range_end()",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "48dfb30f9231c22a6af6885dbc9ef86dc2edde1e"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -288,7 +288,7 @@ vec4_visitor::opt_cse_local(bblock_t *block, const vec4_live_variables &live)
|
|||
* more -- a sure sign they'll fail operands_match().
|
||||
*/
|
||||
if (src->file == VGRF) {
|
||||
if (live.var_range_end(var_from_reg(alloc, *src), 8) < ip) {
|
||||
if (live.var_range_end(var_from_reg(alloc, dst_reg(*src)), 8) < ip) {
|
||||
entry->remove();
|
||||
ralloc_free(entry);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue