summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/PowerPC
diff options
context:
space:
mode:
authorStefan Pintilie <stefanp@ca.ibm.com>2018-10-01 20:16:27 +0000
committerStefan Pintilie <stefanp@ca.ibm.com>2018-10-01 20:16:27 +0000
commit5d32a86f442071f940366dc962763c7e05d7715e (patch)
treebd8ad771509f8a765e1195489c4a82fd4119cc3d /llvm/test/CodeGen/PowerPC
parent22d4948a50879111f70780c744ee1390a5b33de3 (diff)
downloadbcm5719-llvm-5d32a86f442071f940366dc962763c7e05d7715e.tar.gz
bcm5719-llvm-5d32a86f442071f940366dc962763c7e05d7715e.zip
[PowerPC] Folding XForm to DForm loads requires alignment for some DForm loads.
Going from XForm Load to DSForm Load requires that the immediate be 4 byte aligned. If we are not aligned we must leave the load as LDX (XForm). This bug is causing a compile-time failure in the benchmark h264ref. Differential Revision: https://reviews.llvm.org/D51988 llvm-svn: 343525
Diffstat (limited to 'llvm/test/CodeGen/PowerPC')
-rw-r--r--llvm/test/CodeGen/PowerPC/p9-dform-load-alignment.ll16
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/PowerPC/p9-dform-load-alignment.ll b/llvm/test/CodeGen/PowerPC/p9-dform-load-alignment.ll
new file mode 100644
index 00000000000..b672eef8740
--- /dev/null
+++ b/llvm/test/CodeGen/PowerPC/p9-dform-load-alignment.ll
@@ -0,0 +1,16 @@
+; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown \
+; RUN: -verify-machineinstrs -ppc-asm-full-reg-names \
+; RUN: -ppc-vsr-nums-as-vr < %s | FileCheck %s
+
+@best8x8mode = external dso_local local_unnamed_addr global [4 x i16], align 2
+define dso_local void @AlignDSForm() local_unnamed_addr {
+entry:
+ %0 = load <4 x i16>, <4 x i16>* bitcast ([4 x i16]* @best8x8mode to <4 x i16>*), align 2
+ store <4 x i16> %0, <4 x i16>* undef, align 4
+ unreachable
+; CHECK-LABEL: AlignDSForm
+; CHECK: addis r{{[0-9]+}}, r{{[0-9]+}}, best8x8mode@toc@ha
+; CHECK: addi r[[REG:[0-9]+]], r{{[0-9]+}}, best8x8mode@toc@l
+; CHECK: ldx r{{[0-9]+}}, 0, r[[REG]]
+}
+
OpenPOWER on IntegriCloud