Update {skylake,icelake,alderlake}_cost to add a bit preference to vector store.
authorCui,Lili <lili.cui@intel.com>
Wed, 8 Jun 2022 03:25:57 +0000 (11:25 +0800)
committerliuhongt <hongtao.liu@intel.com>
Thu, 9 Jun 2022 06:59:44 +0000 (14:59 +0800)
commit269edf4e5e6ab489730038f7e3495550623179fe
tree2a0dc0b8c5bddaa0aa9bf0c6a1f5748c3a0c1d00
parent2fc6e3d55f6080da3a43243f595bd1266595127d
Update {skylake,icelake,alderlake}_cost to add a bit preference to vector store.

Since the interger vector construction cost has changed, we need to adjust the
load and store costs for intel processers.

With the patch applied
538.imagic_r:gets ~6% improvement on ADL for multicopy.
525.x264_r  :gets ~2% improvement on ADL and ICX for multicopy.
with no measurable changes for other benchmarks.

gcc/ChangeLog

PR target/105493
* config/i386/x86-tune-costs.h (skylake_cost): Raise the gpr load cost
from 4 to 6 and gpr store cost from 6 to 8. Change SSE loads and
unaligned loads cost from {6, 6, 6, 10, 20} to {8, 8, 8, 8, 16}.
(icelake_cost): Ditto.
(alderlake_cost): Raise the gpr store cost from 6 to 8 and SSE loads,
stores and unaligned stores cost from {6, 6, 6, 10, 15} to
{8, 8, 8, 10, 15}.

gcc/testsuite/

PR target/105493
* gcc.target/i386/pr91446.c: Adjust to expect vectorization
* gcc.target/i386/pr99881.c: XFAIL.
* gcc.target/i386/pr105493.c: New.
* g++.target/i386/pr105638.C: Use other sequence checks
instead of vpxor, because code generation changed.
gcc/config/i386/x86-tune-costs.h
gcc/testsuite/g++.target/i386/pr105638.C
gcc/testsuite/gcc.target/i386/pr105493.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr91446.c
gcc/testsuite/gcc.target/i386/pr99881.c