I am recreating the review from https://reviews.llvm.org/D59426 that seem to get lost somehow.
The idea is to be able to allow creating vector literals from other vectors.
Example from reported bug PR41010
kernel void test(__global float4 *out)
{
float4 a = (float4)(1.0f, 2.0f, 3.0f, 4.0f);
float4 v = (float4)(a.s23, a.s01);
*out = v;
}