This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/78102] [5/6/7 regression] GCC refuses to generate PCMPEQQ instruction for SSE4.1
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 25 Oct 2016 07:42:04 +0000
- Subject: [Bug target/78102] [5/6/7 regression] GCC refuses to generate PCMPEQQ instruction for SSE4.1
- Auto-submitted: auto-generated
- References: <bug-78102-4@http.gcc.gnu.org/bugzilla/>
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.