summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2020-04-28 17:44:19 -0400
committerMarge Bot <[email protected]>2020-04-29 15:35:54 +0000
commitc571d31b8b268aa22ebeb134589150d08db892b2 (patch)
treea0c482bb0d1fe0e8febbe6c9087d99a93bed3186 /src
parent95664b177f4effeae9e3e3cc1cc97629a0d1db6d (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.c11
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, ", ");