diff options
author | liuhongt <hongtao.liu@intel.com> | 2021-09-08 16:19:37 +0800 |
---|---|---|
committer | liuhongt <hongtao.liu@intel.com> | 2021-09-09 09:33:40 +0800 |
commit | 60eec23b5eda0f350e572586eee738eab0804a74 (patch) | |
tree | 2b6f7a765bac97ef89278cfb643d2166181bddd1 /gcc/tree-ssa-loop-im.c | |
parent | b6db7cd41ccf821ffb10ff4f18845465e98803cd (diff) | |
download | gcc-60eec23b5eda0f350e572586eee738eab0804a74.zip gcc-60eec23b5eda0f350e572586eee738eab0804a74.tar.gz gcc-60eec23b5eda0f350e572586eee738eab0804a74.tar.bz2 |
Optimize vec_extract for 256/512-bit vector when index exceeds the lower 128 bits.
- vextracti32x8 $0x1, %zmm0, %ymm0
- vmovd %xmm0, %eax
+ valignd $8, %zmm0, %zmm0, %zmm1
+ vmovd %xmm1, %eax
- vextracti32x8 $0x1, %zmm0, %ymm0
- vextracti128 $0x1, %ymm0, %xmm0
- vpextrd $3, %xmm0, %eax
+ valignd $15, %zmm0, %zmm0, %zmm1
+ vmovd %xmm1, %eax
- vextractf64x2 $0x1, %ymm0, %xmm0
+ valignq $2, %ymm0, %ymm0, %ymm0
- vextractf64x4 $0x1, %zmm0, %ymm0
- vextractf64x2 $0x1, %ymm0, %xmm0
- vunpckhpd %xmm0, %xmm0, %xmm0
+ valignq $7, %zmm0, %zmm0, %zmm0
gcc/ChangeLog:
PR target/91103
* config/i386/sse.md (*vec_extract<mode><ssescalarmodelower>_valign):
New define_insn.
gcc/testsuite/ChangeLog:
PR target/91103
* gcc.target/i386/pr91103-1.c: New test.
* gcc.target/i386/pr91103-2.c: New test.
Diffstat (limited to 'gcc/tree-ssa-loop-im.c')
0 files changed, 0 insertions, 0 deletions