search for: loopdispositions

Displaying 10 results from an estimated 10 matches for "loopdispositions".

2017 Nov 20
2
Nowaday Scalar Evolution's Problem.
...ng analysis 'Scalar Evolution Analysis' for function 'UnpredictableBackedgeTakenCountFunc1': Classifying expressions for: @UnpredictableBackedgeTakenCountFunc1 %2 = phi i32 [ 0, %0 ], [ %10, %5 ] --> %2 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %1: Variant } %6 = phi i32 [ 5, %4 ], [ %2, %1 ] --> %6 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %1: Variant } %8 = zext i1 %7 to i32 --> (zext i1 %7 to i32) U: [0,2) S: [0,2) Exits: <<Unknown>>...
2018 Aug 15
2
[SCEV] Why is backedge-taken count <nsw> instead of <nuw>?
...2 %n to i64 > --> (zext i32 %n to i64) U: [0,4294967296) S: [0,4294967296) > %x.06 = phi i64 [ %inc, %for.body ], [ 1, %entry ] > --> {1,+,1}<nuw><nsw><%for.body> U: [1,-9223372036854775808) S: > [1,-9223372036854775808) Exits: (-1 + (zext i32 %n to i64)) LoopDispositions: > { %for.body: Computable } > %inc = add nuw nsw i64 %x.06, 1 > --> {2,+,1}<nuw><%for.body> U: [2,0) S: [2,0) Exits: (zext i32 %n to > i64) LoopDispositions: { %for.body: Computable } > Determining loop execution counts for: @func > Loop %for.body: backedge-ta...
2018 Aug 15
2
[SCEV] Why is backedge-taken count <nsw> instead of <nuw>?
...> --> (zext i32 %n to i64) U: [0,4294967296) S: [0,4294967296) >> %x.06 = phi i64 [ %inc, %for.body ], [ 1, %entry ] >> --> {1,+,1}<nuw><nsw><%for.body> U: [1,-9223372036854775808) S: >> [1,-9223372036854775808) Exits: (-1 + (zext i32 %n to i64)) LoopDispositions: >> { %for.body: Computable } >> %inc = add nuw nsw i64 %x.06, 1 >> --> {2,+,1}<nuw><%for.body> U: [2,0) S: [2,0) Exits: (zext i32 %n to >> i64) LoopDispositions: { %for.body: Computable } >> Determining loop execution counts for: @func >> Loo...
2017 Jul 24
2
LazyValueInfo vs ScalarEvolution
...nfo give: POP %tmp86 = phi i32 [ 1, %bb73 ], [ %tmp95, %bb85 ] in bb85 = constantrange<-2147483648, 20> While ScalarEvolution give: %tmp86 = phi i32 [ 1, %bb73 ], [ %tmp95, %bb85 ] --> {1,+,1}<nuw><nsw><%bb85> U: [1,20) S: [1,20) Exits: 19 LoopDispositions: { %bb85: Computable, %bb73: Variant, %bb46: Variant } In this example, the range of %tmp86 is <-2147483648, 20> from LazyValueInfo, but it is [1,20) from ScalarEvolution. How can I interpret these results? Is there a way to get [0, 20) for %tmp86 in LazyValueInfo? Thanks Hongbin ---------...
2018 Aug 15
2
[SCEV] Why is backedge-taken count <nsw> instead of <nuw>?
...; (zext i32 %n to i64) U: [0,4294967296) S: [0,4294967296) >>> %x.06 = phi i64 [ %inc, %for.body ], [ 1, %entry ] >>> --> {1,+,1}<nuw><nsw><%for.body> U: [1,-9223372036854775808) S: >>> [1,-9223372036854775808) Exits: (-1 + (zext i32 %n to i64)) LoopDispositions: >>> { %for.body: Computable } >>> %inc = add nuw nsw i64 %x.06, 1 >>> --> {2,+,1}<nuw><%for.body> U: [2,0) S: [2,0) Exits: (zext i32 %n to >>> i64) LoopDispositions: { %for.body: Computable } >>> Determining loop execution counts for...
2018 Aug 16
3
[SCEV] Why is backedge-taken count <nsw> instead of <nuw>?
...%n to i64) U: [0,4294967296) S: [0,4294967296) >>>> %x.06 = phi i64 [ %inc, %for.body ], [ 1, %entry ] >>>> --> {1,+,1}<nuw><nsw><%for.body> U: [1,-9223372036854775808) S: >>>> [1,-9223372036854775808) Exits: (-1 + (zext i32 %n to i64)) LoopDispositions: >>>> { %for.body: Computable } >>>> %inc = add nuw nsw i64 %x.06, 1 >>>> --> {2,+,1}<nuw><%for.body> U: [2,0) S: [2,0) Exits: (zext i32 %n >>>> to i64) LoopDispositions: { %for.body: Computable } >>>> Determining loop...
2017 Dec 01
0
Using Scalar Evolution to Identify Expressions Evolving in terms of Loop induction variables
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...
2017 Dec 01
2
Using Scalar Evolution to Identify Expressions Evolving in terms of Loop induction variables
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;
2017 Jul 24
2
LazyValueInfo vs ScalarEvolution
...in bb85 = >> constantrange<-2147483648, 20> >> >> While ScalarEvolution give: >> >> %tmp86 = phi i32 [ 1, %bb73 ], [ %tmp95, %bb85 ] >> --> {1,+,1}<nuw><nsw><%bb85> U: [1,20) S: [1,20) Exits: >> 19 LoopDispositions: { %bb85: Computable, %bb73: Variant, >> %bb46: Variant } >> >> In this example, the range of %tmp86 is <-2147483648, 20> from >> LazyValueInfo, but it is [1,20) from ScalarEvolution. >> >> How can I interpret these results? >> Is there a way to get [...
2018 May 28
0
[RFC] A New Divergence Analysis for LLVM
...; len * 2 < n; len *= 2) {    for (int k = 0; k < n k += 2 * len) {      A[k * n + i] += A[(k + len) * n + i];    }  } } The variable “len” is uniform with regards to the outer i-loop. SCEV does not detect this: %mul44 U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %for.body8.lr.ph: Variant, %for.body: Variant, %for.body8: Invariant } -- The new DivergenceAnalysis -- The proposed DivergenceAnalysis detects divergence in unstructured, reducible control flow and nested divergent loops. The implementation provides light-weight frontends for use in VPlan...