[PATCH] D110926: [GlobalISel] Support vectors in LegalizerHelper::narrowScalarMul

Jay Foad via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 20 08:43:26 PDT 2021


foad added a comment.

My preferred way of implementing this would be to extend G_MERGE_VALUES so that it works elementwise on vectors:

  %2:_(<3 x s64>) = G_MERGE_VALUES %0:_(<3 x s32>), %1:_(<3 x s32>) // %0 is three low halves, %1 is three high halves

But that requires G_UNMERGE_VALUES to be able to do the converse:

  %1:_(<3 x s32>), %2:_(<3 x s32>) = G_UNMERGE_VALUES %0:_(<3 x s64>)  // %1 is three low halves, %2 is three high halves

But this was already allowed and apparently meant something different (a G_BITCAST plus the converse of G_CONCAT_VECTORS?) which is how I got sidetracked into D111132 <https://reviews.llvm.org/D111132>.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D110926/new/

https://reviews.llvm.org/D110926



More information about the llvm-commits mailing list