It may have gotten lost a bit in the discussion, but to be clear, I think this these patches should be split, specifically in parts that introduce parsing the dimension in shader_sm4_read_src_param() and shader_sm4_read_dst_param(), and in parts that actually change behaviour.
I'm not entirely convinced about the benefits of renaming VKD3D_SM4_SWIZZLE_NONE to VKD3D_SM4_SWIZZLE_MASK4, but in any case it seems largely orthogonal to the rest of this MR, so the expedient thing to do may be to split that off into its own MR and argue about its merits there.