HLSLAggregateSplatCast should always contain an lvalue to rvalue cast.
int1 A = {1};
int4 B = (int4)A;
In this example there is a missing LValue to RValue cast, so the truncation is resulting in an LValue. But before the HLSLVectorTruncation there should be an LValue to RValue cast.
-CStyleCastExpr 0x193fb1c0 <col:15, col:23> 'float4':'vector<float, 4>' <HLSLAggregateSplatCast>
| `-ImplicitCastExpr 0x193fb1a8 <col:23> 'float' lvalue <HLSLVectorTruncation> part_of_explicit_cast
| `-DeclRefExpr 0x193fb170 <col:23> 'float1':'vector<float, 1>' lvalue ParmVar 0x193faec8 'I4' 'float1':'vector<float, 1>'