Module: vkd3d Branch: master Commit: bc9db34cdc8708c028062942a67511ee5d337e73 URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/bc9db34cdc8708c028062942a67511...
Author: Giovanni Mascellani gmascellani@codeweavers.com Date: Fri Dec 22 15:58:55 2023 +0100
vkd3d-shader/ir: Validate LABEL instructions.
---
libs/vkd3d-shader/ir.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
diff --git a/libs/vkd3d-shader/ir.c b/libs/vkd3d-shader/ir.c index 49d58053..a4bea461 100644 --- a/libs/vkd3d-shader/ir.c +++ b/libs/vkd3d-shader/ir.c @@ -2846,6 +2846,16 @@ static void vsir_validate_instruction(struct validation_context *ctx) --ctx->depth; break;
+ case VKD3DSIH_LABEL: + vsir_validate_cf_type(ctx, instruction, CF_TYPE_BLOCKS); + vsir_validate_dst_count(ctx, instruction, 0); + vsir_validate_src_count(ctx, instruction, 1); + if (instruction->src_count >= 1 && !vsir_register_is_label(&instruction->src[0].reg)) + validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_REGISTER_TYPE, + "Invalid register of type %#x in a LABEL instruction, expected LABEL.", + instruction->src[0].reg.type); + break; + default: break; }