diff options
author | Sam Parker <sam.parker@arm.com> | 2017-12-14 09:31:01 +0000 |
---|---|---|
committer | Sam Parker <sam.parker@arm.com> | 2017-12-14 09:31:01 +0000 |
commit | 290324b30964a8163b35410cae80fb6daea56212 (patch) | |
tree | 4d169bb0bf27856565c1703b38604a036ea3f258 /docs | |
parent | b82cf8d9d43a9e563a1f1bacf196dc4db7f2dde8 (diff) |
[DAGCombine] Move AND nodes to multiple load leaves
Recommitting rL319773, which was reverted due to a recursive issue
causing timeouts. This happened because I failed to check whether
the discovered loads could be narrowed further. In the case of a tree
with one or more narrow loads, that could not be further narrowed, as
well as a node that would need masking, an AND could be introduced
which could then be visited and recombined again with the same load.
This could again create the masking load, with would be combined
again... We now check that the load can be narrowed so that this
process stops.
Original commit message:
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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320679 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs')
0 files changed, 0 insertions, 0 deletions