From: Changpeng Fang Date: Mon, 20 Jun 2011 21:52:32 +0000 (+0000) Subject: pr49089: enable avx256 splitting unaligned load/store only when beneficial X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=97ef5ae607b720d05e17808bbe18903c70dd6dac;p=gcc.git pr49089: enable avx256 splitting unaligned load/store only when beneficial * config/i386/i386.c (avx256_split_unaligned_load): New definition. (avx256_split_unaligned_store): New definition. (ix86_option_override_internal): Enable avx256 unaligned load/store splitting only when avx256_split_unaligned_load/store is set. From-SVN: r175230 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 59300e5e821..361b584fb2d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2011-06-20 Changpeng Fang + + PR i386/49089 + * config/i386/i386.c (avx256_split_unaligned_load): New definition. + (avx256_split_unaligned_store): New definition. + (ix86_option_override_internal): Enable avx256 unaligned load/store + splitting only when avx256_split_unaligned_load/store is set. + 2011-06-20 Bernd Schmidt * regrename.c (scan_rtx_reg): Handle the case where we write to an diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 6029010d904..014401b3651 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2122,6 +2122,12 @@ static const unsigned int x86_arch_always_fancy_math_387 = m_PENT | m_ATOM | m_PPRO | m_AMD_MULTIPLE | m_PENT4 | m_NOCONA | m_CORE2I7 | m_GENERIC; +static const unsigned int x86_avx256_split_unaligned_load + = m_COREI7 | m_GENERIC; + +static const unsigned int x86_avx256_split_unaligned_store + = m_COREI7 | m_BDVER1 | m_GENERIC; + /* In case the average insn count for single function invocation is lower than this constant, emit fast (but longer) prologue and epilogue code. */ @@ -3660,9 +3666,11 @@ ix86_option_override_internal (bool main_args_p) if (flag_expensive_optimizations && !(target_flags_explicit & MASK_VZEROUPPER)) target_flags |= MASK_VZEROUPPER; - if (!(target_flags_explicit & MASK_AVX256_SPLIT_UNALIGNED_LOAD)) + if ((x86_avx256_split_unaligned_load & ix86_tune_mask) + && !(target_flags_explicit & MASK_AVX256_SPLIT_UNALIGNED_LOAD)) target_flags |= MASK_AVX256_SPLIT_UNALIGNED_LOAD; - if (!(target_flags_explicit & MASK_AVX256_SPLIT_UNALIGNED_STORE)) + if ((x86_avx256_split_unaligned_store & ix86_tune_mask) + && !(target_flags_explicit & MASK_AVX256_SPLIT_UNALIGNED_STORE)) target_flags |= MASK_AVX256_SPLIT_UNALIGNED_STORE; } }