Improve Dependency analysis when doing multi-node Instruction Selection
authorNirav Dave <niravd@google.com>
Fri, 9 Mar 2018 20:57:42 +0000 (20:57 +0000)
committerNirav Dave <niravd@google.com>
Fri, 9 Mar 2018 20:57:42 +0000 (20:57 +0000)
commitd668f69ee75f0dca73d625c21f860bffcc064182
tree4d44ded8bb054955188d43f1435be0f339db5789
parent071699bf8280f077139e3b24633f4c140e961b78
Improve Dependency analysis when doing multi-node Instruction Selection

Relanding after fixing NodeId Invariant.

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

llvm-svn: 327171
18 files changed:
llvm/include/llvm/CodeGen/SelectionDAGNodes.h
llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
llvm/test/CodeGen/X86/avg.ll
llvm/test/CodeGen/X86/avx-vbroadcastf128.ll
llvm/test/CodeGen/X86/avx2-vbroadcast.ll
llvm/test/CodeGen/X86/avx2-vbroadcasti128.ll
llvm/test/CodeGen/X86/avx512-vbroadcasti128.ll
llvm/test/CodeGen/X86/i256-add.ll
llvm/test/CodeGen/X86/masked_memop.ll
llvm/test/CodeGen/X86/merge-consecutive-stores.ll
llvm/test/CodeGen/X86/nontemporal.ll
llvm/test/CodeGen/X86/pr36312.ll
llvm/test/CodeGen/X86/required-vector-width.ll
llvm/test/CodeGen/X86/store_op_load_fold2.ll
llvm/test/CodeGen/X86/subvector-broadcast.ll
llvm/test/CodeGen/X86/var-permute-256.ll
llvm/test/CodeGen/X86/vector-shuffle-variable-256.ll