On Wed, Feb 20, 2019 at 6:44 AM Uros Bizjak <ubiz...@gmail.com> wrote:
>
> 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.

Either this patch or adjust gcc.target/i386/pr67985-3.c.

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



-- 
H.J.

Reply via email to