Mesa (main): pan/mdg: Print outmods when printing IR
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jun 1 19:43:04 UTC 2022
Module: Mesa
Branch: main
Commit: e596a0423b7a4fef6b3412fd51783a251e5420e6
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e596a0423b7a4fef6b3412fd51783a251e5420e6
Author: Alyssa Rosenzweig <alyssa at collabora.com>
Date: Tue May 31 09:18:46 2022 -0400
pan/mdg: Print outmods when printing IR
In particular, this lets us distinguish mul_high from regular mul.
Signed-off-by: Alyssa Rosenzweig <alyssa at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16798>
---
src/panfrost/midgard/disassemble.c | 25 ++-----------------------
src/panfrost/midgard/helpers.h | 3 +++
src/panfrost/midgard/midgard_print.c | 5 +++++
src/panfrost/midgard/midgard_print_constant.c | 19 +++++++++++++++++++
4 files changed, 29 insertions(+), 23 deletions(-)
diff --git a/src/panfrost/midgard/disassemble.c b/src/panfrost/midgard/disassemble.c
index 817b951d568..84bad33743c 100644
--- a/src/panfrost/midgard/disassemble.c
+++ b/src/panfrost/midgard/disassemble.c
@@ -284,20 +284,6 @@ print_tex_reg(FILE *fp, unsigned reg, bool is_write)
}
-static char *outmod_names_float[4] = {
- "",
- ".clamp_0_inf",
- ".clamp_m1_1",
- ".clamp_0_1"
-};
-
-static char *outmod_names_int[4] = {
- ".ssat",
- ".usat",
- ".keeplo",
- ".keephi"
-};
-
static char *srcmod_names_int[4] = {
".sext",
".zext",
@@ -318,13 +304,6 @@ static char *index_format_names[4] = {
".s32"
};
-static void
-print_outmod(FILE *fp, unsigned outmod, bool is_int)
-{
- fprintf(fp, "%s", is_int ? outmod_names_int[outmod] :
- outmod_names_float[outmod]);
-}
-
static void
print_alu_outmod(FILE *fp, unsigned outmod, bool is_int, bool half)
{
@@ -336,7 +315,7 @@ print_alu_outmod(FILE *fp, unsigned outmod, bool is_int, bool half)
if (!is_int && half)
fprintf(fp, ".shrink");
- print_outmod(fp, outmod, is_int);
+ mir_print_outmod(fp, outmod, is_int);
}
/* arg == 0 (dest), arg == 1 (src1), arg == 2 (src2) */
@@ -1771,7 +1750,7 @@ print_texture_word(disassemble_context *ctx, FILE *fp, uint32_t *word,
/* Output modifiers are only valid for float texture operations */
if (texture->sampler_type == MALI_SAMPLER_FLOAT)
- print_outmod(fp, texture->outmod, false);
+ mir_print_outmod(fp, texture->outmod, false);
fprintf(fp, ", ");
diff --git a/src/panfrost/midgard/helpers.h b/src/panfrost/midgard/helpers.h
index 2109aa2d21c..a4d993ab3e4 100644
--- a/src/panfrost/midgard/helpers.h
+++ b/src/panfrost/midgard/helpers.h
@@ -435,4 +435,7 @@ mir_print_constant_component(FILE *fp, const midgard_constants *consts,
unsigned c, midgard_reg_mode reg_mode, bool half,
unsigned mod, midgard_alu_op op);
+void
+mir_print_outmod(FILE *fp, unsigned outmod, bool is_int);
+
#endif
diff --git a/src/panfrost/midgard/midgard_print.c b/src/panfrost/midgard/midgard_print.c
index 15a9fd62a54..ed0d80b2c7e 100644
--- a/src/panfrost/midgard/midgard_print.c
+++ b/src/panfrost/midgard/midgard_print.c
@@ -220,6 +220,11 @@ mir_print_instruction(midgard_instruction *ins)
printf("%s.", mir_get_unit(ins->unit));
printf("%s", name ? name : "??");
+
+ if (!(midgard_is_integer_out_op(ins->op) && ins->outmod == midgard_outmod_keeplo)) {
+ mir_print_outmod(stdout, ins->outmod, midgard_is_integer_out_op(ins->op));
+ }
+
break;
}
diff --git a/src/panfrost/midgard/midgard_print_constant.c b/src/panfrost/midgard/midgard_print_constant.c
index c254574774e..d588bc24bec 100644
--- a/src/panfrost/midgard/midgard_print_constant.c
+++ b/src/panfrost/midgard/midgard_print_constant.c
@@ -155,4 +155,23 @@ mir_print_constant_component(FILE *fp, const midgard_constants *consts, unsigned
}
}
+static char *outmod_names_float[4] = {
+ "",
+ ".clamp_0_inf",
+ ".clamp_m1_1",
+ ".clamp_0_1"
+};
+
+static char *outmod_names_int[4] = {
+ ".ssat",
+ ".usat",
+ ".keeplo",
+ ".keephi"
+};
+void
+mir_print_outmod(FILE *fp, unsigned outmod, bool is_int)
+{
+ fprintf(fp, "%s", is_int ? outmod_names_int[outmod] :
+ outmod_names_float[outmod]);
+}
More information about the mesa-commit
mailing list