summaryrefslogtreecommitdiff
path: root/gcc/ChangeLog
diff options
context:
space:
mode:
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>2014-01-17 15:23:58 +0000
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>2014-01-17 15:23:58 +0000
commit2ea5890da3d091d59c1bbba9ca4ac9f9fa467432 (patch)
tree85cbf2b0c5da82944051e42957aaab5b6f8e81ad /gcc/ChangeLog
parent0116c9f8c82422f18446531245dac8347818ffc6 (diff)
downloadgcc-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/ChangeLog26
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