https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87853
--- Comment #4 from Terry Guo <xuepeng.guo at intel dot com> ---
Thanks Derek for reporting. I can reproduce what Derek described and do think
this is a bug.
_mm_cmpgt_epi8 (__m128i __A, __m128i __B)
{
return (__m128i) ((__v16qi)__A > (__v16qi)__B);
}
This one performs signed comparison. But the below definition of __v16qi could
be signed char by default or implicitly changed to be unsigned char with option
-funsigned-char.
typedef char __v16qi __attribute__ ((__vector_size__ (16)));
We may need a new definition in gcc like:
typedef signed char __v16qs __attribute__ ((__vector_size__ (16)));
I will sort out a patch to test this idea.