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)