diff --git a/src/amd/compiler/aco_assembler.cpp b/src/amd/compiler/aco_assembler.cpp index 0a6feff5f4b..e6b820a2a81 100644 --- a/src/amd/compiler/aco_assembler.cpp +++ b/src/amd/compiler/aco_assembler.cpp @@ -808,8 +808,14 @@ fix_exports(asm_context& ctx, std::vector& out, Program* program) exported = true; break; } - } else if ((*it)->definitions.size() && (*it)->definitions[0].physReg() == exec) + } else if ((*it)->definitions.size() && (*it)->definitions[0].physReg() == exec) { break; + } else if ((*it)->opcode == aco_opcode::s_setpc_b64) { + /* Do not abort if the main FS has an epilog because it only + * exports MRTZ (if present) and the epilog exports colors. + */ + exported |= program->stage.hw == HWStage::FS && program->info.ps.has_epilog; + } ++it; } }