[llvm] [GlobalISel] LegalizationArtifactCombiner for merge-unmerge->unmerge where src and dst of result would be different scalar/vector types (PR #213086)
Petar Avramovic via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 4 02:05:08 PDT 2026
================
@@ -1016,14 +1017,22 @@ class LegalizationArtifactCombiner {
// %AnotherDst:_(DstTy) = G_merge_like_opcode %2:_(EltTy), %3
//
// %Dst:_(DstTy), %AnotherDst = G_UNMERGE_VALUES %UnmergeSrc
- if (((!DstTy.isVector() && !UnmergeSrcTy.isVector()) ||
- (DstTy.isVector() && UnmergeSrcTy.isVector() &&
+ if ((!DstTy.isVector() ||
+ (UnmergeSrcTy.isVector() &&
DstTy.getScalarType() == UnmergeSrcTy.getScalarType())) &&
(Elt0UnmergeIdx % NumMIElts == 0) &&
+ (DstTy.getSizeInBits() < UnmergeSrcTy.getSizeInBits()) &&
getCoverTy(UnmergeSrcTy, DstTy) == UnmergeSrcTy) {
if (!isSequenceFromUnmerge(MI, 0, Unmerge, Elt0UnmergeIdx, NumMIElts,
EltSize, false))
return false;
+ if (!DstTy.isVector() && UnmergeSrcTy.isVector()) {
----------------
petar-avramovic wrote:
could we also do this for dst vector and src non-vec ?
https://github.com/llvm/llvm-project/pull/213086
More information about the llvm-commits
mailing list