summaryrefslogtreecommitdiffstats
path: root/src/panfrost/midgard
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2020-04-27 18:43:12 -0400
committerMarge Bot <[email protected]>2020-04-29 15:35:54 +0000
commit742b272314fa6e202ea43b2f5473aee12bf7350e (patch)
treeb6adab8fa8d11d644db8309106f13faf65e97f45 /src/panfrost/midgard
parentb9f7f06a61ead80bf035213a270aca532e34c838 (diff)
pan/mdg: Add type fields to IR
Signed-off-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4793>
Diffstat (limited to 'src/panfrost/midgard')
-rw-r--r--src/panfrost/midgard/compiler.h4
-rw-r--r--src/panfrost/midgard/midgard_print.c16
2 files changed, 13 insertions, 7 deletions
diff --git a/src/panfrost/midgard/compiler.h b/src/panfrost/midgard/compiler.h
index 6b3028fbe7c..92772e26a42 100644
--- a/src/panfrost/midgard/compiler.h
+++ b/src/panfrost/midgard/compiler.h
@@ -97,6 +97,10 @@ typedef struct midgard_instruction {
/* vec16 swizzle, unpacked, per source */
unsigned swizzle[MIR_SRC_COUNT][MIR_VEC_COMPONENTS];
+ /* Types! */
+ nir_alu_type src_types[MIR_SRC_COUNT];
+ nir_alu_type dest_type;
+
/* Special fields for an ALU instruction */
midgard_reg_info registers;
diff --git a/src/panfrost/midgard/midgard_print.c b/src/panfrost/midgard/midgard_print.c
index 67104f3c7aa..60786fef53f 100644
--- a/src/panfrost/midgard/midgard_print.c
+++ b/src/panfrost/midgard/midgard_print.c
@@ -333,6 +333,7 @@ mir_print_instruction(midgard_instruction *ins)
printf(" ");
mir_print_index(ins->dest);
+ pan_print_alu_type(ins->dest_type, stdout);
if (ins->mask != 0xF)
mir_print_mask(ins->mask);
@@ -345,6 +346,7 @@ mir_print_instruction(midgard_instruction *ins)
mir_print_embedded_constant(ins, 0);
else {
mir_print_index(ins->src[0]);
+ pan_print_alu_type(ins->src_types[0], stdout);
mir_print_swizzle(ins->swizzle[0]);
}
printf(", ");
@@ -355,16 +357,16 @@ mir_print_instruction(midgard_instruction *ins)
mir_print_embedded_constant(ins, 1);
else {
mir_print_index(ins->src[1]);
+ pan_print_alu_type(ins->src_types[1], stdout);
mir_print_swizzle(ins->swizzle[1]);
}
- printf(", ");
- mir_print_index(ins->src[2]);
- mir_print_swizzle(ins->swizzle[2]);
-
- printf(", ");
- mir_print_index(ins->src[3]);
- mir_print_swizzle(ins->swizzle[3]);
+ for (unsigned c = 2; c <= 3; ++c) {
+ printf(", ");
+ mir_print_index(ins->src[c]);
+ pan_print_alu_type(ins->src_types[c], stdout);
+ mir_print_swizzle(ins->swizzle[c]);
+ }
if (ins->no_spill)
printf(" /* no spill */");