From b833702cc1b53cb6e0f0e486a56aa62d9650e79b Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 11 May 2020 15:33:43 -0400 Subject: [PATCH] pan/mdg: Print constant vectors less wrong For !32-bit types, we need to pay attention to rep_low/high/half to determine the effective swizzle. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/panfrost/midgard/disassemble.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/panfrost/midgard/disassemble.c b/src/panfrost/midgard/disassemble.c index 30939b21d9c..ce70cbc561d 100644 --- a/src/panfrost/midgard/disassemble.c +++ b/src/panfrost/midgard/disassemble.c @@ -365,10 +365,7 @@ print_vector_constants(FILE *fp, unsigned src_binary, comp_mask = effective_writemask(alu, condense_writemask(alu->mask, bits)); num_comp = util_bitcount(comp_mask); - fprintf(fp, "#"); - if (num_comp > 1) - fprintf(fp, "vec%d(", num_comp); - + fprintf(fp, "<"); bool first = true; for (unsigned i = 0; i < max_comp; ++i) { @@ -376,6 +373,17 @@ print_vector_constants(FILE *fp, unsigned src_binary, unsigned c = (src->swizzle >> (i * 2)) & 3; + if (bits == 16 && !src->half) { + if (i < 4) + c += (src->rep_high * 4); + else + c += (!src->rep_low * 4); + } else if (bits == 32 && !src->half) { + /* Implicitly ok */ + } else { + printf(" (%d%d%d)", src->rep_low, src->rep_high, src->half); + } + if (first) first = false; else @@ -386,7 +394,7 @@ print_vector_constants(FILE *fp, unsigned src_binary, } if (num_comp > 1) - fprintf(fp, ")"); + fprintf(fp, ">"); } static void -- 2.30.2