git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369172
91177308-0d34-0410-b5e6-
96231b3b80d8
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!");
ret <2 x half> undef
}
+ define void @test_s128(i128 %p) { ret void }
+
...
---
name: test_v2s64_unmerge
$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
+...