https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91560
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |hjl.tools at gmail dot com, | |uros at gcc dot gnu.org --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- For f1 clang emits: vpermilps $144, %xmm1, %xmm2 # xmm2 = xmm1[0,0,1,2] vextractf128 $1, %ymm1, %xmm3 vblendps $8, %xmm1, %xmm3, %xmm1 # xmm1 = xmm3[0,1,2],xmm1[3] vpermilps $147, %xmm1, %xmm1 # xmm1 = xmm1[3,0,1,2] vinsertf128 $1, %xmm1, %ymm2, %ymm1 vblendps $1, %ymm0, %ymm1, %ymm0 # ymm0 = ymm0[0],ymm1[1,2,3,4,5,6,7] and for f2: vextractf128 $1, %ymm1, %xmm2 vshufpd $1, %xmm2, %xmm1, %xmm2 # xmm2 = xmm1[1],xmm2[0] vmovddup %xmm1, %xmm1 # xmm1 = xmm1[0,0] vinsertf128 $1, %xmm2, %ymm1, %ymm1 vblendps $3, %ymm0, %ymm1, %ymm0 # ymm0 = ymm0[0,1],ymm1[2,3,4,5,6,7]