i386: Avoid fma_chain for -march=alderlake and sapphirerapids.

Message ID 20221207063644.100134-1-hongyu.wang@intel.com
State Committed
Commit 3a1a141f79c83ad38f7db3a21d8a4dcfe625c176
Headers
Series i386: Avoid fma_chain for -march=alderlake and sapphirerapids. |

Commit Message

Hongyu Wang Dec. 7, 2022, 6:36 a.m. UTC
  For Alderlake there is similar issue like PR 81616, enable
avoid_fma256_chain will also benefit on Intel latest platforms
Alderlake and Sapphire Rapids.

Bootstrapped/regtested on x86_64-pc-linux-gnu{-m32,}.

Ok for master?

gcc/ChangeLog:

	* config/i386/x86-tune.def (X86_TUNE_AVOID_256FMA_CHAINS): Add
	m_SAPPHIRERAPIDS, m_ALDERLAKE and m_CORE_ATOM.
---
 gcc/config/i386/x86-tune.def | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
  

Comments

Uros Bizjak Dec. 7, 2022, 7:10 a.m. UTC | #1
On Wed, Dec 7, 2022 at 7:36 AM Hongyu Wang <hongyu.wang@intel.com> wrote:
>
> For Alderlake there is similar issue like PR 81616, enable
> avoid_fma256_chain will also benefit on Intel latest platforms
> Alderlake and Sapphire Rapids.
>
> Bootstrapped/regtested on x86_64-pc-linux-gnu{-m32,}.
>
> Ok for master?
>
> gcc/ChangeLog:
>
>         * config/i386/x86-tune.def (X86_TUNE_AVOID_256FMA_CHAINS): Add
>         m_SAPPHIRERAPIDS, m_ALDERLAKE and m_CORE_ATOM.

OK.

Thanks,
Uros.

> ---
>  gcc/config/i386/x86-tune.def | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/config/i386/x86-tune.def b/gcc/config/i386/x86-tune.def
> index cd66f335113..db85de20bae 100644
> --- a/gcc/config/i386/x86-tune.def
> +++ b/gcc/config/i386/x86-tune.def
> @@ -499,7 +499,8 @@ DEF_TUNE (X86_TUNE_AVOID_128FMA_CHAINS, "avoid_fma_chains", m_ZNVER)
>
>  /* X86_TUNE_AVOID_256FMA_CHAINS: Avoid creating loops with tight 256bit or
>     smaller FMA chain.  */
> -DEF_TUNE (X86_TUNE_AVOID_256FMA_CHAINS, "avoid_fma256_chains", m_ZNVER2 | m_ZNVER3)
> +DEF_TUNE (X86_TUNE_AVOID_256FMA_CHAINS, "avoid_fma256_chains", m_ZNVER2 | m_ZNVER3
> +         | m_ALDERLAKE | m_SAPPHIRERAPIDS | m_CORE_ATOM)
>
>  /* X86_TUNE_V2DF_REDUCTION_PREFER_PHADDPD: Prefer haddpd
>     for v2df vector reduction.  */
> --
> 2.18.1
>
  
Hongyu Wang Dec. 14, 2022, 7:55 a.m. UTC | #2
If there is no objection, I'm going to backport the m_SAPPHIRERAPIDS
and m_ALDERLAKE change to GCC 12.

Uros Bizjak via Gcc-patches <gcc-patches@gcc.gnu.org> 于2022年12月7日周三 15:11写道:
>
> On Wed, Dec 7, 2022 at 7:36 AM Hongyu Wang <hongyu.wang@intel.com> wrote:
> >
> > For Alderlake there is similar issue like PR 81616, enable
> > avoid_fma256_chain will also benefit on Intel latest platforms
> > Alderlake and Sapphire Rapids.
> >
> > Bootstrapped/regtested on x86_64-pc-linux-gnu{-m32,}.
> >
> > Ok for master?
> >
> > gcc/ChangeLog:
> >
> >         * config/i386/x86-tune.def (X86_TUNE_AVOID_256FMA_CHAINS): Add
> >         m_SAPPHIRERAPIDS, m_ALDERLAKE and m_CORE_ATOM.
>
> OK.
>
> Thanks,
> Uros.
>
> > ---
> >  gcc/config/i386/x86-tune.def | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/gcc/config/i386/x86-tune.def b/gcc/config/i386/x86-tune.def
> > index cd66f335113..db85de20bae 100644
> > --- a/gcc/config/i386/x86-tune.def
> > +++ b/gcc/config/i386/x86-tune.def
> > @@ -499,7 +499,8 @@ DEF_TUNE (X86_TUNE_AVOID_128FMA_CHAINS, "avoid_fma_chains", m_ZNVER)
> >
> >  /* X86_TUNE_AVOID_256FMA_CHAINS: Avoid creating loops with tight 256bit or
> >     smaller FMA chain.  */
> > -DEF_TUNE (X86_TUNE_AVOID_256FMA_CHAINS, "avoid_fma256_chains", m_ZNVER2 | m_ZNVER3)
> > +DEF_TUNE (X86_TUNE_AVOID_256FMA_CHAINS, "avoid_fma256_chains", m_ZNVER2 | m_ZNVER3
> > +         | m_ALDERLAKE | m_SAPPHIRERAPIDS | m_CORE_ATOM)
> >
> >  /* X86_TUNE_V2DF_REDUCTION_PREFER_PHADDPD: Prefer haddpd
> >     for v2df vector reduction.  */
> > --
> > 2.18.1
> >
  

Patch

diff --git a/gcc/config/i386/x86-tune.def b/gcc/config/i386/x86-tune.def
index cd66f335113..db85de20bae 100644
--- a/gcc/config/i386/x86-tune.def
+++ b/gcc/config/i386/x86-tune.def
@@ -499,7 +499,8 @@  DEF_TUNE (X86_TUNE_AVOID_128FMA_CHAINS, "avoid_fma_chains", m_ZNVER)
 
 /* X86_TUNE_AVOID_256FMA_CHAINS: Avoid creating loops with tight 256bit or
    smaller FMA chain.  */
-DEF_TUNE (X86_TUNE_AVOID_256FMA_CHAINS, "avoid_fma256_chains", m_ZNVER2 | m_ZNVER3)
+DEF_TUNE (X86_TUNE_AVOID_256FMA_CHAINS, "avoid_fma256_chains", m_ZNVER2 | m_ZNVER3
+	  | m_ALDERLAKE | m_SAPPHIRERAPIDS | m_CORE_ATOM)
 
 /* X86_TUNE_V2DF_REDUCTION_PREFER_PHADDPD: Prefer haddpd
    for v2df vector reduction.  */