ir3: Properly validate pcopy reg sizes
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12033>
This commit is contained in:
@@ -185,6 +185,10 @@ validate_instr(struct ir3_validate_ctx *ctx, struct ir3_instruction *instr)
|
||||
/* handled below */
|
||||
} else if (opc_cat(instr->opc) == 0) {
|
||||
/* end/chmask/etc are allowed to have different size sources */
|
||||
} else if (instr->opc == OPC_META_PARALLEL_COPY) {
|
||||
/* pcopy sources have to match with their destination but can have
|
||||
* different size.
|
||||
*/
|
||||
} else if (n > 0) {
|
||||
validate_assert(ctx, (last_reg->flags & IR3_REG_HALF) ==
|
||||
(reg->flags & IR3_REG_HALF));
|
||||
@@ -322,6 +326,13 @@ validate_instr(struct ir3_validate_ctx *ctx, struct ir3_instruction *instr)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
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]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user