https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64110
--- Comment #13 from Vladimir Makarov <vmakarov at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #11) > Looking at the generated assembly, I see there: > movw %di, -80(%rbp) > vpbroadcastw -80(%rbp), %ymm1 > vmovdqa %ymm1, -80(%rbp) > I'd have expected > vmovd %edi, %xmm1 > vpbroadcastw %xmm1, %ymm1 > vmovdqa %ymm1, -80(%rbp) > Is there some bug in the *vec_dupv16hi pattern that LRA can't use the !r > alternative? %di should be valid nonimmediate_operand in HImode. For e.g. I know about the problem. It is coming from a different treatment of ! in LRA and reload. I am going to work on this but as the fix would be in very sensitive LRA part. I am afraid to fix it before my vacation. So probably it will be solved only in January.