Hi Tim,
This patch is to fix a pattern match failure when handling IR like,
%tmp2 = fptosi <4 x double> %tmp1 to <4 x i16>
Failure reason is, ReconstructShuffle() wrongly created a CONCAT_VECTOR trying to concat 2 of v2i32 into v4i16. This patch can fix this issue and try to generate UZP1 instead of lots of MOV and INS. Please review.
This condition check is moved from below to here, because without this check, for dags like(This can be created from lowering 'tmp2 = fptosi <4 x double> %tmp1 to <4 x i16>'),
That build_vector node will be lowering to a concat_vector combining 2 of v2i32 into v4i16, which is pattern match failed.