summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConnor Abbott <cwabbott0@gmail.com>2023-03-02 13:35:10 +0100
committerMarge Bot <emma+marge@anholt.net>2024-04-26 12:55:13 +0000
commitec036fe51e18754cc3fbb8903a5be9b001259c36 (patch)
tree5bcb65984d5e8312f75cbc73216aa0422acf26d3
parentca91b58457ba671b3a7338c7f7a5a00d8ebaed27 (diff)
ir3: Fix shared parallel copy validation
It's legal to have copies from immediate/const to shared, which was asserting. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22075>
-rw-r--r--src/freedreno/ir3/ir3_validate.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/freedreno/ir3/ir3_validate.c b/src/freedreno/ir3/ir3_validate.c
index 55d721a3bd5..63e0680fd8d 100644
--- a/src/freedreno/ir3/ir3_validate.c
+++ b/src/freedreno/ir3/ir3_validate.c
@@ -389,8 +389,14 @@ validate_instr(struct ir3_validate_ctx *ctx, struct ir3_instruction *instr)
if (instr->opc == OPC_META_PARALLEL_COPY) {
foreach_src_n (src, n, instr) {
- validate_assert(ctx, reg_class_flags(src) ==
- reg_class_flags(instr->dsts[n]));
+ validate_assert(ctx, (src->flags & IR3_REG_HALF) ==
+ (instr->dsts[n]->flags & IR3_REG_HALF));
+ if (instr->dsts[n]->flags & IR3_REG_SHARED) {
+ validate_assert(ctx, src->flags & (IR3_REG_SHARED | IR3_REG_CONST |
+ IR3_REG_IMMED));
+ } else {
+ validate_assert(ctx, !(src->flags & IR3_REG_SHARED));
+ }
}
}
}