[llvm] r369172 - [AArch64][GlobalISel] Fix an assertion during G_UNMERGE selection for s128 types.
Amara Emerson via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 16 16:23:40 PDT 2019
Author: aemerson
Date: Fri Aug 16 16:23:40 2019
New Revision: 369172
URL: http://llvm.org/viewvc/llvm-project?rev=369172&view=rev
Log:
[AArch64][GlobalISel] Fix an assertion during G_UNMERGE selection for s128 types.
Modified:
llvm/trunk/lib/Target/AArch64/AArch64InstructionSelector.cpp
llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-unmerge.mir
Modified: llvm/trunk/lib/Target/AArch64/AArch64InstructionSelector.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64InstructionSelector.cpp?rev=369172&r1=369171&r2=369172&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/AArch64InstructionSelector.cpp (original)
+++ llvm/trunk/lib/Target/AArch64/AArch64InstructionSelector.cpp Fri Aug 16 16:23:40 2019
@@ -2963,7 +2963,9 @@ bool AArch64InstructionSelector::selectU
const LLT NarrowTy = MRI.getType(I.getOperand(0).getReg());
const LLT WideTy = MRI.getType(SrcReg);
(void)WideTy;
- assert(WideTy.isVector() && "can only unmerge from vector types!");
+ assert(WideTy.isVector() ||
+ WideTy.getSizeInBits() == 128 &&
+ "can only unmerge from vector or s128 types!");
assert(WideTy.getSizeInBits() > NarrowTy.getSizeInBits() &&
"source register size too small!");
Modified: llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-unmerge.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-unmerge.mir?rev=369172&r1=369171&r2=369172&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-unmerge.mir (original)
+++ llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-unmerge.mir Fri Aug 16 16:23:40 2019
@@ -27,6 +27,8 @@
ret <2 x half> undef
}
+ define void @test_s128(i128 %p) { ret void }
+
...
---
name: test_v2s64_unmerge
@@ -208,3 +210,18 @@ body: |
$s1 = COPY %2(<2 x s16>)
RET_ReallyLR implicit $s0
...
+---
+name: test_s128
+alignment: 2
+legalized: true
+regBankSelected: true
+tracksRegLiveness: true
+body: |
+ bb.1:
+ liveins: $q0
+ %0:fpr(s128) = COPY $q0
+ %1:fpr(s64), %2:fpr(s64) = G_UNMERGE_VALUES %0(s128)
+ $d0 = COPY %1(s64)
+ $d1 = COPY %2(s64)
+ RET_ReallyLR implicit $d0, implicit $d1
+...
More information about the llvm-commits
mailing list