mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2024-11-30 02:51:24 +00:00
aco/ra: fix get_reg_for_operand() in case of stride mismatches
We have to clear the register file from the previous operand
as otherwise, there might be no space left.
Totals from 5 (0.00% of 134572) affected shaders: (GFX10.3)
CodeSize: 21144 -> 21000 (-0.68%); split: -0.72%, +0.04%
Instrs: 3738 -> 3720 (-0.48%); split: -0.51%, +0.03%
Latency: 517229 -> 516319 (-0.18%); split: -0.18%, +0.00%
InvThroughput: 49068 -> 48902 (-0.34%); split: -0.38%, +0.04%
Copies: 501 -> 483 (-3.59%); split: -3.79%, +0.20%
Cc: mesa-stable
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14279>
(cherry picked from commit d36a43598c
)
This commit is contained in:
parent
1c44a60ff4
commit
6c510c4847
@ -931,7 +931,7 @@
|
||||
"description": "aco/ra: fix get_reg_for_operand() in case of stride mismatches",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null
|
||||
},
|
||||
|
@ -1898,10 +1898,9 @@ get_reg_for_operand(ra_ctx& ctx, RegisterFile& register_file,
|
||||
dst = operand.physReg();
|
||||
|
||||
} else {
|
||||
/* clear the operand in case it's only a stride mismatch */
|
||||
register_file.clear(src, operand.regClass());
|
||||
dst = get_reg(ctx, register_file, operand.getTemp(), parallelcopy, instr, operand_index);
|
||||
update_renames(
|
||||
ctx, register_file, parallelcopy, instr,
|
||||
instr->opcode != aco_opcode::p_create_vector ? rename_not_killed_ops : (UpdateRenames)0);
|
||||
}
|
||||
|
||||
Operand pc_op = operand;
|
||||
|
Loading…
Reference in New Issue
Block a user