diff options
author | liuhongt <hongtao.liu@intel.com> | 2024-06-11 21:22:42 +0800 |
---|---|---|
committer | liuhongt <hongtao.liu@intel.com> | 2024-06-14 15:02:42 +0800 |
commit | d3fae2bea034edb001cd45d1d86c5ceef146899b (patch) | |
tree | 7b4042dc72dac54f49ed8c397f1d39f412688d10 /libgcc | |
parent | 8b69efd9819f86b973d7a550e987ce455fce6d62 (diff) | |
download | gcc-d3fae2bea034edb001cd45d1d86c5ceef146899b.zip gcc-d3fae2bea034edb001cd45d1d86c5ceef146899b.tar.gz gcc-d3fae2bea034edb001cd45d1d86c5ceef146899b.tar.bz2 |
Adjust ix86_rtx_costs for pternlog_operand_p.
r15-1100-gec985bc97a0157 improves handling of ternlog instructions,
now GCC can recognize lots of pternlog_operand with different
variants.
The patch adjust rtx_costs for that, so pass_combine can
reasonably generate more optimal vpternlog instructions.
.i.e
for avx512f-vpternlog-3.c, with the patch, 2 vpternlog are combined into one.
1532,1533c1526
< vpternlogd $168, %zmm1, %zmm0, %zmm2
< vpternlogd $0x55, %zmm2, %zmm2, %zmm2
> vpternlogd $87, %zmm1, %zmm0, %zmm2
1732,1733c1725,1726
< vpand %xmm0, %xmm1, %xmm0
< vpternlogd $0x55, %zmm0, %zmm0, %zmm0
> vpternlogd $63, %zmm1, %zmm0, %zmm1
> vmovdqa %xmm1, %xmm0
1804,1805c1797
< vpternlogd $188, %zmm2, %zmm0, %zmm1
< vpternlogd $0x55, %zmm1, %zmm1, %zmm1
> vpternlogd $37, %zmm0, %zmm2, %zmm1
gcc/ChangeLog:
* config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
pternlog_operand under AVX512, also adjust VEC_DUPLICATE
according since vec_dup:mem can't be that cheap.
gcc/testsuite/ChangeLog:
* gcc.target/i386/avx2-pr98461.c: Scan either notl or
vpternlog.
* gcc.target/i386/avx512f-pr96891-3.c: Also scan for inversed
condition.
* gcc.target/i386/avx512f-vpternlogd-3.c: Adjust vpternlog
number to 673.
* gcc.target/i386/avx512f-vpternlogd-4.c: Ditto.
* gcc.target/i386/avx512f-vpternlogd-5.c: Ditto.
* gcc.target/i386/sse2-v1ti-vne.c: Add -mno-avx512f.
Diffstat (limited to 'libgcc')
0 files changed, 0 insertions, 0 deletions