]> gcc.gnu.org Git - gcc.git/commit
Break false dependence for vpternlog by inserting vpxor or setting constraint of...
authorliuhongt <hongtao.liu@intel.com>
Thu, 29 Jun 2023 06:25:28 +0000 (14:25 +0800)
committerliuhongt <hongtao.liu@intel.com>
Wed, 12 Jul 2023 07:51:17 +0000 (15:51 +0800)
commit13c556d6ae84be3ee2bc245a56eafa58221de86a
tree6dfae0fb54ba52e779c48eb7bee544f22c55fcf3
parenta0cb65d34cc141571e870fb3b53b3ff47ae3338d
Break false dependence for vpternlog by inserting vpxor or setting constraint of input operand to '0'

False dependency happens when destination is only updated by
pternlog. There is no false dependency when destination is also used
in source. So either a pxor should be inserted, or input operand
should be set with constraint '0'.

gcc/ChangeLog:

PR target/110438
PR target/110202
* config/i386/predicates.md
(int_float_vector_all_ones_operand): New predicate.
* config/i386/sse.md (*vmov<mode>_constm1_pternlog_false_dep): New
define_insn.
(*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
Ditto.
(*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
Ditto.
(*<avx512>_cvtmask2<ssemodesuffix><mode>): Adjust to
define_insn_and_split to avoid false dependence.
(*<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
(<mask_codefor>one_cmpl<mode>2<mask_name>): Adjust constraint
of operands 1 to '0' to avoid false dependence.
(*andnot<mode>3): Ditto.
(iornot<mode>3): Ditto.
(*<nlogic><mode>3): Ditto.

gcc/testsuite/ChangeLog:

* gcc.target/i386/pr110438.c: New test.
* gcc.target/i386/pr100711-6.c: Adjust testcase.
gcc/config/i386/predicates.md
gcc/config/i386/sse.md
gcc/testsuite/gcc.target/i386/pr100711-6.c
gcc/testsuite/gcc.target/i386/pr110438.c [new file with mode: 0644]
This page took 0.082872 seconds and 6 git commands to generate.