<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/123605>123605</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Add missing F32->I64 vec_signede, F32->I64 vec_signedo, F32->U64 vec_unsignede, and F32->U64 vec_unsignedo to altivec.h header
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
johnplatts
</td>
</tr>
</table>
<pre>
GCC 15 has removed the __builtin_vsx_xvcvspsxds builtin and replaced the __builtin_vsx_xvcvspsxds builtin with F32->I64 vec_signede/vec_signedo intrinsics.
GCC 15 has also removed the __builtin_vsx_xvcvspuxds builtin and replaced the __builtin_vsx_xvcvspuxds builtin with F32->U64 vec_unsignede/vec_unsignedo intrinsics.
Clang already has the F64->I32 vec_signede/vec_signedo and F64->U32 vec_unsignede/vec_unsignedo intrinsics, but not the F32->I64 vec_signede/vec_signedo or the F32->U64 vec_unsignede/vec_unsignedo intrinsics.
The following functions need to be added to clang/lib/Headers/altivec.h:
- ```vector signed long long vec_signede(vector float a)```: equivalent to __builtin_vsx_xvcvspsxds on big-endian VSX and equivalent to `__builtin_vsx_xvcvspsxds(vec_sld(a, a, 4))` on little-endian VSX
- ```vector signed long long vec_signedo(vector float a)```: equivalent to __builtin_vsx_xvcvspsxds on little-endian VSX and equivalent to `__builtin_vsx_xvcvspsxds(vec_sld(a, a, 4))` on big-endian VSX
- ```vector unsigned long long vec_unsignede(vector float a)```: equivalent to __builtin_vsx_xvcvspuxds on big-endian VSX and equivalent to `__builtin_vsx_xvcvspuxds(vec_sld(a, a, 4))` on little-endian VSX
- ```vector unsigned long long vec_unsignedo(vector float a)```: equivalent to __builtin_vsx_xvcvspuxds on little-endian VSX and equivalent to `__builtin_vsx_xvcvspuxds(vec_sld(a, a, 4))` on big-endian VSX
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0lUFz2jwQhn-NfNmBMbJs4OADH1_d9tym0xsjS2tbGSFRS3KSf9-RIQm00JAmnWEMZne9z7urec2dU61BLEn-H8n_T3jwne3LW9uZnebeu6S28qH8uF7DLIeOO-hxaweU4DuEzaYOSntlNoO739wPYnA7dy8dHP4GbiT0uNNcXFtxp3wHVUYnJPvwuWAwoNiMiBIJrZ7vLCjje2WcEm5K0hVJV0eQXDv7Iml4NWm4RHpzIA3mlPXx_gztWnPTAtc9cvkwQseuVcFG5Rn9g_LIeki8OSRe05jQNdTBg7F-3-uaKdv-OPcvdH7tEBqrtb1TpoUmGOGVNQ4MxkFbqBG4lPvfIs6E0EqrmtDqE3KJvSO04tqrAcW0I1l85ARIke4_Awpve9h3B21Nu7-cCFocshptuQdO6PKpnmQrwB9BDVyj8ZHh4gm1BmrVTtBIxQ18-_J93MNpMSnSS_V7jI3TktAFj7sYLyzSjECxgVbeazzq8Vq19h3V_gbzDwSfTvSs2sez9YveoyP4ZsXhjfsN77vfFxS_x47D23d8tejTqSayzOQyW_IEy9k8m2fzYjmjSVdm-WKZ07rhTSPkkhf1ImPzIueLhgnWzOtElTSleTqj6YyyWU6nGWNzIRaMMV7UTSoIS3HLlZ5qPWyntm8T5VzAckazIs0TzWvUbnzTUWrwDsYooTS--PoyFk3q0DrCUq2cd8-P8cprLFdSwlY5F33skneuz0fsUeSMh673ln4-buMOnhwQutEVk9DrsvN-56Il0orQqlW-C_VU2G10UD08fk12vb1F4QmtRsHRUA8TGUr6MwAA__9Q9rXq">