summaryrefslogtreecommitdiff
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorErico Nunes <nunes.erico@gmail.com>2022-04-26 11:09:47 +0200
committerMarge Bot <emma+marge@anholt.net>2022-05-23 09:07:03 +0000
commit106dc60fc0b14e3c2ab7febe5a635a7e5fc31e05 (patch)
treeb292eb069d422d6d1e1005cc142dd7498215a143 /src/gallium/drivers
parentc3f13ee5511501a350c2fba5ab3369e6bb5aa46c (diff)
lima/ppir: merge branch nodes in simple cases
In some simple cases, we can merge the branch operation with an existing instruction and avoid the creation of an empty new instruction just for the branch node. Signed-off-by: Erico Nunes <nunes.erico@gmail.com> Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16163>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/lima/ir/pp/node_to_instr.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/gallium/drivers/lima/ir/pp/node_to_instr.c b/src/gallium/drivers/lima/ir/pp/node_to_instr.c
index ff8d735d9a7..ffe8c5af89d 100644
--- a/src/gallium/drivers/lima/ir/pp/node_to_instr.c
+++ b/src/gallium/drivers/lima/ir/pp/node_to_instr.c
@@ -58,6 +58,18 @@ static bool ppir_do_node_to_instr_try_insert(ppir_block *block, ppir_node *node)
return ppir_instr_insert_node(succ->instr, node);
}
+ if (ppir_node_has_single_succ(node) &&
+ ppir_node_has_single_pred(ppir_node_first_succ(node)) &&
+ (ppir_node_first_succ(node)->type == ppir_node_type_branch)) {
+
+ assert(ppir_node_has_single_succ(node));
+ ppir_node *succ = ppir_node_first_succ(node);
+ assert(succ);
+ assert(succ->instr);
+
+ return ppir_instr_insert_node(succ->instr, node);
+ }
+
switch (node->type) {
case ppir_node_type_load:
break;