https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118984
--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Maxim Egorushkin from comment #5) > (In reply to Andrew Pinski from comment #2) > > Register allocation is NP complete problem after all. > > vmovdqa instruction probably intends to turn a ymm register into a xmm > register by zeroing all the higher bits beyond xmm. But the following vpaddq > instruction ignores the higher bits in its xmm arguments, and the xmm result > has its all higher bits set to 0. Note the zeroing part is not really relevant here. vmovdqa is an AVX instruction (which has been extended for AVX2 which does the zeroing). It is used to move from one register to another for 128bits wide.