[llvm-dev] Scalar Evolution Analysis

112 views
Skip to first unread message

Bangtian Liu via llvm-dev

unread,
Nov 6, 2021, 3:44:47 AM11/6/21
to llvm...@lists.llvm.org

Hi,

I have the following code as an example:  
 int j=-1; 
for (int i = 0; i < 100; ++i)
{       
     if (c[i] > 0.) {     
              j++;     
              e[j] = d[i];   
 }  }

How can I use LLVM's existing SCEV module to infer that e[j] could be consecutive if consecutive iterations' conditions are true?

Bests,

Bangtian



--
Bangtian Liu   刘 邦天 
CS PhD Candidate

Department of Computer Science 
University of Toronto
Pratt 265C, 6 King's College Road, Toronto, ON M5S 3G4, Canada

Min-Yih Hsu via llvm-dev

unread,
Nov 6, 2021, 5:28:23 PM11/6/21
to Bangtian Liu, llvm...@lists.llvm.org
Maybe llvm::PredicatedScalarEvolution is the one you’re looking for.
IIRC, it was created for loop versioning, so it might insert some runtime checks.

-Min

_______________________________________________
LLVM Developers mailing list
llvm...@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

Philip Reames via llvm-dev

unread,
Nov 12, 2021, 2:03:58 PM11/12/21
to Bangtian Liu, llvm...@lists.llvm.org

I don't believe we have any good way to model a conditionally incremented induction variable when the condition is loop varying and data dependent.  This is not exactly a common or interesting case.

Just out of curiosity, what do you expect to be able to do with this loop optimization wise?  We could maybe vectorize if we had bounds information on 'c', but that's about all I see here.

Philip

Reply all
Reply to author
Forward
0 new messages