https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115021
Hu Lin <lin1.hu at intel dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |lin1.hu at intel dot com --- Comment #3 from Hu Lin <lin1.hu at intel dot com> --- I found compiler allocates mem to the third source register of vpternlog in IRA after commit f55cdce3f8dd8503e080e35be59c5f5390f6d95e. And it cause the generate code will be 8 .cfi_startproc 9 movl $4, %eax 10 vpsraw $5, %xmm0, %xmm2 11 vpbroadcastb %eax, %xmm1 12 movl $7, %eax 13 vpbroadcastb %eax, %xmm3 14 vmovdqa %xmm1, %xmm0 15 vpternlogd $120, %xmm3, %xmm2, %xmm0 16 vmovdqa %xmm3, -24(%rsp) 17 vpsubb %xmm1, %xmm0, %xmm0 18 ret And 6a67fdcb3f0cc8be47b49ddd246d0c50c3770800 changes the vector type from v16qi to v4si, leading to movv4si can't combine with the vpternlog in postreload, so the result is what you see now.