mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
d59d4568d1
The cost model should not assume vector casts get completely scalarized, since on targets that have vector support, the common case is a partial split up to the legal vector size. So, when a vector cast gets split, the resulting casts end up legal and cheap. Instead of pessimistically assuming scalarization, base TTI can use the costs the concrete TTI provides for the split vector, plus a fudge factor to account for the cost of the split itself. This fudge factor is currently 1 by default, except on AMDGPU where inserts and extracts are considered free. Differential Revision: http://reviews.llvm.org/D21251 llvm-svn: 274642
22 lines
530 B
LLVM
22 lines
530 B
LLVM
; RUN: opt < %s -cost-model -analyze -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 -mattr=+vsx | FileCheck %s
|
|
target datalayout = "E-m:e-i64:64-n32:64"
|
|
target triple = "powerpc64-unknown-linux-gnu"
|
|
|
|
define void @exts() {
|
|
|
|
; CHECK: cost of 1 {{.*}} sext
|
|
%v1 = sext i16 undef to i32
|
|
|
|
; CHECK: cost of 1 {{.*}} sext
|
|
%v2 = sext <2 x i16> undef to <2 x i32>
|
|
|
|
; CHECK: cost of 1 {{.*}} sext
|
|
%v3 = sext <4 x i16> undef to <4 x i32>
|
|
|
|
; CHECK: cost of 3 {{.*}} sext
|
|
%v4 = sext <8 x i16> undef to <8 x i32>
|
|
|
|
ret void
|
|
}
|
|
|