https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78102
Bug ID: 78102 Summary: [5/6/7 regression] GCC refuses to generate PCMPEQQ instruction for SSE4.1 Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: vegorov13 at mail dot ru Target Milestone: --- Test case: https://godbolt.org/g/kmycx1 #include <x86intrin.h> __m128i pcmpeqq(const __m128i x, const __m128i y) { return _mm_cmpeq_epi64(x, y); } Compiled with -msse4.1. Expected result: PCMPEQQ instruction emitted. However I get non-vectorised code: movaps XMMWORD PTR [rbp-32], xmm0 mov rdx, QWORD PTR [rbp-16] mov rax, QWORD PTR [rbp-32] cmp rdx, rax setne al movzx eax, al sub rax, 1 mov QWORD PTR [rbp-72], rax movq xmm0, QWORD PTR [rbp-72] mov rdx, QWORD PTR [rbp-8] mov rax, QWORD PTR [rbp-24] cmp rdx, rax setne al movzx eax, al sub rax, 1 mov QWORD PTR [rbp-72], rax pinsrq xmm0, QWORD PTR [rbp-72], 1 If I use -msse4.2 instead, everything works fine. PCMPEQQ is a SSE4.1 instruction though.