The memory layout doesn't change in this sort of cast, and this is a common construct when transforming normal and tangents.
float3 normal = input.normal * (float3x3)skinTfm;
no matching conversion for functional-style cast from 'metal::float4x4' (aka 'matrix<float, 4, 4>') to 'metal::float3x3' (aka 'matrix<float, 3, 3>')