[llvm] r190936 - Prevent LoopVectorizer and SLPVectorizer running if the target has no vector registers.
tobias at grosser.es
Wed Sep 18 06:00:51 PDT 2013
On 09/18/2013 02:43 PM, Robert Lytton wrote:
> Author: rlytton
> Date: Wed Sep 18 07:43:35 2013
> New Revision: 190936
> URL: http://llvm.org/viewvc/llvm-project?rev=190936&view=rev
> Prevent LoopVectorizer and SLPVectorizer running if the target has no vector registers.
> XCore target: Add XCoreTargetTransformInfo
> This is where getNumberOfRegisters() resides, which in turn returns the
> number of vector registers (=0).
your patch may prevent partial loop unrolling as performed by the loop
In commit 'r189281 - LoopVectorize: Implement partial loop unrolling
when vectorization is not profitable.' Nadav implemented partial loop
unrolling as part of the Loop Vectorizer. I am unsure if partial loop
unrolling might still be useful/beneficial for targets without vector
registers. However, in case it is, your current patch prevents it on
At the time Nadav's patch was committed there was some discussion if
doing unrolling within the vectorizer may cause misunderstandings due to
the fact that a vectorizer now does more than just vectorization. Is
your commit based on such a misunderstanding or does e.g. the XCore
target not benefit from partial loop unrolling?
More information about the llvm-commits