Mesa (master): panfrost/midgard: Fix mir_print_instruction() for branch instructions
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jan 22 15:52:31 UTC 2020
Module: Mesa
Branch: master
Commit: fe5fbadd4624bc07fc45d87222b5b853c59f54b5
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fe5fbadd4624bc07fc45d87222b5b853c59f54b5
Author: Boris Brezillon <boris.brezillon at collabora.com>
Date: Mon Jan 20 21:44:49 2020 +0100
panfrost/midgard: Fix mir_print_instruction() for branch instructions
Branch instructions should not be treated as regular ALUs.
Signed-off-by: Boris Brezillon <boris.brezillon at collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3478>
---
src/panfrost/midgard/midgard_print.c | 38 +++++++++++++++++++++++++++++-------
1 file changed, 31 insertions(+), 7 deletions(-)
diff --git a/src/panfrost/midgard/midgard_print.c b/src/panfrost/midgard/midgard_print.c
index 43bb671dc66..36a58259931 100644
--- a/src/panfrost/midgard/midgard_print.c
+++ b/src/panfrost/midgard/midgard_print.c
@@ -103,17 +103,41 @@ mir_print_instruction(midgard_instruction *ins)
{
printf("\t");
- switch (ins->type) {
- case TAG_ALU_4: {
- midgard_alu_op op = ins->alu.op;
- const char *name = alu_opcode_props[op].name;
-
+ if (midgard_is_branch_unit(ins->unit)) {
const char *branch_target_names[] = {
"goto", "break", "continue", "discard"
};
- if (ins->compact_branch)
- name = branch_target_names[ins->branch.target_type];
+ printf("%s.", mir_get_unit(ins->unit));
+ if (ins->branch.target_type == TARGET_DISCARD)
+ printf("discard.");
+ else if (ins->writeout)
+ printf("write.");
+ else if (ins->unit == ALU_ENAB_BR_COMPACT &&
+ !ins->branch.conditional)
+ printf("uncond.");
+ else
+ printf("cond.");
+
+ if (!ins->branch.conditional)
+ printf("always");
+ else if (ins->branch.invert_conditional)
+ printf("false");
+ else
+ printf("true");
+
+ if (ins->branch.target_type != TARGET_DISCARD)
+ printf(" %s -> block(%d)\n",
+ branch_target_names[ins->branch.target_type],
+ ins->branch.target_block);
+
+ return;
+ }
+
+ switch (ins->type) {
+ case TAG_ALU_4: {
+ midgard_alu_op op = ins->alu.op;
+ const char *name = alu_opcode_props[op].name;
if (ins->unit)
printf("%s.", mir_get_unit(ins->unit));
More information about the mesa-commit
mailing list