This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/81389] _mm_cmpestri segfault on -O0
- From: "rockeet at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 14 Aug 2017 07:38:30 +0000
- Subject: [Bug target/81389] _mm_cmpestri segfault on -O0
- Auto-submitted: auto-generated
- References: <bug-81389-4@http.gcc.gnu.org/bugzilla/>
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)