[PATCH] [LoopVectorize]Teach Loop Vectorizer about interleaved memory access

Hao Liu Hao.Liu at arm.com
Sun May 24 18:29:02 PDT 2015


In http://reviews.llvm.org/D9368#177534, @anemet wrote:

> In http://reviews.llvm.org/D9368#177506, @HaoLiu wrote:
>
> > I think LoopAccessAnalysis is a specific analysis for LV, so it's reasonable to put interleaved access analysis in an analysis specific for LV. If LoopAccessAnalysis is not specific for LV, I agree that we should not put it here. Currently I don't have idea about how other clients could use such interleave information.
> >
> > But I still wonder how "other" clients use this analysis, as it has a lot of LV specific code like "CanVecMem, force-vector-width, force-vector-interleave", .... I wonder how "other" clients could use such analysis. Adam, do you have any example about other clients using LoopAccessAnalysis?
>
>
> Sure, I already mentioned both clients: Transforms/Scalar/LoopDistribute.cpp and the still pending Ashutosh's Loop versioning pass in http://reviews.llvm.org/D9151.
>
> Regarding your first specific question on CanVecMem, the basic design principle for splitting out LAA fron LV was to continue to provide the high-level LV-specific answers (i.e. CanVecMem) but also provide more lower-level/generic information about the dependences and run-time checks so that other passes could also use them (see APIs like: getInterestingDependences, getMemoryInstructions, getRuntimeChecks and getInstructionsForAccess).
>
> Your other question was about force-vector-width, etc.  These influence what dependences are acceptable for LV for its specific view of the dependence information.   The solution here was to provide subtypes like *Vectorizable (see Dependence::DepType).  These "subtypes" provide further classification of the dependence.  LV uses these to allow vectorization of certain Backward dependences.
>
> Loop Distribution does not use this classification since it only cares about forward vs. backward dependences.
>
> Thus the difference is exposed to the clients and they can chose to treat these types differently or uniformly.
>
> Adam


I see. That make sense.

Thanks,
-Hao


http://reviews.llvm.org/D9368

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/






More information about the llvm-commits mailing list