diff options
author | Erico Nunes <nunes.erico@gmail.com> | 2022-04-26 11:09:47 +0200 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2022-05-23 09:07:03 +0000 |
commit | 106dc60fc0b14e3c2ab7febe5a635a7e5fc31e05 (patch) | |
tree | b292eb069d422d6d1e1005cc142dd7498215a143 /src/gallium/drivers | |
parent | c3f13ee5511501a350c2fba5ab3369e6bb5aa46c (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.c | 12 |
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; |