https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89071
--- Comment #12 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Peter Cordes from comment #10) > It also bizarrely uses it for VMOVSS, which gcc should only emit if it > actually wants to merge (right?). *If* this part of the patch isn't a bug > > - return "vmovss\t{%1, %0, %0|%0, %0, %1}"; > + return "vmovss\t{%d1, %0|%0, %d1}"; > > then even better would be vmovaps %1, %0 (which can benefit from > mov-elimination, and doesn't need a port-5-only ALU uop.) Same for vmovsd > of course. This is actually overridden in mode calculations, where it is disabled for TARGET_SSE_PARTIAL_REG_DEPENDENCY targets.