1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-02-01 13:11:39 +01:00
Guozhi Wei 27571a5d37 [ppc] Correctly compute the cost of loading 32/64 bit memory into VSR
VSX has instructions lxsiwax/lxsdx that can load 32/64 bit value into VSX register cheaply. That patch makes it known to memory cost model, so the vectorization of the test case in pr30990 is beneficial.

Differential Revision: https://reviews.llvm.org/D26713

llvm-svn: 288560
2016-12-03 00:41:43 +00:00

20 lines
647 B
LLVM

; RUN: opt < %s -cost-model -analyze -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 -mattr=+vsx | FileCheck %s
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
target triple = "powerpc64-unknown-linux-gnu"
define i32 @loads(i32 %arg) {
; CHECK: cost of 1 {{.*}} load
load <4 x i8>, <4 x i8>* undef, align 1
; CHECK: cost of 1 {{.*}} load
load <8 x i8>, <8 x i8>* undef, align 1
; CHECK: cost of 1 {{.*}} load
load <2 x i16>, <2 x i16>* undef, align 2
; CHECK: cost of 1 {{.*}} load
load <4 x i16>, <4 x i16>* undef, align 2
ret i32 undef
}