[PATCH][PR92658] Add missing vector truncmn2 expanders for avx512f

Hongtao Liu crazylht@gmail.com
Fri May 22 04:54:54 GMT 2020


On Thu, May 21, 2020 at 7:18 PM Uros Bizjak <ubizjak@gmail.com> wrote:
>
> On Thu, May 21, 2020 at 7:35 AM Hongtao Liu <crazylht@gmail.com> wrote:
> >
> > On Wed, May 20, 2020 at 11:43 PM Uros Bizjak <ubizjak@gmail.com> wrote:
> > >
> > > On Wed, May 20, 2020 at 10:35 AM Hongtao Liu <crazylht@gmail.com> wrote:
> > > >
> > > > Hi:
> > > >   Bootstrap is ok, regression test on i386/x86-64 backend is ok.
> > > >
> > > > gcc/ChangeLog:
> > > >         PR target/92658
> > > >         * config/i386/sse.md
> > > >         (trunc<pmov_src_lower><mode>2, truncv32hiv32qi2,
> > > >         trunc<ssedoublemodelower><mode>2): New expander.
> > > >
> > > > gcc/testsuite/ChangeLog:
> > > >         * gcc.target/i386/pr92658-avx512f.c: New test.
> > > >         * gcc.target/i386/pr92658-avx512vl.c: Ditto.
> > > >         * gcc.target/i386/pr92658-avx512bw-trunc.c: Ditto.
> > >
> > > There are more conversions to be added. There are:
> > >
> > > V2DImode to V2QImode, V2HImode, V2SImode
> > > V4DImode to V4QImode, V4HImode, V4SImode
> > > V8DImode to V8QImode, V8HImode, V8SImode
> > >
> > > V4SImode to V4QImode, V4HImode
> > > V8SImode to V8QImode, V8HImode
> > > V16SImode to V16QImode, V16HImode
> > >
> > > V8HImode to V8QImode
> > > V16HImode to V16QImode
> > > V32HImode to V32QImode
> > >
> > All of them are added
> >
> > Vectorization failure: (Add xfail in testcase for them since they need
> > generic part)
> > V2DImode to V2QImode, V2HImode
> > V4DImode to V4QImode, V4HImode
> > V8DImode to V8QImode
> >
> > V4SImode to V4QImode, V4HImode
> > V8SImode to V8QImode
> >
> > V8HImode to V8QImode
> >
> > Vectorization success:
> > V2DImode to V2SImode (under TARGET_MMX_WITH_SSE)
> > V4DImode to V4SImode
> > V8DImode to V8HImode, V8SImode
> >
> > V8SImode to V8HImode
> > V16SImode to V16QImode, V16HImode
> >
> > V32HImode to V32QImode
> > V16HImode to V16HImode.
> >
> >
> > > Uros.
> >
> > Update patch.
> > Regression test on i386/x86-64 backend is ok, bootstrap is ok.
> >
> > gcc/ChangeLog:
> >         PR target/92658
> >         * config/i386/sse.md
> >         (trunc<pmov_src_lower><mode>2): New expander
> >         (truncv32hiv32qi2): Ditto.
> >         (trunc<ssedoublemodelower><mode>2): Ditto.
> >         (trunc<mode><pmov_dst_3>2): Ditto.
> >         (trunc<mode><pmov_dst_mode_4>2): Ditto.
> >         (truncv2div2si2): Ditto.
> >         (truncv8div8qi2): Ditto.
> >         (avx512f_<code>v8div16qi2): Renaming
> >         from *avx512f_<code>v8div16qi2.
> >         (avx512vl_<code>v2div2si): Renaming
> >         from *avx512vl_<code>v2div2si2.
> >         (avx512vl_<code><mode>v2<ssecakarnum>qi2): Renaming
> >         from *avx512vl_<code><mode>v<ssescalarnum>qi2.
> >
> > gcc/testsuite/ChangeLog:
> >         * gcc.target/i386/pr92658-avx512f.c: New test.
> >         * gcc.target/i386/pr92658-avx512vl.c: Ditto.
> >         * gcc.target/i386/pr92658-avx512bw-trunc.c: Ditto.
>
>
> +  rtx op = simplify_subreg (V16QImode, operands[0], <pmov_dst_3>mode, 0);
> +  operands[0] = op ? op : gen_rtx_SUBREG (V16QImode, operands[0], 0);
>
> You should use simplify_gen_subreg, without null op fixup:
>
> operands[0] = simplify_gen_subreg (V16QImode, operands[0], <pmov_dst_3>mode, 0);
>
Changed.
> +  "TARGET_MMX_WITH_SSE && TARGET_AVX512VL"
>
> Do you really need TARGET_MMX_WITH_SSE?  Narrow modes are active even
> without this flag.
>
Changed.

> Uros.

Update patch.

-- 
BR,
Hongtao
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Add-missing-vector-truncmn2-expanders-PR92658_V3.patch
Type: application/octet-stream
Size: 14890 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc-patches/attachments/20200522/bf2b82b9/attachment-0001.obj>


More information about the Gcc-patches mailing list