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.

Reply via email to