mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2025-02-18 17:09:17 +00:00
freedreno/ir3: fix location of inserted mov's
If the group pass must insert a mov to resolve conflicts, avoid the mov appearing *after* the meta:collect whose src it is. The current pre-RA scheduler doesn't really care about the initial instruction order, but the new one will in some cases. Signed-off-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4440>
This commit is contained in:
parent
908044ef4b
commit
0f22f85fe7
@ -34,7 +34,17 @@ static void
|
||||
insert_mov(struct ir3_instruction *collect, int idx)
|
||||
{
|
||||
struct ir3_instruction *src = ssa(collect->regs[idx+1]);
|
||||
collect->regs[idx+1]->instr = ir3_MOV(src->block, src, TYPE_F32);
|
||||
struct ir3_instruction *mov = ir3_MOV(src->block, src, TYPE_F32);
|
||||
collect->regs[idx+1]->instr = mov;
|
||||
|
||||
/* if collect and src are in the same block, move the inserted mov
|
||||
* to just before the collect to avoid a use-before-def. Otherwise
|
||||
* it should be safe to leave at the end of the block it is in:
|
||||
*/
|
||||
if (src->block == collect->block) {
|
||||
list_delinit(&mov->node);
|
||||
list_addtail(&mov->node, &collect->node);
|
||||
}
|
||||
}
|
||||
|
||||
/* verify that cur != instr, but cur is also not in instr's neighbor-list: */
|
||||
|
Loading…
x
Reference in New Issue
Block a user