[Bug target/91560] Try harder for AVX non-AVX2 cross-lane permutations
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Aug 27 13:57:00 GMT 2019
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]
More information about the Gcc-bugs
mailing list