summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp4
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/legalize-load-v4s32.mir21
2 files changed, 23 insertions, 2 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp b/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp
index b3c2fbf2b15..f0648f0b071 100644
--- a/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp
@@ -167,7 +167,7 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST) {
.unsupportedIfMemSizeNotPow2()
// Lower any any-extending loads left into G_ANYEXT and G_LOAD
.lowerIf([=](const LegalityQuery &Query) {
- return Query.Types[0].getSizeInBits() != Query.MMODescrs[0].Size * 8;
+ return Query.Types[0].getSizeInBits() != Query.MMODescrs[0].Size;
})
.clampNumElements(0, v2s32, v2s32);
@@ -185,7 +185,7 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST) {
.unsupportedIfMemSizeNotPow2()
.lowerIf([=](const LegalityQuery &Query) {
return Query.Types[0].isScalar() &&
- Query.Types[0].getSizeInBits() != Query.MMODescrs[0].Size * 8;
+ Query.Types[0].getSizeInBits() != Query.MMODescrs[0].Size;
})
.clampNumElements(0, v2s32, v2s32);
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-load-v4s32.mir b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-load-v4s32.mir
new file mode 100644
index 00000000000..8493bd8292c
--- /dev/null
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-load-v4s32.mir
@@ -0,0 +1,21 @@
+# RUN: not llc -march=aarch64 -o - -run-pass=legalizer -debug-only=legalizer 2>&1 %s | FileCheck %s
+# REQUIRES: asserts
+
+# CHECK: Legalize Machine IR for: load_v4s32
+# CHECK-NEXT: %{{[0-9]+}}:_(<4 x s32>) = G_LOAD %{{[0-9]+}}:_(p0)
+# CHECK-NOT: Lower
+# CHECK: unable to legalize instruction
+---
+name: load_v4s32
+legalized: false
+tracksRegLiveness: true
+body: |
+ bb.1:
+ liveins: $x0
+
+ %0:_(p0) = COPY $x0
+ %1:_(<4 x s32>) = G_LOAD %0(p0) :: (load 16, align 4)
+ %2:_(s32), %3:_(s32), %4:_(s32), %5:_(s32) = G_UNMERGE_VALUES %1(<4 x s32>)
+ $w0 = COPY %5(s32)
+
+...
OpenPOWER on IntegriCloud