Skip to content

Commit 4d055df

Browse files
[GlobalISel] support lowering of G_SHUFFLEVECTOR with pointer args
1 parent 893ef7f commit 4d055df

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8446,10 +8446,10 @@ LegalizerHelper::lowerShuffleVector(MachineInstr &MI) {
84468446
}
84478447
}
84488448

8449-
if (DstTy.isScalar())
8450-
MIRBuilder.buildCopy(DstReg, BuildVec[0]);
8451-
else
8449+
if (DstTy.isVector())
84528450
MIRBuilder.buildBuildVector(DstReg, BuildVec);
8451+
else
8452+
MIRBuilder.buildCopy(DstReg, BuildVec[0]);
84538453
MI.eraseFromParent();
84548454
return Legalized;
84558455
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# RUN: llc -march=amdgcn -run-pass=legalizer -verify-machineinstrs %s -o -
2+
3+
--- |
4+
define i32 @test(i64 %arg) {
5+
ret i32 0
6+
}
7+
...
8+
name: test
9+
tracksRegLiveness: true
10+
body: |
11+
bb.0:
12+
%9:_(p0) = G_CONSTANT i64 0
13+
%10:_(<2 x p0>) = G_BUILD_VECTOR %9:_(p0), %9:_(p0)
14+
%8:_(<2 x p0>) = G_LOAD %9:_(p0) :: (load (<2 x p0>) from `ptr null`, align 64)
15+
%11:_(p0) = G_SHUFFLE_VECTOR %8:_(<2 x p0>), %10:_, shufflemask(0)
16+
%12:_(s32), %13:_(s32) = G_UNMERGE_VALUES %11:_(p0)
17+
$vgpr0 = COPY %12:_(s32)
18+
$vgpr1 = COPY %13:_(s32)
19+
SI_RETURN implicit $vgpr0, implicit $vgpr1
20+
...
21+

0 commit comments

Comments
 (0)