Merge two define_insn: <avx512>_blendm<mode>, <avx512>_load<mode>_mask.
authorliuhongt <hongtao.liu@intel.com>
Tue, 21 Jul 2020 07:25:20 +0000 (15:25 +0800)
committerliuhongt <hongtao.liu@intel.com>
Thu, 13 Aug 2020 03:19:02 +0000 (11:19 +0800)
commit7123217afb33d4a2860f552ad778a819cc8dea5e
tree6bfc49c58b42910b2c4f08f9b10d068923abc878
parent5db1fa9bc69dd58ce2f93dd707d05efcfe89ffa8
Merge two define_insn: <avx512>_blendm<mode>, <avx512>_load<mode>_mask.

Those two define_insns have same pattern, and <avx512>_load<mode>_mask
would always be matched since it show up earlier in the md file, and
it may lose some opportunity in pass_reload since
<avx512>_load<mode>_mask only have constraint "0C" for operand2, and
"v" constraint in <avx512>_vblendm<mode> would never be matched.

2020-07-21  Hongtao Liu  <hongtao.liu@intel.com>

gcc/
PR target/96246
* config/i386/sse.md (<avx512>_load<mode>_mask,
<avx512>_load<mode>_mask): Extend to generate blendm
instructions.
(<avx512>_blendm<mode>, <avx512>_blendm<mode>): Change
define_insn to define_expand.

gcc/testsuite/
* gcc.target/i386/avx512bw-pr96246-1.c: New test.
* gcc.target/i386/avx512bw-pr96246-2.c: New test.
* gcc.target/i386/avx512vl-pr96246-1.c: New test.
* gcc.target/i386/avx512vl-pr96246-2.c: New test.
* gcc.target/i386/avx512bw-vmovdqu16-1.c: Adjust test.
* gcc.target/i386/avx512bw-vmovdqu8-1.c: Ditto.
* gcc.target/i386/avx512f-vmovapd-1.c: Ditto.
* gcc.target/i386/avx512f-vmovaps-1.c: Ditto.
* gcc.target/i386/avx512f-vmovdqa32-1.c: Ditto.
* gcc.target/i386/avx512f-vmovdqa64-1.c: Ditto.
* gcc.target/i386/avx512vl-pr92686-movcc-1.c: Ditto.
* gcc.target/i386/avx512vl-pr96246-1.c: Ditto.
* gcc.target/i386/avx512vl-pr96246-2.c: Ditto.
* gcc.target/i386/avx512vl-vmovapd-1.c: Ditto.
* gcc.target/i386/avx512vl-vmovaps-1.c: Ditto.
* gcc.target/i386/avx512vl-vmovdqa32-1.c: Ditto.
* gcc.target/i386/avx512vl-vmovdqa64-1.c: Ditto.
16 files changed:
gcc/config/i386/sse.md
gcc/testsuite/gcc.target/i386/avx512bw-pr96246-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512bw-pr96246-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512bw-vmovdqu16-1.c
gcc/testsuite/gcc.target/i386/avx512bw-vmovdqu8-1.c
gcc/testsuite/gcc.target/i386/avx512f-vmovapd-1.c
gcc/testsuite/gcc.target/i386/avx512f-vmovaps-1.c
gcc/testsuite/gcc.target/i386/avx512f-vmovdqa32-1.c
gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-1.c
gcc/testsuite/gcc.target/i386/avx512vl-pr92686-movcc-1.c
gcc/testsuite/gcc.target/i386/avx512vl-pr96246-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr96246-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-vmovapd-1.c
gcc/testsuite/gcc.target/i386/avx512vl-vmovaps-1.c
gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa32-1.c
gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa64-1.c