]> granicus.if.org Git - llvm/commit
Teach the SLP Vectorizer that keeping some values live over a callsite can have a...
authorJames Molloy <james.molloy@arm.com>
Tue, 5 Aug 2014 12:30:34 +0000 (12:30 +0000)
committerJames Molloy <james.molloy@arm.com>
Tue, 5 Aug 2014 12:30:34 +0000 (12:30 +0000)
commit72035e9a8e92c769175bfdc9abd4dd2405815e9a
treea0d9cf00ede96c0dfda832a33a39acd8d9810de5
parentff8028c8dada8b51772d207f3e13569e09f7553e
Teach the SLP Vectorizer that keeping some values live over a callsite can have a cost.

Some types, such as 128-bit vector types on AArch64, don't have any callee-saved registers. So if a value needs to stay live over a callsite, it must be spilled and refilled. This cost is now taken into account.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214859 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/TargetTransformInfo.h
lib/Analysis/TargetTransformInfo.cpp
lib/Target/AArch64/AArch64TargetTransformInfo.cpp
lib/Transforms/Vectorize/SLPVectorizer.cpp
test/Transforms/SLPVectorizer/AArch64/load-store-q.ll [new file with mode: 0644]