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

            Bug ID: 122095
           Summary: Missed optimization for _mm_insert_xxx
           Product: gcc
           Version: 15.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mserdarsanli at gmail dot com
  Target Milestone: ---

Missed optimization for _mm_insert_epi8 (and other similar intrinsics like
_mm_insert_epi16)

Sample Code:

void ins(__m128i *s1)
{
    *s1 = _mm_insert_epi8(*s1, 10, 1);
}

GCC generated assembly:

ins(long long vector[2]*):
        vmovdqa xmm0, XMMWORD PTR [rdi]
        mov     eax, 10
        vpinsrb xmm0, xmm0, eax, 1
        vmovdqa XMMWORD PTR [rdi], xmm0
        ret

Clang generated assembly:

ins(long long vector[2]*):
        mov     byte ptr [rdi + 1], 10
        ret

Reply via email to