aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-ch.cc
diff options
context:
space:
mode:
authorliuhongt <hongtao.liu@intel.com>2023-06-29 14:25:28 +0800
committerliuhongt <hongtao.liu@intel.com>2023-07-12 15:51:17 +0800
commit13c556d6ae84be3ee2bc245a56eafa58221de86a (patch)
tree6dfae0fb54ba52e779c48eb7bee544f22c55fcf3 /gcc/tree-ssa-loop-ch.cc
parenta0cb65d34cc141571e870fb3b53b3ff47ae3338d (diff)
downloadgcc-13c556d6ae84be3ee2bc245a56eafa58221de86a.zip
gcc-13c556d6ae84be3ee2bc245a56eafa58221de86a.tar.gz
gcc-13c556d6ae84be3ee2bc245a56eafa58221de86a.tar.bz2
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.
Diffstat (limited to 'gcc/tree-ssa-loop-ch.cc')
0 files changed, 0 insertions, 0 deletions