[LLVMdev] Does loop vectorizer inquire about target's SIMD capabilities?
ahatanak at gmail.com
Thu Jan 3 14:21:34 PST 2013
On Thu, Jan 3, 2013 at 1:53 PM, Nadav Rotem <nrotem at apple.com> wrote:
> Hi Akira!
> > Does the current loop vectorizer inquire about the SIMD capabilities of
> the target architecture when it decides whether it is profitable to
> vectorize a loop?
> Yes, it uses a cost model to determine the profitability of vectorization.
> At the moment only x86 provides the necessary hooks that are needed for
> calculating the costs. We may need to change the cost defaults to prevent
> vectorization on targets that don't implement the cost interface. If this
> is a problem for you then I can do it soon.
I guess I can just implement all the vectorTargetTransformInfo::get*OpCost
functions since I will later need a cost model for mips-dsp anyway.
Would the code in LoopVectorizationCostModel::expectedCost work correctly
if those functions returned a large integer (max unsigned int)? I am
concerned about overflow.
> I am asking this because I would like to have loop vectorization disabled
> for targets that don't support SIMD instructions (for example, standard
> > Loop vectorization bloats the code size and prolongs compilation time
> without any improvement to performance for such targets.
> Yes. Also, notice that the loop vectorizer tries to be more conservative
> when the 'optforsize' attribute is used.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev