Description
Bugzilla Link | 43337 |
Version | unspecified |
OS | All |
Blocks | #17538 |
CC | @topperc,@zygoloid |
Extended Description
The following overloads of vec_sel are missing from <altivec.h>:
vector signed long long vec_sel(vector signed long long,
vector signed long long,
vector bool long long);
vector signed long long vec_sel(vector signed long long,
vector signed long long,
vector unsigned long long);
vector unsigned long long vec_sel(vector unsigned long long,
vector unsigned long long,
vector bool long long);
vector unsigned long long vec_sel(vector unsigned long long,
vector unsigned long long,
vector unsigned long long);
Worse, the PPC wrapper <emmintrin.h> relies on one of these in the implementation of _mm_sll_epi64.
We currently "get away with" this due to the broken default of -flax-vector-conversions, but builds using <emmintrin.h> under Power8 fail with -fno-lax-vector-conversions due to this (and other bugs in our intrinsics headers).