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)

Reply via email to