Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/tpf.c:
+static void sm4_numeric_register_from_deref(struct hlsl_ctx *ctx, struct vkd3d_shader_register *reg, + enum vkd3d_shader_register_type type, uint32_t *writemask, const struct hlsl_deref *deref, + struct sm4_instruction *sm4_instr) +{ + const struct hlsl_ir_var *var = deref->var; + unsigned int offset_const_deref; + + reg->type = type; + reg->idx[0].offset = var->regs[HLSL_REGSET_NUMERIC].id; + reg->dimension = VSIR_DIMENSION_VEC4; + + assert(var->regs[HLSL_REGSET_NUMERIC].allocated); + + if (!var->indexable) + { + offset_const_deref = hlsl_offset_from_deref_safe(ctx, deref); I am a bit confused because here I would have assumed that the non-indexable execution path should have been identical to what happened before this commit. Instead here you're adding `offset_const_deref` and a few lines below you're combining writemasks, and I don't think I'm seeing this operations in the removed lines. Are you also fixing a previous bug here in the non-indexable case? Or maybe I'm just missing something obvious...
-- https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/435#note_50629