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:
Ilia Mirkin 2021-03-03 18:52:13 -05:00 committed by Marge Bot
parent 1cf864ef9e
commit dbdc2b160c
1 changed files with 8 additions and 0 deletions

View File

@ -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) {