Add the member integer_to_sse to processor_cost as a cost simulation for movd/pinsrd...
authorliuhongt <hongtao.liu@intel.com>
Fri, 26 Mar 2021 02:56:47 +0000 (10:56 +0800)
committerliuhongt <hongtao.liu@intel.com>
Wed, 28 Jul 2021 02:48:39 +0000 (10:48 +0800)
commit872da9a6f664a06d73c987aa0cb2e5b830158a10
tree05c56597a356b312b6f5e5396d96916db40ba97a
parentaf3f12e6e869adcbb1cec09cedba627d4bbf69a4
Add the member integer_to_sse to processor_cost as a cost simulation for movd/pinsrd. It will be used to calculate the cost of vec_construct.

gcc/ChangeLog:

PR target/99881
* config/i386/i386.h (processor_costs): Add new member
integer_to_sse.
* config/i386/x86-tune-costs.h (ix86_size_cost, i386_cost,
i486_cost, pentium_cost, lakemont_cost, pentiumpro_cost,
geode_cost, k6_cost, athlon_cost, k8_cost, amdfam10_cost,
bdver_cost, znver1_cost, znver2_cost, znver3_cost,
btver1_cost, btver2_cost, btver3_cost, pentium4_cost,
nocona_cost, atom_cost, atom_cost, slm_cost, intel_cost,
generic_cost, core_cost): Initialize integer_to_sse same value
as sse_op.
(skylake_cost): Initialize integer_to_sse twice as much as sse_op.
* config/i386/i386.c (ix86_builtin_vectorization_cost):
Use integer_to_sse instead of sse_op to calculate the cost of
vec_construct.

gcc/testsuite/ChangeLog:

PR target/99881
* gcc.target/i386/pr99881.c: New test.
gcc/config/i386/i386.c
gcc/config/i386/i386.h
gcc/config/i386/x86-tune-costs.h
gcc/testsuite/gcc.target/i386/pr99881.c [new file with mode: 0644]