diff options
author | hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-01-17 15:23:58 +0000 |
---|---|---|
committer | hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-01-17 15:23:58 +0000 |
commit | 2ea5890da3d091d59c1bbba9ca4ac9f9fa467432 (patch) | |
tree | 85cbf2b0c5da82944051e42957aaab5b6f8e81ad /gcc/ChangeLog | |
parent | 0116c9f8c82422f18446531245dac8347818ffc6 (diff) | |
download | gcc-2ea5890da3d091d59c1bbba9ca4ac9f9fa467432.tar.gz |
Add X86_TUNE_AVOID_LEA_FOR_ADDR
ix86_split_lea_for_addr transforms a single LEA instruction into a
series of MOV and ADD instructions. For
lea 0x400(%edx, %ecx, 8), %edx
we get
mov %ecx, %edx
add %ecx, %edx
add %ecx, %edx
add %ecx, %edx
add %ecx, %edx
add %ecx, %edx
add %ecx, %edx
add %ecx, %edx
add $0x400, %edx
For -mtune=intel, we want to turn on X86_TUNE_OPT_AGU, but avoid
ix86_split_lea_for_addr to optimize for both Haswell and Silvermont.
This patch adds X86_TUNE_AVOID_LEA_FOR_ADDR and PROCESSOR_INTEL.
We keep PROCESSOR_INTEL the same as PROCESSOR_SILVERMONT, except that
X86_TUNE_AVOID_LEA_FOR_ADDR isn't turned on for PROCESSOR_INTEL.
* config/i386/i386-c.c (ix86_target_macros_internal): Handle
PROCESSOR_INTEL. Treat like PROCESSOR_GENERIC.
* config/i386/i386.c (intel_memcpy): New. Duplicate slm_memcpy.
(intel_memset): New. Duplicate slm_memset.
(intel_cost): New. Duplicate slm_cost.
(m_INTEL): New macro.
(processor_target_table): Add "intel".
(ix86_option_override_internal): Replace PROCESSOR_SILVERMONT
with PROCESSOR_INTEL for "intel".
(ix86_lea_outperforms): Support PROCESSOR_INTEL. Duplicate
PROCESSOR_SILVERMONT.
(ix86_avoid_lea_for_addr): Check TARGET_AVOID_LEA_FOR_ADDR
instead of TARGET_OPT_AGU.
(ix86_issue_rate): Likewise.
(ix86_adjust_cost): Likewise.
(ia32_multipass_dfa_lookahead): Likewise.
(swap_top_of_ready_list): Likewise.
(ix86_sched_reorder): Likewise.
* config/i386/i386.h (TARGET_INTEL): New.
(TARGET_AVOID_LEA_FOR_ADDR): Likewise.
(processor_type): Add PROCESSOR_INTEL.
* config/i386/x86-tune.def: Support m_INTEL. Duplicate
m_SILVERMONT. Add X86_TUNE_AVOID_LEA_FOR_ADDR.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206717 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ChangeLog')
-rw-r--r-- | gcc/ChangeLog | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 21b597144f4..df6e491f0ff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,29 @@ +2014-01-17 H.J. Lu <hongjiu.lu@intel.com> + + * config/i386/i386-c.c (ix86_target_macros_internal): Handle + PROCESSOR_INTEL. Treat like PROCESSOR_GENERIC. + * config/i386/i386.c (intel_memcpy): New. Duplicate slm_memcpy. + (intel_memset): New. Duplicate slm_memset. + (intel_cost): New. Duplicate slm_cost. + (m_INTEL): New macro. + (processor_target_table): Add "intel". + (ix86_option_override_internal): Replace PROCESSOR_SILVERMONT + with PROCESSOR_INTEL for "intel". + (ix86_lea_outperforms): Support PROCESSOR_INTEL. Duplicate + PROCESSOR_SILVERMONT. + (ix86_avoid_lea_for_addr): Check TARGET_AVOID_LEA_FOR_ADDR + instead of TARGET_OPT_AGU. + (ix86_issue_rate): Likewise. + (ix86_adjust_cost): Likewise. + (ia32_multipass_dfa_lookahead): Likewise. + (swap_top_of_ready_list): Likewise. + (ix86_sched_reorder): Likewise. + * config/i386/i386.h (TARGET_INTEL): New. + (TARGET_AVOID_LEA_FOR_ADDR): Likewise. + (processor_type): Add PROCESSOR_INTEL. + * config/i386/x86-tune.def: Support m_INTEL. Duplicate + m_SILVERMONT. Add X86_TUNE_AVOID_LEA_FOR_ADDR. + 2014-01-17 Marek Polacek <polacek@redhat.com> PR c/58346 |