diff options
author | Alyssa Rosenzweig <[email protected]> | 2020-04-28 17:44:19 -0400 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-04-29 15:35:54 +0000 |
commit | c571d31b8b268aa22ebeb134589150d08db892b2 (patch) | |
tree | a0c482bb0d1fe0e8febbe6c9087d99a93bed3186 /src | |
parent | 95664b177f4effeae9e3e3cc1cc97629a0d1db6d (diff) |
pan/mdg: Ensure fdot is scalar out in disasm
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4793>
Diffstat (limited to 'src')
-rw-r--r-- | src/panfrost/midgard/disassemble.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/panfrost/midgard/disassemble.c b/src/panfrost/midgard/disassemble.c index 8c7f718674f..ddcd41706af 100644 --- a/src/panfrost/midgard/disassemble.c +++ b/src/panfrost/midgard/disassemble.c @@ -631,6 +631,17 @@ print_vector_field(FILE *fp, const char *name, uint16_t *words, uint16_t reg_wor fprintf(fp, "/* do%u */ ", override); } + /* Instructions like fdot4 do *not* replicate, ensure the + * mask is of only a single component */ + + unsigned rep = GET_CHANNEL_COUNT(alu_opcode_props[alu_field->op].props); + + if (rep) { + unsigned comp_mask = condense_writemask(mask, bits_for_mode(mode)); + unsigned num_comp = util_bitcount(comp_mask); + if (num_comp != 1) + fprintf(fp, "/* err too many components */"); + } print_mask(fp, mask, bits_for_mode(mode), override); fprintf(fp, ", "); |