summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorGuozhi Wei <carrot@google.com>2016-12-12 22:09:02 +0000
committerGuozhi Wei <carrot@google.com>2016-12-12 22:09:02 +0000
commit1fd553c9345ff9f1f32b1256bae0f2d63ec3ae38 (patch)
treebc1eee5191bd4080607547efdd097a04e8df213c /llvm/test
parent44bde896a5f88f0d4e283ff4b5ab3a04df32848d (diff)
downloadbcm5719-llvm-1fd553c9345ff9f1f32b1256bae0f2d63ec3ae38.tar.gz
bcm5719-llvm-1fd553c9345ff9f1f32b1256bae0f2d63ec3ae38.zip
[PPC] Prefer direct move on power8 if load 1 or 2 bytes to VSR
Power8 has MTVSRWZ but no LXSIBZX/LXSIHZX, so move 1 or 2 bytes to VSR through MTVSRWZ is much faster than store the extended value into stack and load it with LXSIWZX. This patch fixes pr31144. Differential Revision: https://reviews.llvm.org/D27287 llvm-svn: 289473
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/CodeGen/PowerPC/pr31144.ll26
1 files changed, 26 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/PowerPC/pr31144.ll b/llvm/test/CodeGen/PowerPC/pr31144.ll
new file mode 100644
index 00000000000..dc48d7cdfc3
--- /dev/null
+++ b/llvm/test/CodeGen/PowerPC/pr31144.ll
@@ -0,0 +1,26 @@
+; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 -mattr=+vsx < %s | FileCheck %s --implicit-check-not lxsiwzx
+
+declare void @bar(double)
+
+define void @foo1(i8* %p) {
+entry:
+ %0 = load i8, i8* %p, align 1
+ %conv = uitofp i8 %0 to double
+ call void @bar(double %conv)
+ ret void
+
+; CHECK-LABEL: @foo1
+; CHECK: mtvsrwz
+}
+
+define void @foo2(i16* %p) {
+entry:
+ %0 = load i16, i16* %p, align 2
+ %conv = uitofp i16 %0 to double
+ call void @bar(double %conv)
+ ret void
+
+; CHECK-LABEL: @foo2
+; CHECK: mtvsrwz
+}
+
OpenPOWER on IntegriCloud