https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85328
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 43907 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43907&action=edit gcc8-pr85328.patch Many patterns rely on ix86_hard_regno_mode_ok not allowing < 512-bit vector modes in xmm16+ registers. Unfortunately, the vec_extract_lo_* splitters provide a loophole for this, by creating e.g. on this testcase V32QImode xmm16 hard register which then is propagated into the vpand. The patch fixes that by avoiding that, essentially forcing the low half or quarter vector extraction from the zmm16+ registers to be a 512-bit move into the other register (which must be necessarily < xmm16.