LLVM supports applying conversion instructions to vectors of the same number of elements (fptrunc, fptosi, etc.) but currently there is no way for a Clang user to cause such instructions to be generated when using builtin vector types.
C-style casting on vectors is already defined in terms of bitcasts, and so cannot be used for these conversions as well (without leading to a very confusing set of semantics). As a result, I'd like to add this new intrinsic (patterned after the OpenCL __builtin_astype intrinsic). This will aid the creation of vector intrinsic headers that create generic IR instead of target-dependent intrinsics (in other words, this is a generic _mm_cvtepi32_ps).
Please review.
No, this should not be a CastExpr.