+ maintainer.
cc H.J

On Thu, Jul 9, 2020 at 4:33 PM Hongtao Liu <crazy...@gmail.com> wrote:
>
> Hi:
>   For a constant vector having one duplicated value, there's no need
> to put the whole vector in the constant pool, using embedded broadcast
> instead.
>
>   Bootstrap test is Ok, regression test for i386/x86-64 backend is ok.
>
> gcc/ChangeLog:
>
>         PR target/87767
>         * config/i386/i386-features.c
>         (replace_constant_pool_with_broadcast): New function.
>         (constant_pool_broadcast): Ditto.
>         (class pass_constant_pool_broadcast): New pass.
>         (make_pass_constant_pool_broadcast): Ditto.
>         * config/i386/i386-passes.def: Insert new pass after combine.
>         * config/i386/i386-protos.h
>         (make_pass_constant_pool_broadcast): Declare.
>         * config/i386/sse.md (*avx512dq_mul<mode>3<mask_name>_bcst,
>         *avx512f_mul<mode>3<mask_name>_bcst): New define_insn.
>
> gcc/testsuite/ChangeLog:
>
>         PR target/87767
>         * gcc.target/i386/avx2-broadcast-pr87767-1.c: New test.
>         * gcc.target/i386/avx512f-broadcast-pr87767-1.c: New test.
>         * gcc.target/i386/avx512f-broadcast-pr87767-2.c: New test.
>         * gcc.target/i386/avx512vl-broadcast-pr87767-1.c: New test.
>         * gcc.target/i386/pr92865-1.c: Adjust testcase.
>
>
>
>
> --
> BR,
> Hongtao



-- 
BR,
Hongtao

Reply via email to