Optimize vpexpand* to mask mov when mask have all ones in it's lower part (including...
authorliuhongt <hongtao.liu@intel.com>
Thu, 29 Apr 2021 10:27:09 +0000 (18:27 +0800)
committerliuhongt <hongtao.liu@intel.com>
Tue, 22 Jun 2021 01:35:16 +0000 (09:35 +0800)
commitf51618f301664d02cc41205f1386c0c9b9a29a54
tree2a091bc0e684c4cbb1bc40941c31fdac76fb40ae
parentb6efffa552cee6a20a58c91e5f41466c5715d73d
Optimize vpexpand* to mask mov when mask have all ones in it's lower part (including 0 and -1).

gcc/ChangeLog:

PR target/100267
* config/i386/i386-builtin.def (BDESC): Adjust builtin name.
* config/i386/sse.md (<avx512>_expand<mode>_mask): Rename to ..
(expand<mode>_mask): this ..
(*expand<mode>_mask): New pre_reload splitter to transform
v{,p}expand* to vmov* when mask is zero, all ones, or has all
ones in it's lower part, otherwise still generate
v{,p}expand*.

gcc/testsuite/ChangeLog:

PR target/100267
* gcc.target/i386/avx512bw-pr100267-1.c: New test.
* gcc.target/i386/avx512bw-pr100267-b-2.c: New test.
* gcc.target/i386/avx512bw-pr100267-d-2.c: New test.
* gcc.target/i386/avx512bw-pr100267-q-2.c: New test.
* gcc.target/i386/avx512bw-pr100267-w-2.c: New test.
* gcc.target/i386/avx512f-pr100267-1.c: New test.
* gcc.target/i386/avx512f-pr100267-pd-2.c: New test.
* gcc.target/i386/avx512f-pr100267-ps-2.c: New test.
* gcc.target/i386/avx512vl-pr100267-1.c: New test.
* gcc.target/i386/avx512vl-pr100267-pd-2.c: New test.
* gcc.target/i386/avx512vl-pr100267-ps-2.c: New test.
* gcc.target/i386/avx512vlbw-pr100267-1.c: New test.
* gcc.target/i386/avx512vlbw-pr100267-b-2.c: New test.
* gcc.target/i386/avx512vlbw-pr100267-d-2.c: New test.
* gcc.target/i386/avx512vlbw-pr100267-q-2.c: New test.
* gcc.target/i386/avx512vlbw-pr100267-w-2.c: New test.
18 files changed:
gcc/config/i386/i386-builtin.def
gcc/config/i386/sse.md
gcc/testsuite/gcc.target/i386/avx512bw-pr100267-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512bw-pr100267-b-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512bw-pr100267-d-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512bw-pr100267-q-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512bw-pr100267-w-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-pr100267-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-pr100267-pd-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-pr100267-ps-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr100267-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr100267-pd-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr100267-ps-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vlbw-pr100267-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vlbw-pr100267-b-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vlbw-pr100267-d-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vlbw-pr100267-q-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vlbw-pr100267-w-2.c [new file with mode: 0644]