https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80425
--- Comment #6 from Uroš Bizjak <ubizjak at gmail dot com> --- Mostly fixed, an issue from Comment #4 remains, although *zero_extendsidi2 pattern now reads: (define_insn "*zero_extendsidi2" [(set (match_operand:DI 0 "nonimmediate_operand" "=r,?r,?o,r ,o,?*Ym,?!*y,?r ,?r,?*Yi,*x,*x,*v,*r") (zero_extend:DI (match_operand:SI 1 "x86_64_zext_operand" "0 ,rm,r ,rmWz,0,r ,m ,*Yj,*x,r ,m ,*x,*v,*k")))] LRA starts with: 7: r96:DI=zero_extend([`a']) 12: r92:V8DI#0=r95:V16SI>>r96:DI REG_DEAD r96:DI REG_DEAD r95:V16SI and creates: 7: ax:DI=zero_extend([`a']) 21: [bp:DI-0x38]=ax:DI 22: xmm1:DI=[bp:DI-0x38] 12: xmm0:V16SI=xmm0:V16SI>>xmm1:DI xmm0 could be zero-extended directly from memory.