There are some interfaces in altivec.h that are not compatible between Clang and XL (although Clang is compatible with GCC). Currently, we have found 3 but there may be others.
Clang/GCC signatures:
vector double vec_ctf(vector signed long long) vector double vec_ctf(vector unsigned long long) vector signed long long vec_cts(vector double) vector unsigned long long vec_ctu(vector double)
XL signatures:
vector float vec_ctf(vector signed long long) vector float vec_ctf(vector unsigned long long) vector signed int vec_cts(vector double) vector unsigned int vec_ctu(vector double)
This patch provides the XL behaviour under the __XL_COMPAT_ALTIVEC__ macro for users that rely on XL behaviour.
This only affects VSX version right? If so, can we move #ifdef __XL_COMPAT_ALTIVEC__ into #ifdef __VSX__?
Or even better only into the part of affected types, eg: vector unsinged long long?