[llvm-dev] [LAI] Question about getDependences

Dangeti Tharun kumar via llvm-dev llvm-dev at lists.llvm.org
Thu Feb 18 10:57:44 PST 2021


Hi Florian,

Thanks for the reply.

We have tried a condition like this:

*if (LAI.getMaxSafeDepDistBytes() == -1ULL && !LAI.canVectorizeMemory()) {*
*  print("Unknown dependences in loop");*
*  return false;*
*}*

Looks like *LAI.getMaxSafeDepDistBytes() *is *not always *capturing the
distance for non-vectorizable loops.

This example from TSVC, is not vectorizable but dependences are analyzable.

for (int i = 1; i < LEN_1D - 1; i++) {
      a[i] = b[i - 1] + c[i] * d[i];
      b[i] = b[i + 1] - e[i] * d[i];
 }


* LAI.getMaxSafeDepDistBytes() is : (ULL)-1*
* LAI.canVectroizeMemory is : false*

Any more suggestions would be appreciated. :)




On Thu, Feb 18, 2021 at 11:54 PM Florian Hahn <florian_hahn at apple.com>
wrote:

> Hi,
>
> On 18 Feb 2021, at 18:17, Dangeti Tharun kumar via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
> Hi,
>
> I am using LAI->getDependences(), It returns a vector of Dependence
> objects in a Loop.
> If the loop is un-analyzable or parallel, an empty list is returned.
>
> *for example:*
>
> *Loop A:*
> for (int i = 0; i < N; i ++) {
>         a[i] = c[i] + d[i];
>         b[i] = c[i] * d[i];
> }
> *Loop B:*
> for (int i = 0; i < N; i++) {
>      a[b[i]] = c[i] + d[i];
>      c[i] = c[i  - 1] + 1;
> }
>
> Loop A is parallel and Loop B has non-simple dependences(LAI bails out)
> for both the cases we get an empty set of dependences.
>
> Is there an API that can tell if LAI was successful in dependence
> computation?
>
>
> I think canVectorizeMemory should do what you want (possibly in
> combination with getMaxSafeDepDistBytes
>
> Cheers,
> Florian
>


-- 
Regards,
DTharun

-- 


Disclaimer:- This footer text is to convey that this email is sent by one 
of the users of IITH. So, do not mark it as SPAM.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210219/ff176c29/attachment.html>


More information about the llvm-dev mailing list