[TTI] BasicTTIImpl assumes no vector registers
authorJingyue Wu <jingyue@google.com>
Fri, 10 Jul 2015 21:14:54 +0000 (21:14 +0000)
committerJingyue Wu <jingyue@google.com>
Fri, 10 Jul 2015 21:14:54 +0000 (21:14 +0000)
commit020938f3ee30e3635d02d2936127abc77ef664ac
tree186ccec2abc030e970c422af69c2251b1cd51071
parent01446706b4c0a86bb64768f307079cab5c514aa3
[TTI] BasicTTIImpl assumes no vector registers

Summary:
Following the discussion on r241884, it's more reasonable to assume that a
target has no vector registers by default instead of letting every such
target overrides getNumberOfRegisters.

Therefore, this patch modifies BasicTTIImpl::getNumberOfRegisters to
return 0 when Vector is true, and partially reverts r241884 which
modifies NVPTXTTIImpl::getNumberOfRegisters.

It also fixes a performance bug in LoopVectorizer. Even if a target has
no vector registers, vectorization may still help ILP. So, we need both
checks to be false before disabling loop vectorization all together.

Reviewers: hfinkel

Subscribers: llvm-commits, jholewinski

Differential Revision: http://reviews.llvm.org/D11108

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241942 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/BasicTTIImpl.h
lib/Target/NVPTX/NVPTXTargetTransformInfo.cpp
lib/Target/NVPTX/NVPTXTargetTransformInfo.h
lib/Transforms/Vectorize/LoopVectorize.cpp