diff options
author | Hongtao Liu <hongtao.liu@intel.com> | 2019-06-14 15:41:43 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2019-06-14 08:41:43 -0700 |
commit | 66574c5374ecbd358e68d63922927fc03f2f232a (patch) | |
tree | 20a9feee570cc504bf8347e92937e6e4507fa0b9 /depcomp | |
parent | 9f119e29269b9a63f36c014b1429e96c133148b4 (diff) | |
download | gcc-66574c5374ecbd358e68d63922927fc03f2f232a.zip gcc-66574c5374ecbd358e68d63922927fc03f2f232a.tar.gz gcc-66574c5374ecbd358e68d63922927fc03f2f232a.tar.bz2 |
i386: Update SSE <-> integer move costs
Since inline_secondary_memory_needed has
/* ??? This is a lie. We do have moves between mmx/general, and for
mmx/sse2. But by saying we need secondary memory we discourage the
register allocator from using the mmx registers unless needed. */
if (MMX_CLASS_P (class1) != MMX_CLASS_P (class2))
return true;
moves between MMX and non-MMX units require secondary memory. There
is no need to check moves between MMX and integer units.
struct processor_costs has:
const int mmxsse_to_integer; /* cost of moving mmxsse register to
integer. */
const int ssemmx_to_integer; /* cost of moving integer to mmxsse register. */
This patch also renames mmxsse_to_integer to sse_to_integer and
ssemmx_to_integer to integer_to_sse.
Tested on Linux/x86-64.
PR target/90877
* config/i386/i386-features.c
(dimode_scalar_chain::compute_convert_gain): Replace
mmxsse_to_integer with sse_to_integer.
* config/i386/i386.c (ix86_register_move_cost): Verify that
moves between MMX and non-MMX units require secondary memory.
Correct costs of moves between SSE and integer units.
* config/i386/i386.h (processor_costs): Rename cost of moving
SSE register to integer to sse_to_integer. Rename cost of
moving integer register to SSE to integer_to_sse.
From-SVN: r272294
Diffstat (limited to 'depcomp')
0 files changed, 0 insertions, 0 deletions