Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>master
@@ -134,6 +134,9 @@ bool needs_exact(aco_ptr<Instruction>& instr) { | |||
} else if (instr->format == Format::MIMG) { | |||
MIMG_instruction *mimg = static_cast<MIMG_instruction *>(instr.get()); | |||
return mimg->disable_wqm; | |||
} else if (instr->format == Format::FLAT || instr->format == Format::GLOBAL) { | |||
FLAT_instruction *flat = static_cast<FLAT_instruction *>(instr.get()); | |||
return flat->disable_wqm; | |||
} else { | |||
return instr->format == Format::EXP || instr->opcode == aco_opcode::p_fs_buffer_store_smem; | |||
} |
@@ -4764,6 +4764,8 @@ void visit_store_global(isel_context *ctx, nir_intrinsic_instr *instr) | |||
flat->glc = glc; | |||
flat->dlc = false; | |||
flat->offset = offset; | |||
flat->disable_wqm = true; | |||
ctx->program->needs_exact = true; | |||
ctx->block->instructions.emplace_back(std::move(flat)); | |||
} | |||
} |
@@ -850,6 +850,7 @@ struct FLAT_instruction : public Instruction { | |||
bool dlc; /* NAVI: device level coherent */ | |||
bool lds; | |||
bool nv; | |||
bool disable_wqm; | |||
}; | |||
struct Export_instruction : public Instruction { |
@@ -371,6 +371,8 @@ static void print_instr_format_specific(struct Instruction *instr, FILE *output) | |||
fprintf(output, " lds"); | |||
if (flat->nv) | |||
fprintf(output, " nv"); | |||
if (flat->disable_wqm) | |||
fprintf(output, " disable_wqm"); | |||
break; | |||
} | |||
case Format::MTBUF: { |