On Wed, Feb 20, 2019 at 3:35 PM H.J. Lu <hjl.to...@gmail.com> wrote:
>
> On Wed, Feb 20, 2019 at 08:12:35AM +0100, Uros Bizjak wrote:
> > On Tue, Feb 19, 2019 at 9:14 PM H.J. Lu <hjl.to...@gmail.com> wrote:
> > >
> > > On Tue, Feb 19, 2019 at 6:16 AM Uros Bizjak <ubiz...@gmail.com> wrote:
> > > >
> > > > On Tue, Feb 19, 2019 at 2:49 PM H.J. Lu <hjl.to...@gmail.com> wrote:
> > > > >
> > > > > ix86_fpmath should be set to combination of FPMATH_387 and FPMATH_SSE.
> > > > > When SSE is disabled, it should be set to FPMATH_387 and 387 codegen 
> > > > > is
> > > > > also controlled by -msoft-float.
> > > > >
> > > > > gcc/
> > > > >
> > > > >         PR target/89397
> > > > >         * config/i386/i386.c (ix86_option_override_internal): Set
> > > > >         opts->x_ix86_fpmath to FPMATH_387 when SSE is disabled.
> > > > >
> > > > > gcc/testsuite/
> > > > >
> > > > >         PR target/89397
> > > > >         * gcc.target/i386/pr89397.c: New test.
> > > >
> > > > OK.
> > > >
> > >
> > > This patch is need to fix:
> > >
> > > FAIL: gcc.target/i386/pr67985-3.c scan-assembler movd[ \t]%xmm[0-7], %eax
> > > FAIL: gcc.target/i386/pr67985-3.c scan-assembler mulss
> > >
> > > OK for trunk?
> >
> > PR 67985 says:
> >
> > --q--
> > Since -miamcu specifies how parameters are passed to functions,
> > inside function, we can use any instructions -march= allows.
> > -miamcu -march=haswell should allow x87 and AVX instructions
> > --/q--
> >
> > The command line specifies -mfpmath=sse and target attribute implies
> > SSE. So, SSE instructions should be used here. Please investigate why
> > this is not the case.
> >
>
> Here is the patch.
>
>
> H.J.
> ---
> On x86, SSE and 387 can be used for FP math, which is controlled by
> -mfpmath=[sse|387].  If ISA seleted by -mfpmath is disabled, we switch
> FP math to the alternate ISA only if it is available.  When both SSE
> and 387 are disabled, we leave FP math choice unchanged.  We require
> SSE for SSE FP math so that no SSE instructions will be generated
> without SSE and SSE FP math can be enabled with target attribute.
>
>         PR target/89397
>         * config/i386/i386.c (ix86_option_override_internal): Revert
>         r269017.
>         * config/i386/i386.h (TARGET_SSE_MATH): Require SSE.
> ---
>  gcc/config/i386/i386.c | 7 ++++---
>  gcc/config/i386/i386.h | 3 ++-
>  2 files changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
> index bed17330fa8..591a7cdccdc 100644
> --- a/gcc/config/i386/i386.c
> +++ b/gcc/config/i386/i386.c
> @@ -4310,9 +4310,10 @@ ix86_option_override_internal (bool main_args_p,
>           if (!TARGET_SSE_P (opts->x_ix86_isa_flags))
>             {
>               if (TARGET_80387_P (opts->x_target_flags))
> -               warning (0, "SSE instruction set disabled, using 387 
> arithmetics");
> -             /* NB: 387 codegen is guarded by TARGET_80387.  */
> -             opts->x_ix86_fpmath = FPMATH_387;
> +               {
> +                 warning (0, "SSE instruction set disabled, using 387 
> arithmetics");
> +                 opts->x_ix86_fpmath = FPMATH_387;
> +               }
>             }
>           else if ((opts->x_ix86_fpmath & FPMATH_387)
>                    && !TARGET_80387_P (opts->x_target_flags))
> diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
> index 4fd8bc40a34..7a80e8bd026 100644
> --- a/gcc/config/i386/i386.h
> +++ b/gcc/config/i386/i386.h
> @@ -590,7 +590,8 @@ extern unsigned char x86_prefetch_sse;
>
>  #define ASSEMBLER_DIALECT      (ix86_asm_dialect)
>
> -#define TARGET_SSE_MATH                ((ix86_fpmath & FPMATH_SSE) != 0)
> +#define TARGET_SSE_MATH \
> +  ((ix86_fpmath & FPMATH_SSE) != 0 && TARGET_SSE)

No.

Uros.

>  #define TARGET_MIX_SSE_I387 \
>   ((ix86_fpmath & (FPMATH_SSE | FPMATH_387)) == (FPMATH_SSE | FPMATH_387))
>
> --
> 2.20.1
>

Reply via email to