Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8446,10 +8446,10 @@ LegalizerHelper::lowerShuffleVector(MachineInstr &MI) {
}
}

if (DstTy.isScalar())
MIRBuilder.buildCopy(DstReg, BuildVec[0]);
else
if (DstTy.isVector())
MIRBuilder.buildBuildVector(DstReg, BuildVec);
else
MIRBuilder.buildCopy(DstReg, BuildVec[0]);
MI.eraseFromParent();
return Legalized;
}
Expand Down
22 changes: 22 additions & 0 deletions llvm/test/CodeGen/AMDGPU/shufflevector-pointer-crash.mir
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# RUN: llc -march=amdgcn -run-pass=legalizer -verify-machineinstrs %s -o -

--- |
define i32 @test() {
unreachable
}
...
---
name: test
tracksRegLiveness: true
body: |
bb.0:
%0:_(p0) = G_CONSTANT i64 0
%1:_(<2 x p0>) = G_BUILD_VECTOR %0:_(p0), %0:_(p0)
%2:_(<2 x p0>) = G_LOAD %0:_(p0) :: (load (<2 x p0>))
%3:_(p0) = G_SHUFFLE_VECTOR %2:_(<2 x p0>), %1:_, shufflemask(0)
%4:_(s32), %5:_(s32) = G_UNMERGE_VALUES %3:_(p0)
$vgpr0 = COPY %4:_(s32)
$vgpr1 = COPY %5:_(s32)
SI_RETURN implicit $vgpr0, implicit $vgpr1
...