diff options
author | Guozhi Wei <carrot@google.com> | 2016-12-12 22:09:02 +0000 |
---|---|---|
committer | Guozhi Wei <carrot@google.com> | 2016-12-12 22:09:02 +0000 |
commit | 1fd553c9345ff9f1f32b1256bae0f2d63ec3ae38 (patch) | |
tree | bc1eee5191bd4080607547efdd097a04e8df213c /llvm/test | |
parent | 44bde896a5f88f0d4e283ff4b5ab3a04df32848d (diff) | |
download | bcm5719-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.ll | 26 |
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 +} + |