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...