https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77399
--- Comment #8 from Alexander Monakov <amonakov at gcc dot gnu.org> --- > The extension is closely modeled after openCL Hm, that doesn't sound right: gcc had vector types long before OpenCL was even a thing; I believe it's modeled after Altivec actually: the discrepancy between C-style casts on scalar and vector types definitely comes from Altivec. > IIRC openCL uses "intrinsics" for these kind of operations? Yes, in OpenCL there's no implicit casts for vector types, and one has to use built-in functions like 'convert_float4'. Also worth mentioning that Clang provides __builtin_convertvector(arg, type) for casting.