On latest main I get the wrong result when loading elements from fp16 matrix types stored in structured buffers.
struct Data
{
float16_t4x4 a;
};
StructuredBuffer<Data> buf : register(t1);
...
float16_t2 b = buf.a[0].xy;
This loads elements a[0][0] and a[0][2], not a[0][1] as expected.
Looking at the generated code it looks like it thinks there is 4B between each element not 2B.
See attached example HLSL and generated DXIL.
dxc-float16_t4x4-example.zip