https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114211
--- Comment #9 from Uroš Bizjak <ubizjak at gmail dot com> --- Noticed this in passing: --> movq %rcx, %rdx addq v(%rip), %rax adcq v+8(%rip), %rdx vmovq %rax, %xmm1 vpinsrq $1, %rdx, %xmm1, %xmm0 We could use %rcx instead of %rdx to eliminate the marked move. This is an artefact of post-reload split of *add<dwi>3_doubleword. The _doubleword patterns use only general regs, so they could be split before reload as well. IIRC, there were some minor RA problems with the later approach, but as years passed and LRA improved, perhaps the split point can be moved before reload. Something to try (again) for gcc-15. It is just the case of using ix86_pre_reload_split instead of reload_completed.