[llvm-dev] Using Scalar Evolution to Identify Expressions Evolving in terms of Loop induction variables

Jatin Bhateja via llvm-dev llvm-dev at lists.llvm.org
Thu Nov 30 21:44:57 PST 2017


Hi Hashim,

Scalar evolution determines evolution of scalar in terms of expression
chain driving it.

Try dumping the detailed log using opt -analyze -scalar-evolution <.ll> -S
, and look for LoopDispositions
corresponding to different expression which shows variance characteristics
of a particular expression w.r.t
loop i.e. [computable/variant/invariant].

Thanks

On Fri, Dec 1, 2017 at 10:20 AM, Sharif, Hashim via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

>
> Hi,
>
> I am using Scalar Evolution to extract access expressions (for load and
> store instructions) in terms of the loop induction variables.
> I observe that the Scalar Evolution analysis is returning more expressions
> than I expect - including ones that are not defined
> in terms of the loop induction variable. For instance in the following
> code:
>
>
> for(unsigned long int bid = 0; bid < no_of_queries; bid++){
>
>
>     unsigned long int currNode = no_of_nodes / 2;
>     // process levels of the tree
>
>     for(int i = 0; i < logN; i++){
>
>       if((knodes[currNode].key) > keys[bid]){
>         currNode = knodes[currNode].left_id;
>       }
>       else if ((knodes[currNode].key) < keys[bid]){
>         currNode = knodes[currNode].right_id;
>       }
>       else{
>          break;
>       }
>     }
> }
>
> I expect to extract a SCEV expression for the variable *keys*, however,
> using ScalarEvolution I also get an expression
> (using SE->getSCEV) for *knodes*. Since *knodes* does not evolve in terms
> of the loop induction variable I wasn't expecting to receive a SCEV
> expression for it. Can anyone please point out how SCEV expressions
> evolving in terms of the loop induction variable
> can be distinguished from expressions that are not.
>
> -Hashim
> University of Illinois at Urbana-Champaign
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171201/9100934a/attachment.html>


More information about the llvm-dev mailing list