summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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));
+ }
}
}
}