aboutsummaryrefslogtreecommitdiffstats
path: root/src/panfrost/midgard/midgard_print.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/panfrost/midgard/midgard_print.c')
-rw-r--r--src/panfrost/midgard/midgard_print.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/panfrost/midgard/midgard_print.c b/src/panfrost/midgard/midgard_print.c
index 58d6cf67278..fb0e701d599 100644
--- a/src/panfrost/midgard/midgard_print.c
+++ b/src/panfrost/midgard/midgard_print.c
@@ -71,12 +71,18 @@ mir_print_mask(unsigned mask)
}
static void
-mir_print_swizzle(unsigned *swizzle)
+mir_print_swizzle(unsigned *swizzle, nir_alu_type T)
{
+ unsigned sz = nir_alu_type_get_type_size(T);
+ unsigned comps = 128 / sz;
+
printf(".");
- for (unsigned i = 0; i < 16; ++i)
- putchar(components[swizzle[i]]);
+ for (unsigned i = 0; i < comps; ++i) {
+ unsigned C = swizzle[i];
+ assert(C < comps);
+ putchar(components[C]);
+ }
}
static const char *
@@ -352,7 +358,7 @@ mir_print_instruction(midgard_instruction *ins)
if (ins->src[0] != ~0) {
pan_print_alu_type(ins->src_types[0], stdout);
- mir_print_swizzle(ins->swizzle[0]);
+ mir_print_swizzle(ins->swizzle[0], ins->src_types[0]);
}
}
printf(", ");
@@ -366,7 +372,7 @@ mir_print_instruction(midgard_instruction *ins)
if (ins->src[1] != ~0) {
pan_print_alu_type(ins->src_types[1], stdout);
- mir_print_swizzle(ins->swizzle[1]);
+ mir_print_swizzle(ins->swizzle[1], ins->src_types[1]);
}
}
@@ -376,7 +382,7 @@ mir_print_instruction(midgard_instruction *ins)
if (ins->src[c] != ~0) {
pan_print_alu_type(ins->src_types[c], stdout);
- mir_print_swizzle(ins->swizzle[c]);
+ mir_print_swizzle(ins->swizzle[c], ins->src_types[c]);
}
}