diff options
author | Matthew Simpson <mssimpso@codeaurora.org> | 2016-02-18 18:35:45 +0000 |
---|---|---|
committer | Matthew Simpson <mssimpso@codeaurora.org> | 2016-02-18 18:35:45 +0000 |
commit | 921ad01a1ddd581fcf24a689acba4b3bbefbc637 (patch) | |
tree | c864d909b1e62164991de63a6aaf40ad24a71f19 /llvm | |
parent | 7c8e2c37ba0a69fcf870b7c3ff4a488753147cc3 (diff) | |
download | bcm5719-llvm-921ad01a1ddd581fcf24a689acba4b3bbefbc637.tar.gz bcm5719-llvm-921ad01a1ddd581fcf24a689acba4b3bbefbc637.zip |
[AArch64] Reduce vector insert/extract cost for Kryo
Differential Revision: http://reviews.llvm.org/D17379
llvm-svn: 261237
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp | 2 | ||||
-rw-r--r-- | llvm/test/Analysis/CostModel/AArch64/kryo.ll | 26 |
2 files changed, 28 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp index bc044195856..08b89dc3c67 100644 --- a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp +++ b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp @@ -313,6 +313,8 @@ int AArch64TTIImpl::getVectorInstrCost(unsigned Opcode, Type *Val, } // All other insert/extracts cost this much. + if (ST->isKryo()) + return 2; return 3; } diff --git a/llvm/test/Analysis/CostModel/AArch64/kryo.ll b/llvm/test/Analysis/CostModel/AArch64/kryo.ll new file mode 100644 index 00000000000..4b916a286ea --- /dev/null +++ b/llvm/test/Analysis/CostModel/AArch64/kryo.ll @@ -0,0 +1,26 @@ +; RUN: opt < %s -cost-model -analyze -mcpu=kryo | FileCheck %s + +target datalayout = "e-m:e-i64:64-i128:128-n32:64-S128" +target triple = "aarch64--linux-gnu" + +; CHECK-LABEL: vectorInstrCost +define void @vectorInstrCost() { + + ; Vector extracts - extracting the first element should have a zero cost; + ; all other elements should have a cost of two. + ; + ; CHECK: cost of 0 {{.*}} extractelement <2 x i64> undef, i32 0 + ; CHECK: cost of 2 {{.*}} extractelement <2 x i64> undef, i32 1 + %t1 = extractelement <2 x i64> undef, i32 0 + %t2 = extractelement <2 x i64> undef, i32 1 + + ; Vector inserts - inserting the first element should have a zero cost; all + ; other elements should have a cost of two. + ; + ; CHECK: cost of 0 {{.*}} insertelement <2 x i64> undef, i64 undef, i32 0 + ; CHECK: cost of 2 {{.*}} insertelement <2 x i64> undef, i64 undef, i32 1 + %t3 = insertelement <2 x i64> undef, i64 undef, i32 0 + %t4 = insertelement <2 x i64> undef, i64 undef, i32 1 + + ret void +} |