This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/78102] [5/6/7 regression] GCC refuses to generate PCMPEQQ instruction for SSE4.1


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78102

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
             Target|                            |x86_64-*-*, i?86-*-*
   Target Milestone|---                         |5.5

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
IL before vector lowering:

pcmpeqq (const __m128i x, const __m128i y)
{
  vector(2) long int _4;

  <bb 2>:
  _4 = VEC_COND_EXPR <x_2(D) == y_3(D), { -1, -1 }, { 0, 0 }>;
  return _4;

}

I suppose sse4.1 has only equality compares but not relational ones.  We're
missing an optab for this special case and thus can't expand the above.

This means using GCC vector extensions in the header for the intrinsic was
a bad idea in this particular case.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]