[all-commits] [llvm/llvm-project] 670c27: [GlobalISel] Add G_UNMERGE_VALUES(G_MERGE_VALUES) ...
qcolombet via All-commits
all-commits at lists.llvm.org
Mon Sep 14 15:46:14 PDT 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: 670c276232ec2233323fab5ad4c1aeef923e9e48
https://github.com/llvm/llvm-project/commit/670c276232ec2233323fab5ad4c1aeef923e9e48
Author: Quentin Colombet <qcolombet at apple.com>
Date: 2020-09-14 (Mon, 14 Sep 2020)
Changed paths:
M llvm/include/llvm/CodeGen/GlobalISel/CombinerHelper.h
M llvm/include/llvm/Target/GlobalISel/Combine.td
M llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
A llvm/test/CodeGen/AArch64/GlobalISel/combine-unmerge.mir
Log Message:
-----------
[GlobalISel] Add G_UNMERGE_VALUES(G_MERGE_VALUES) combine
Add the matching and applying function to the combiner helper for
G_UNMERGE_VALUES(G_MERGE_VALUES).
This combine also supports any merge-like input nodes, like G_BUILD_VECTORS
and is robust against bitcasts in between int unmerge and merge nodes.
When the input type of the merge node and the output type of the unmerge
node are not the same, but the sizes are, the combine still applies but
creates bitcasts between the sources and the destinations instead of
reusing the destinations directly.
Long term, the artifact combiner should probably reuse that helper, but
as of today, it doesn't use any outside helper, so I kept it this way.
Differential Revision: https://reviews.llvm.org/D87117
More information about the All-commits
mailing list