[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