Skip to content

Commit a11509c

Browse files
committed
[AArch64][GlobalISel] Scalarize i128/fp128 vector loads/stores.
Similar to other operations, we should scalarize these to allow the individual elements to legalize.
1 parent 58ef1eb commit a11509c

File tree

5 files changed

+553
-322
lines changed

5 files changed

+553
-322
lines changed

llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,8 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
422422
return std::pair(0, LLT::scalar(VecTy.getSizeInBits()));
423423
})
424424
.customIf(IsPtrVecPred)
425-
.scalarizeIf(typeInSet(0, {v2s16, v2s8}), 0);
425+
.scalarizeIf(typeInSet(0, {v2s16, v2s8}), 0)
426+
.scalarizeIf(scalarOrEltWiderThan(0, 64), 0);
426427

427428
StoreActions
428429
.customIf([=](const LegalityQuery &Query) {
@@ -463,7 +464,8 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
463464
return std::pair(0, LLT::scalar(VecTy.getSizeInBits()));
464465
})
465466
.customIf(IsPtrVecPred)
466-
.scalarizeIf(typeInSet(0, {v2s16, v2s8}), 0);
467+
.scalarizeIf(typeInSet(0, {v2s16, v2s8}), 0)
468+
.scalarizeIf(scalarOrEltWiderThan(0, 64), 0);
467469

468470
getActionDefinitionsBuilder(G_INDEXED_STORE)
469471
// Idx 0 == Ptr, Idx 1 == Val

0 commit comments

Comments
 (0)