https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81389
rockeet <rockeet at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |REOPENED
Resolution|INVALID |---
--- Comment #11 from rockeet <rockeet at gmail dot com> ---
function proto type of _mm_cmpestri is:
int _mm_cmpestri (__m128i __X, int __LX, __m128i __Y, int __LY, const int __M)
not
int _mm_cmpestri (__m128i_u __X, int __LX, __m128i __Y, int __LY, const int
__M)
-----------------------------------------------------------
I have greped `__m128i_u`, result:
emmintrin.h:typedef long long __m128i_u __attribute__ ((__vector_size__ (16),
__may_alias__, __aligned__ (1)));
emmintrin.h:_mm_loadu_si128 (__m128i_u const *__P)
emmintrin.h:_mm_loadl_epi64 (__m128i_u const *__P)
emmintrin.h:_mm_storeu_si128 (__m128i_u *__P, __m128i __B)
emmintrin.h:_mm_storel_epi64 (__m128i_u *__P, __m128i __B)
I have also greped `_mm_cmpestri`, result:
smmintrin.h:_mm_cmpestri (__m128i __X, int __LX, __m128i __Y, int __LY, const
int __M)
--------------------------^^^^^^^
smmintrin.h:#define _mm_cmpestri(X, LX, Y, LY, M)
\
----------------------------------------------------------
Maybe gcc should add an intrinsic like `_mm_cmpestri_u` for memory operand(does
not require memory align).
This can easily fix this issue, and also works for C (C has no function
overload)