mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-07 06:30:11 +01:00
aco: ensure predecessors' p_logical_end is in WQM when a p_phi is in WQM
We want any copies to be in WQM. I don't know if this fixes any real application, but I can create a vkrunner test than reproduces the issue. Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Fixes:93c8ebfa78('aco: Initial commit of independent AMD compiler') Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3273> (cherry picked from commit2d7386a2d0)
This commit is contained in:
parent
ac3d12717a
commit
f7e405bf7c
2 changed files with 11 additions and 2 deletions
|
|
@ -94,7 +94,7 @@
|
|||
"description": "aco: ensure predecessors' p_logical_end is in WQM when a p_phi is in WQM",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "93c8ebfa780ebd1495095e794731881aef29e7d3"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -83,6 +83,7 @@ struct block_info {
|
|||
std::vector<WQMState> instr_needs;
|
||||
uint8_t block_needs;
|
||||
uint8_t ever_again_needs;
|
||||
bool logical_end_wqm;
|
||||
/* more... */
|
||||
};
|
||||
|
||||
|
|
@ -231,8 +232,16 @@ void get_block_needs(wqm_ctx &ctx, exec_ctx &exec_ctx, Block* block)
|
|||
|
||||
/* ensure the condition controlling the control flow for this phi is in WQM */
|
||||
if (needs == WQM && instr->opcode == aco_opcode::p_phi) {
|
||||
for (unsigned pred_idx : block->logical_preds)
|
||||
for (unsigned pred_idx : block->logical_preds) {
|
||||
mark_block_wqm(ctx, pred_idx);
|
||||
exec_ctx.info[pred_idx].logical_end_wqm = true;
|
||||
ctx.worklist.insert(pred_idx);
|
||||
}
|
||||
}
|
||||
|
||||
if (instr->opcode == aco_opcode::p_logical_end && info.logical_end_wqm) {
|
||||
assert(needs == Unspecified);
|
||||
needs = WQM;
|
||||
}
|
||||
|
||||
instr_needs[i] = needs;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue