nv50/ir: wipe any info about memory when seeing a locking op
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Pierre Moreau <dev@pmoreau.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10164>
This commit is contained in:
parent
1cf864ef9e
commit
dbdc2b160c
|
@ -3165,6 +3165,10 @@ MemoryOpt::runOpt(BasicBlock *bb)
|
|||
next = ldst->next;
|
||||
|
||||
if (ldst->op == OP_LOAD || ldst->op == OP_VFETCH) {
|
||||
if (ldst->subOp == NV50_IR_SUBOP_LOAD_LOCKED) {
|
||||
purgeRecords(ldst, ldst->src(0).getFile());
|
||||
continue;
|
||||
}
|
||||
if (ldst->isDead()) {
|
||||
// might have been produced by earlier optimization
|
||||
delete_Instruction(prog, ldst);
|
||||
|
@ -3172,6 +3176,10 @@ MemoryOpt::runOpt(BasicBlock *bb)
|
|||
}
|
||||
} else
|
||||
if (ldst->op == OP_STORE || ldst->op == OP_EXPORT) {
|
||||
if (ldst->subOp == NV50_IR_SUBOP_STORE_UNLOCKED) {
|
||||
purgeRecords(ldst, ldst->src(0).getFile());
|
||||
continue;
|
||||
}
|
||||
if (typeSizeof(ldst->dType) == 4 &&
|
||||
ldst->src(1).getFile() == FILE_GPR &&
|
||||
ldst->getSrc(1)->getInsn()->op == OP_NOP) {
|
||||
|
|
Loading…
Reference in New Issue