diff --git a/src/amd/compiler/aco_ir.cpp b/src/amd/compiler/aco_ir.cpp index 179d282c78a..ecf34eda39d 100644 --- a/src/amd/compiler/aco_ir.cpp +++ b/src/amd/compiler/aco_ir.cpp @@ -1351,6 +1351,8 @@ dealloc_vgprs(Program* program) Builder bld(program); if (!block.instructions.empty() && block.instructions.back()->opcode == aco_opcode::s_endpgm) { bld.reset(&block.instructions, block.instructions.begin() + (block.instructions.size() - 1)); + /* Due to a hazard, an s_nop is needed before "s_sendmsg sendmsg_dealloc_vgprs". */ + bld.sopp(aco_opcode::s_nop, -1, 0); bld.sopp(aco_opcode::s_sendmsg, -1, sendmsg_dealloc_vgprs); }