From eb65c4be88b2ad86be697c1c16bcc7629c3f4748 Mon Sep 17 00:00:00 2001 From: Simon Perretta Date: Mon, 13 Feb 2023 22:09:58 +0000 Subject: [PATCH] pvr: Add support for WOP Signed-off-by: Simon Perretta Acked-by: Frank Binns Part-of: --- src/imagination/rogue/passes/rogue_schedule_instr_groups.c | 4 ++++ src/imagination/rogue/rogue.h | 1 + src/imagination/rogue/rogue_ctrl_instrs.def | 1 + src/imagination/rogue/rogue_encode.c | 4 ++++ src/imagination/rogue/rogue_info.c | 1 + 5 files changed, 11 insertions(+) diff --git a/src/imagination/rogue/passes/rogue_schedule_instr_groups.c b/src/imagination/rogue/passes/rogue_schedule_instr_groups.c index 465c913ece0..7cef13a0c9c 100644 --- a/src/imagination/rogue/passes/rogue_schedule_instr_groups.c +++ b/src/imagination/rogue/passes/rogue_schedule_instr_groups.c @@ -647,6 +647,10 @@ static void rogue_calc_ctrl_instrs_size(rogue_instr_group *group, group->size.instrs[phase] = 1; break; + case ROGUE_CTRL_OP_WOP: + group->size.instrs[phase] = 0; + break; + default: unreachable("Unsupported ctrl op."); } diff --git a/src/imagination/rogue/rogue.h b/src/imagination/rogue/rogue.h index afcdcf7cbad..0f442f2dd12 100644 --- a/src/imagination/rogue/rogue.h +++ b/src/imagination/rogue/rogue.h @@ -1097,6 +1097,7 @@ enum rogue_ctrl_op { /* Real instructions. */ ROGUE_CTRL_OP_NOP, + ROGUE_CTRL_OP_WOP, ROGUE_CTRL_OP_BA, ROGUE_CTRL_OP_WDF, diff --git a/src/imagination/rogue/rogue_ctrl_instrs.def b/src/imagination/rogue/rogue_ctrl_instrs.def index 656a66b9f7b..55b61180818 100644 --- a/src/imagination/rogue/rogue_ctrl_instrs.def +++ b/src/imagination/rogue/rogue_ctrl_instrs.def @@ -57,6 +57,7 @@ ROGUE_BUILDER_DEFINE_CTRLB(BA) ROGUE_BUILDER_DEFINE_CTRL00(END) ROGUE_BUILDER_DEFINE_CTRL00(NOP) +ROGUE_BUILDER_DEFINE_CTRL00(WOP) ROGUE_BUILDER_DEFINE_CTRL01(WDF) diff --git a/src/imagination/rogue/rogue_encode.c b/src/imagination/rogue/rogue_encode.c index b87b5a89885..6b15ad9be41 100644 --- a/src/imagination/rogue/rogue_encode.c +++ b/src/imagination/rogue/rogue_encode.c @@ -158,6 +158,10 @@ static void rogue_encode_instr_group_header(rogue_instr_group *group, h.miscctl = rogue_ctrl_op_mod_is_set(ctrl, ROGUE_CTRL_OP_MOD_END); break; + case ROGUE_CTRL_OP_WOP: + h.ctrlop = CTRLOP_WOP; + break; + default: unreachable("Unsupported ctrl op."); } diff --git a/src/imagination/rogue/rogue_info.c b/src/imagination/rogue/rogue_info.c index 2109b0a61ce..518ebd81111 100644 --- a/src/imagination/rogue/rogue_info.c +++ b/src/imagination/rogue/rogue_info.c @@ -229,6 +229,7 @@ const rogue_ctrl_op_info rogue_ctrl_op_infos[ROGUE_CTRL_OP_COUNT] = { [ROGUE_CTRL_OP_NOP] = { .str = "nop", .supported_op_mods = OM(END), }, + [ROGUE_CTRL_OP_WOP] = { .str = "wop", }, [ROGUE_CTRL_OP_BA] = { .str = "ba", .has_target = true, .ends_block = true, }, [ROGUE_CTRL_OP_WDF] = { .str = "wdf", .num_srcs = 1, .supported_src_types = { [0] = T(DRC), },