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

            Bug ID: 122715
           Summary: X86 Missed optimization of _mm_avg_*(x, x) --> x
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: xxs_chy at outlook dot com
  Target Milestone: ---

Full reproducer/comparison: https://godbolt.org/z/9vjaEM9s7
A simple testcase:

v4u16 src(v4u16 x) {
    return (v4u16)_mm_avg_pu16((__m64)x, (__m64)x);
}

Clang produces a single ret instruction.
GCC produces one more pavgw instruction.

Reply via email to