[DAGCombine] Move AND nodes to multiple load leaves
authorSam Parker <sam.parker@arm.com>
Mon, 18 Dec 2017 10:04:27 +0000 (10:04 +0000)
committerSam Parker <sam.parker@arm.com>
Mon, 18 Dec 2017 10:04:27 +0000 (10:04 +0000)
commit00804efd72a6c9a551e0356c73b8a8a2158ef181
tree6cdb8c40d00a457e31df4b53687b54a731797637
parentd8b3c1a1350d1b1b0604bc9bc384da9c7d6ad28a
[DAGCombine] Move AND nodes to multiple load leaves

Search from AND nodes to find whether they can be propagated back to
loads, so that the AND and load can be combined into a narrow load.
We search through OR, XOR and other AND nodes and all bar one of the
leaves are required to be loads or constants. The exception node then
needs to be masked off meaning that the 'and' isn't removed, but the
loads(s) are narrowed still.

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

llvm-svn: 320962
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/test/CodeGen/ARM/and-load-combine.ll