aco: Add s_wait_event argument bit definitions

A wait for export_ready (if the corresponding bit is not set in the
instruction) is done to enter the Primitive Ordered Pixel Shading ordered
section on GFX11.

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Signed-off-by: Vitaliy Triang3l Kuzmin <triang3l@yandex.ru>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22250>
This commit is contained in:
Vitaliy Triang3l Kuzmin 2023-04-03 21:09:34 +03:00 committed by Marge Bot
parent b892f31e4d
commit 94d2888da2
2 changed files with 15 additions and 0 deletions

View file

@ -285,6 +285,16 @@ struct wait_imm {
bool empty() const;
};
/* s_wait_event immediate bits. */
enum wait_event_imm : uint16_t {
/* If this bit is 0, await that the export buffer space has been allocated.
* In Primitive Ordered Pixel Shading, export ready means that the overlapped waves have exited
* their ordered sections (by performing the `done` export), and that the current wave may enter
* its ordered section.
*/
wait_event_imm_dont_wait_export_ready = 0x1,
};
constexpr Format
asVOP3(Format format)
{

View file

@ -389,6 +389,11 @@ print_instr_format_specific(enum amd_gfx_level gfx_level, const Instruction* ins
}
break;
}
case aco_opcode::s_wait_event: {
if (!(imm & wait_event_imm_dont_wait_export_ready))
fprintf(output, " export_ready");
break;
}
default: {
if (imm)
fprintf(output, " imm:%u", imm);