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.