This commit converts the vec_splats functions in altivec.h to macros, solving an issue where vec_splats calls could not assign to variables of static storage duration, such as:
static vector int x = vec_splats(1);
Since vec_splats was implemented as a function, code such as in this example would result in a compile-time error in clang. This differs from gcc, which allows this construct.
This updates tests accordingly, and fixes PR44276 and PR44455. Sorry for the delay in getting this to you.
I am not sure if this is by intention. It is not semantics the same with this change. Before the change, if VSX is off, and POWER8_VECTOR && powerpc64 is on, vector signed/unsigned long long, signed/unsigned __int128 is not a valid candidate of vec_splats. But with this patch, they are.