diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp index d011df45153..792874577a2 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp @@ -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) {