summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorJonas Paulsson <paulsson@linux.vnet.ibm.com>2017-04-12 12:41:37 +0000
committerJonas Paulsson <paulsson@linux.vnet.ibm.com>2017-04-12 12:41:37 +0000
commitda74ed42dadbbf62644fb8fe0ff1e7885c7b2a04 (patch)
tree5ead03687c900acdb6bf62c7c34fa34f62b03480 /llvm/lib/Target
parent12194e9bec6f5c4dc887659983764e6cfb708205 (diff)
downloadbcm5719-llvm-da74ed42dadbbf62644fb8fe0ff1e7885c7b2a04.tar.gz
bcm5719-llvm-da74ed42dadbbf62644fb8fe0ff1e7885c7b2a04.zip
[LoopVectorizer, TTI] New method supportsEfficientVectorElementLoadStore()
Since SystemZ supports vector element load/store instructions, there is no need for extracts/inserts if a vector load/store gets scalarized. This patch lets Target specify that it supports such instructions by means of a new TTI hook that defaults to false. The use for this is in the LoopVectorizer getScalarizationOverhead() method, which will with this patch produce a smaller sum for a vector load/store on SystemZ. New test: test/Transforms/LoopVectorize/SystemZ/load-store-scalarization-cost.ll Review: Adam Nemet https://reviews.llvm.org/D30680 llvm-svn: 300056
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.h b/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.h
index d2639cb271d..3766ed45b8c 100644
--- a/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.h
+++ b/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.h
@@ -55,6 +55,7 @@ public:
unsigned getNumberOfRegisters(bool Vector);
unsigned getRegisterBitWidth(bool Vector);
+ bool supportsEfficientVectorElementLoadStore() { return true; }
bool enableInterleavedAccessVectorization() { return true; }
int getArithmeticInstrCost(
OpenPOWER on IntegriCloud