aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
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/fortran
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/fortran')
0 files changed, 0 insertions, 0 deletions