OSDN Git Service

[DAG, X86] Improve Dependency analysis when doing multi-node
authorNirav Dave <niravd@google.com>
Tue, 6 Feb 2018 16:14:29 +0000 (16:14 +0000)
committerNirav Dave <niravd@google.com>
Tue, 6 Feb 2018 16:14:29 +0000 (16:14 +0000)
commitb2c8f01446fcdb5f0e967933f8b6189f077a16c4
tree3979a89b406e79db41c3fa19d7797c81543c0a41
parent637837911839cb9f69d3c76528b5cb9cd47865d1
[DAG, X86] Improve Dependency analysis when doing multi-node
Instruction Selection

Cleanup cycle/validity checks in ISel (IsLegalToFold,
HandleMergeInputChains) and X86 (isFusableLoadOpStore). Now do a full
search for cycles / dependencies pruning the search when topological
property of NodeId allows.

As part of this propogate the NodeId-based cutoffs to narrow
hasPreprocessorHelper searches.

Reviewers: craig.topper, bogner

Subscribers: llvm-commits, hiraditya

Differential Revision: https://reviews.llvm.org/D41293

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@324359 91177308-0d34-0410-b5e6-96231b3b80d8
18 files changed:
include/llvm/CodeGen/SelectionDAGNodes.h
lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
lib/Target/X86/X86ISelDAGToDAG.cpp
test/CodeGen/X86/avg.ll
test/CodeGen/X86/avx-vbroadcastf128.ll
test/CodeGen/X86/avx2-vbroadcast.ll
test/CodeGen/X86/avx2-vbroadcasti128.ll
test/CodeGen/X86/avx512-vbroadcasti128.ll
test/CodeGen/X86/foldmem_cycle.ll [new file with mode: 0644]
test/CodeGen/X86/i256-add.ll
test/CodeGen/X86/load-op-store-fusion.ll [new file with mode: 0644]
test/CodeGen/X86/masked_memop.ll
test/CodeGen/X86/merge-consecutive-stores.ll
test/CodeGen/X86/nontemporal.ll
test/CodeGen/X86/store_op_load_fold2.ll
test/CodeGen/X86/subvector-broadcast.ll
test/CodeGen/X86/var-permute-256.ll
test/CodeGen/X86/vector-shuffle-variable-256.ll