summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorMohammed Agabaria <mohammed.agabaria@intel.com>2017-11-16 09:38:32 +0000
committerMohammed Agabaria <mohammed.agabaria@intel.com>2017-11-16 09:38:32 +0000
commit6e6d5326a13bbc6529453ffcd6d492c7b43c8eb0 (patch)
tree4b322e788aa6f6483b1efce957d0609ae2375b47 /llvm/lib
parentfe3eda91370c152bea45273d467735ddf8592d19 (diff)
downloadbcm5719-llvm-6e6d5326a13bbc6529453ffcd6d492c7b43c8eb0.tar.gz
bcm5719-llvm-6e6d5326a13bbc6529453ffcd6d492c7b43c8eb0.zip
[TTI][X86] update costs of interleaved load\store of i64\double
This patch contains more accurate cost of interelaved load\store of stride 2 for the types int64\double on AVX2. Reviewers: delena, RKSimon, craig.topper, dorit Reviewed By: dorit Differential Revision: https://reviews.llvm.org/D40008 llvm-svn: 318385
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86TargetTransformInfo.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp
index 28c5d0449c8..79033327d07 100644
--- a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp
+++ b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp
@@ -2647,6 +2647,9 @@ int X86TTIImpl::getInterleavedMemoryOpCostAVX2(unsigned Opcode, Type *VecTy,
// The cost of the loads/stores is accounted for separately.
//
static const CostTblEntry AVX2InterleavedLoadTbl[] = {
+ { 2, MVT::v4i64, 6 }, //(load 8i64 and) deinterleave into 2 x 4i64
+ { 2, MVT::v4f64, 6 }, //(load 8f64 and) deinterleave into 2 x 4f64
+
{ 3, MVT::v2i8, 10 }, //(load 6i8 and) deinterleave into 3 x 2i8
{ 3, MVT::v4i8, 4 }, //(load 12i8 and) deinterleave into 3 x 4i8
{ 3, MVT::v8i8, 9 }, //(load 24i8 and) deinterleave into 3 x 8i8
@@ -2664,6 +2667,9 @@ int X86TTIImpl::getInterleavedMemoryOpCostAVX2(unsigned Opcode, Type *VecTy,
};
static const CostTblEntry AVX2InterleavedStoreTbl[] = {
+ { 2, MVT::v4i64, 6 }, //interleave into 2 x 4i64 into 8i64 (and store)
+ { 2, MVT::v4f64, 6 }, //interleave into 2 x 4f64 into 8f64 (and store)
+
{ 3, MVT::v2i8, 7 }, //interleave 3 x 2i8 into 6i8 (and store)
{ 3, MVT::v4i8, 8 }, //interleave 3 x 4i8 into 12i8 (and store)
{ 3, MVT::v8i8, 11 }, //interleave 3 x 8i8 into 24i8 (and store)
OpenPOWER on IntegriCloud