[LLVMdev] Does loop vectorizer inquire about target's SIMD capabilities?

Nadav Rotem nrotem at apple.com
Thu Jan 3 14:29:10 PST 2013


On Jan 3, 2013, at 2:21 PM, Akira Hatanaka <ahatanak at gmail.com> wrote:

> Hi Nadav,
> 
> 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)?

Yes, it should just work. But I am also going to change the default to something more costly.  

> I am concerned about overflow.
> 

I never thought about it. I guess that it would be a good idea to change the LoopVectorizer cost accumulator to uint64. 


Thanks,
Nadav

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130103/3d8b3a11/attachment.html>


More information about the llvm-dev mailing list