[AArch64][GlobalISel] Legalize store <2 x i16>

Differential revision: https://reviews.llvm.org/D105912
This commit is contained in:
Jon Roelofs
2021-07-09 11:26:20 -07:00
parent 01d3a3dcab
commit 43c7ca8e49
2 changed files with 25 additions and 1 deletions

View File

@@ -346,7 +346,8 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
.clampMaxNumElements(0, s32, 4)
.clampMaxNumElements(0, s64, 2)
.lowerIfMemSizeNotPow2()
.customIf(IsPtrVecPred);
.customIf(IsPtrVecPred)
.scalarizeIf(typeIs(0, v2s16), 0);
// Constants
getActionDefinitionsBuilder(G_CONSTANT)

View File

@@ -542,3 +542,26 @@ body: |
G_STORE %val(<6 x s64>), %ptr(p0) :: (store (<6 x s64>), align 16)
RET_ReallyLR
...
---
name: store_2xi16
tracksRegLiveness: true
body: |
bb.1:
liveins: $s0, $x0
; CHECK-LABEL: name: store_2xi16
; CHECK: liveins: $s0, $x0
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $s0
; CHECK: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY1]](<2 x s16>)
; CHECK: G_STORE [[UV]](s16), [[COPY]](p0) :: (store (s16), align 4)
; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
; CHECK: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)
; CHECK: G_STORE [[UV1]](s16), [[PTR_ADD]](p0) :: (store (s16) into unknown-address + 2)
; CHECK: RET_ReallyLR
%0:_(p0) = COPY $x0
%1:_(<2 x s16>) = COPY $s0
G_STORE %1(<2 x s16>), %0(p0) :: (store (<2 x s16>))
RET_ReallyLR
...