Issue |
91247
|
Summary |
[ppc64] SSE/VSX wrapper missing _mm_loadu_si64 function
|
Labels |
new issue
|
Assignees |
|
Reporter |
madscientist159
|
The SSE/VSX wrappers for ppc64[el] are missing the `_mm_loadu_si64()` function. This function appears to largely be an alias of `_mm_set_epi64()`, with an explicit unaligned load capability. However, `_mm_set_epi64()` also allows unaligned load in practice, and the ppc64[el] wrapper function for `_mm_set_epi64()` already enabled unaligned loads on POWER7+.
It appears the needed function is as follows -- this was tested on a Talos II workstation (POWER9) in Skia and functions correctly:
```
/* Load signed 64-bit integer from P into vector element 0. The address need not be 16-byte aligned. */
extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_loadu_si64 (void const *__P)
{
return _mm_set_epi64((__m64)0LL, *(__m64 *)__P);
}
```
If desired I can create a merge request to add this function in to `emmintrin.h`.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs