[PATCH] Extend ldexp{s, d}f3 to vscalefs{s, d} when TARGET_AVX512F and TARGET_SSE_MATH.

Uros Bizjak ubizjak@gmail.com
Thu Aug 12 19:21:31 GMT 2021


On Thu, Aug 12, 2021 at 6:40 AM Hongtao Liu <crazylht@gmail.com> wrote:

> > > > Hi:
> > > >   AVX512F supported vscalefs{s,d} which is the same as ldexp except the second operand should be floating point.
> > > >   Bootstrapped and regtested on x86_64-linux-gnu{-m32,}.
> > > >
> > > > gcc/ChangeLog:
> > > >
> > > >         PR target/98309
> > > >         * config/i386/i386.md (ldexp<mode>3): Extend to vscalefs[sd]
> > > >         when TARGET_AVX512F and TARGET_SSE_MATH.
> > > >
> > > > gcc/testsuite/ChangeLog:
> > > >
> > > >         PR target/98309
> > > >         * gcc.target/i386/pr98309-1.c: New test.
> > > >         * gcc.target/i386/pr98309-2.c: New test.
> > >
> > > OK.
> >
> > Actually, we should introduce a scalar version of avx512f_vmscalef, so
> > we can avoid all subreg conversions with the vector-merge (VM)
> > version, and will also allow memory in operand 2.
> >
> > Please test the attached incremental patch.
> >
> Bootstrapped and regtested on x86_64-linux-gnu{-m32,} on CLX.
> tests is fine.

Thanks, committed with the following ChangeLog:

[i386] Introduce scalar version of avx512f_vmscalef.

2021-08-12  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
    PR target/98309
    * config/i386/i386.md (avx512f_scalef<mode>2): New insn pattern.
    (ldexp<mode>3): Use avx512f_scalef<mode>2.
    (UNSPEC_SCALEF): Move from ...
    * config/i386/sse.md (UNSPEC_SCALEF): ... here.

Uros.


More information about the Gcc-patches mailing list