One side effect of this MR is that the indices in `struct vkd3d_shader_register` begin having a different meaning depending on whether they have to be interpreted as SM4-like or SM6-like, which is dictated by the context (right now the context amounts to begin before or after `instruction_array_normalise_io_registers()`, but in the future it might become more complicated). I think this can be handled, but I don't find ideal. Maybe there should be a flag at some point of the `vkd3d_shader_instruction` structure tree that should keep track of that information? I don't know, just thinking out loud.