From 1fd553c9345ff9f1f32b1256bae0f2d63ec3ae38 Mon Sep 17 00:00:00 2001 From: Guozhi Wei Date: Mon, 12 Dec 2016 22:09:02 +0000 Subject: [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 --- llvm/test/CodeGen/PowerPC/pr31144.ll | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 llvm/test/CodeGen/PowerPC/pr31144.ll (limited to 'llvm/test/CodeGen/PowerPC') 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 +} + -- cgit v1.2.3