Extend vternlog define_insn_and_split to memory_operand to enable more optimziation.
authorliuhongt <hongtao.liu@intel.com>
Wed, 3 Nov 2021 08:32:22 +0000 (16:32 +0800)
committerliuhongt <hongtao.liu@intel.com>
Thu, 4 Nov 2021 08:09:52 +0000 (16:09 +0800)
commitbc9c8e5f8af08c513a4a4c329c50ba6559ff6d5c
treea68a67fec78c9ef4eb3ada91bd6641bed844ed55
parent22ce7382fccc15ce2355306b3f5be7afc00f81f4
Extend vternlog define_insn_and_split to memory_operand to enable more optimziation.

gcc/ChangeLog:

PR target/101989
* config/i386/predicates.md (reg_or_notreg_operand): Rename to ..
(regmem_or_bitnot_regmem_operand): .. and extend to handle
memory_operand.
* config/i386/sse.md (*<avx512>_vpternlog<mode>_1): Force_reg
the operands which are required to be register_operand.
(*<avx512>_vpternlog<mode>_2): Ditto.
(*<avx512>_vpternlog<mode>_3): Ditto.
(*<avx512>_vternlog<mode>_all): Disallow embeded broadcast for
vector HFmodes since it's not a real AVX512FP16 instruction.

gcc/testsuite/ChangeLog:

* gcc.target/i386/pr101989-3.c: New test.
gcc/config/i386/predicates.md
gcc/config/i386/sse.md
gcc/testsuite/gcc.target/i386/pr101989-3.c [new file with mode: 0644]