https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102758
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Last reconfirmed| |2021-10-15 Status|UNCONFIRMED |NEW Known to work| |11.2.0 Target Milestone|--- |12.0 Summary|[x86] Failure to use |[12 Regression] Failure to |registers optimally when |use registers optimally |swapping between |with return values (2 |(identically represented) |operands related) |vector types | Known to fail| |12.0 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- GCC 11.2.0 (and before) produces: movdqa .LC0(%rip), %xmm0 paddw %xmm1, %xmm0 ret Which is what you want. I don't know why trunk changed ...