search for: lftr

Displaying 20 results from an estimated 36 matches for "lftr".

Did you mean: ldtr
2010 Nov 15
0
[LLVMdev] Landing my new development on the trunk ...
...is one thing both the original paper, the original MSCP > implementation did (too bad the links to this point to ftp.cs.rice.edu > <http://ftp.cs.rice.edu>, which no longer works, the web files were a > great implementation resource) , and my GCC implementation did, which > is LFTR (Linear Function Test Replacement). LFTR after OSR can help > reduce register pressure since it enables eliminating the IV's that no > longer serve any useful purpose. I don't see any implementation in > this code. > > --Dan Dan, LFTR (Linear Function Test Replacement) w...
2010 Nov 14
2
[LLVMdev] Landing my new development on the trunk ...
...ok the OSR code and used it as a basis for LSR. There is one thing both the original paper, the original MSCP implementation did (too bad the links to this point to ftp.cs.rice.edu, which no longer works, the web files were a great implementation resource) , and my GCC implementation did, which is LFTR (Linear Function Test Replacement). LFTR after OSR can help reduce register pressure since it enables eliminating the IV's that no longer serve any useful purpose. I don't see any implementation in this code. --Dan -------------- next part -------------- An HTML attachment was scrubbed......
2015 Aug 20
2
loop unrolling introduces conditional branch
...; preds = %0, %7* * %indvars.iv = phi i64 [ %indvars.iv.next.2, %7 ], [ 0, %0 ]* * %2 = getelementptr inbounds i32* %array_x, i64 %indvars.iv* * %3 = trunc i64 %indvars.iv to i32* * store i32 %3, i32* %2* * %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1* * %lftr.wideiv = trunc i64 %indvars.iv.next to i32* * %exitcond = icmp ne i32 %lftr.wideiv, %n* * br i1 %exitcond, label %4, label %._crit_edge* *._crit_edge: ; preds = %.lr.ph <http://lr.ph/>, %4, %7, %0* * ret void* *; <label>:4...
2010 Nov 16
1
[LLVMdev] Landing my new development on the trunk ...
...tput compares. >> > > There is one thing both the original paper, the original MSCP > implementation did (too bad the links to this point to ftp.cs.rice.edu, > which no longer works, the web files were a great implementation resource) , > and my GCC implementation did, which is LFTR (Linear Function Test > Replacement). LFTR after OSR can help reduce register pressure since it > enables eliminating the IV's that no longer serve any useful purpose. I > don't see any implementation in this code. > > --Dan > > Dan, > > LFTR (Linear Function Te...
2015 Aug 20
2
loop unrolling introduces conditional branch
...preds > = %0, %7* > * %indvars.iv = phi i64 [ %indvars.iv.next.2, %7 ], [ 0, %0 ]* > * %2 = getelementptr inbounds i32* %array_x, i64 %indvars.iv* > * %3 = trunc i64 %indvars.iv to i32* > * store i32 %3, i32* %2* > * %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1* > * %lftr.wideiv = trunc i64 %indvars.iv.next to i32* > * %exitcond = icmp ne i32 %lftr.wideiv, %n* > * br i1 %exitcond, label %4, label %._crit_edge* > > *._crit_edge: ; preds = %.lr.ph > <http://lr.ph/>, %4, %7, %0* > * ret void* > > *;...
2015 Aug 21
2
loop unrolling introduces conditional branch
...= phi i64 [ %indvars.iv.next.2, %7 ], [ 0, %0 ]* >>> * %2 = getelementptr inbounds i32* %array_x, i64 %indvars.iv* >>> * %3 = trunc i64 %indvars.iv to i32* >>> * store i32 %3, i32* %2* >>> * %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1* >>> * %lftr.wideiv = trunc i64 %indvars.iv.next to i32* >>> * %exitcond = icmp ne i32 %lftr.wideiv, %n* >>> * br i1 %exitcond, label %4, label %._crit_edge* >>> >>> *._crit_edge: ; preds = %.lr.ph >>> <http://lr.ph/>, %4,...
2015 Aug 22
2
loop unrolling introduces conditional branch
...0, %0 ]* >>>>> * %2 = getelementptr inbounds i32* %array_x, i64 %indvars.iv* >>>>> * %3 = trunc i64 %indvars.iv to i32* >>>>> * store i32 %3, i32* %2* >>>>> * %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1* >>>>> * %lftr.wideiv = trunc i64 %indvars.iv.next to i32* >>>>> * %exitcond = icmp ne i32 %lftr.wideiv, %n* >>>>> * br i1 %exitcond, label %4, label %._crit_edge* >>>>> >>>>> *._crit_edge: ; preds = %.lr.ph >&gt...
2015 Aug 22
3
loop unrolling introduces conditional branch
....iv.next.prol, %3 ] %prol.iter = phi i32 [ %xtraiter, %.lr.ph ], [ %prol.iter.sub, %3 ] %4 = getelementptr inbounds i32, i32* %array_x, i64 %indvars.iv.prol %5 = trunc i64 %indvars.iv.prol to i32 store i32 %5, i32* %4, align 4 %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1 %lftr.wideiv.prol = trunc i64 %indvars.iv.next.prol to i32 %exitcond.prol = icmp ne i32 %lftr.wideiv.prol, %n %prol.iter.sub = sub i32 %prol.iter, 1 %prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0 br i1 %prol.iter.cmp, label %3, label %.lr.ph.split, !llvm.loop !1 .lr.ph.split:...
2015 Aug 22
2
loop unrolling introduces conditional branch
...IVMySoyBIPowkHDEyR7lvQ&e=> > ], [ %prol.iter.sub, %3 ] > %4 = getelementptr inbounds i32, i32* %array_x, i64 %indvars.iv.prol > %5 = trunc i64 %indvars.iv.prol to i32 > store i32 %5, i32* %4, align 4 > %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1 > %lftr.wideiv.prol = trunc i64 %indvars.iv.next.prol to i32 > %exitcond.prol = icmp ne i32 %lftr.wideiv.prol, %n > %prol.iter.sub = sub i32 %prol.iter, 1 > %prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0 > br i1 %prol.iter.cmp, label %3, label %.lr.ph.split, !llvm.loop !1 > > .lr....
2015 Feb 26
6
[LLVMdev] RFC: Loop versioning for LICM
...%for.body3.loopVersion.preheader ] %arrayidx.loopVersion = getelementptr inbounds i32* %var1, i64 %indvars.iv.loopVersion store i32 %add, i32* %arrayidx.loopVersion, align 4, !tbaa !1, !alias.scope !11, !noalias !11 %indvars.iv.next.loopVersion = add nuw nsw i64 %indvars.iv.loopVersion, 1 %lftr.wideiv.loopVersion = trunc i64 %indvars.iv.loopVersion to i32 %exitcond.loopVersion = icmp eq i32 %lftr.wideiv.loopVersion, %0 br i1 %exitcond.loopVersion, label %for.inc11.loopexit38, label %for.body3.loopVersion <Original Loop> for.body3: ; preds...
2013 Jul 11
1
[LLVMdev] Scalar Evolution and Loop Trip Count.
....iv = phi i32 [ 0, %entry ], [ %indvars.iv.next, %for.body ] %0 = load i32* %arrayidx.phi, align 4, !tbaa !0 %1 = load i32* %arrayidx3.phi, align 4, !tbaa !0 %add = add nsw i32 %1, %0 store i32 %add, i32* %arrayidx5.phi, align 4, !tbaa !0 %indvars.iv.next = add i32 %indvars.iv, 1 %lftr.wideiv = trunc i32 %indvars.iv.next to i8 %exitcond = icmp eq i8 %lftr.wideiv, -1 %arrayidx.inc = getelementptr i32* %arrayidx.phi, i32 1 %arrayidx3.inc = getelementptr i32* %arrayidx3.phi, i32 1 %arrayidx5.inc = getelementptr i32* %arrayidx5.phi, i32 1 br i1 %exitcond, label %for.en...
2016 May 19
4
GEP index canonicalization
...preheader, %for.body %indvars.iv = phi i64 [ 0, %for.body.preheader ], [ %indvars.iv.next, %for.body ] %ptr = getelementptr inbounds i32, i32* %a, i64 %indvars.iv %0 = trunc i64 %indvars.iv to i32 store i32 %0, i32* %ptr, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %lftr.wideiv = trunc i64 %indvars.iv.next to i32 %exitcond = icmp ne i32 %lftr.wideiv, %n br i1 %exitcond, label %for.body, label %for.end.loopexit for.end.loopexit: ; preds = %for.body br label %for.end for.end: ; preds...
2013 Jun 25
2
[LLVMdev] SimplifyIndVar looses nsw flags
...try ], [ %indvars.iv.next, %for.body ] // %sum.04 = phi i32 [ 0, %entry ], [ %add, %for.body ] // %arrayidx = getelementptr inbounds i32* %a, i64 %indvars.iv // %0 = load i32* %arrayidx, align 4, !tbaa !0 // %add = add nsw i32 %0, %sum.04 // %indvars.iv.next = add i64 %indvars.iv, 1 // %lftr.wideiv = trunc i64 %indvars.iv.next to i32 // %exitcond = icmp ne i32 %lftr.wideiv, 1000 // br i1 %exitcond, label %for.body, label %for.end You can see that %inc is transformed into %indvars.iv.next, and the nsw flag is lost in the process. Is this behavior a problem with SimplifyIndVar or i...
2015 Apr 25
3
[LLVMdev] alias analysis on llvm internal globals
...%arrayidx3 = getelementptr inbounds i32, i32* %fooPtr, i64 %indvars.iv %1 = trunc i64 %indvars.iv to i32 store i32 %1, i32* %arrayidx3, align 4, !tbaa !7 %2 = load i32, i32* %arrayidx, align 4, !tbaa !7 %add = add nsw i32 %2, %sum.011 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %lftr.wideiv = trunc i64 %indvars.iv.next to i32 %exitcond = icmp eq i32 %lftr.wideiv, %aconst br i1 %exitcond, label %for.end.loopexit, label %for.body, !llvm.loop !5 for.end.loopexit: ; preds = %for.body %add.lcssa = phi i32 [ %add, %for.body ] br label %for.end...
2015 Feb 26
1
[LLVMdev] RFC: Loop versioning for LICM
...ion.preheader ] > %arrayidx.loopVersion = getelementptr inbounds i32* %var1, i64 %indvars.iv.loopVersion > store i32 %add, i32* %arrayidx.loopVersion, align 4, !tbaa !1, !alias.scope !11, !noalias !11 > %indvars.iv.next.loopVersion = add nuw nsw i64 %indvars.iv.loopVersion, 1 > %lftr.wideiv.loopVersion = trunc i64 %indvars.iv.loopVersion to i32 > %exitcond.loopVersion = icmp eq i32 %lftr.wideiv.loopVersion, %0 > br i1 %exitcond.loopVersion, label %for.inc11.loopexit38, label %for.body3.loopVersion > > <Original Loop> > for.body3:...
2013 Jun 26
0
[LLVMdev] [llvm] r184698 - Add a flag to defer vectorization into a phase after the inliner and its
Sent from my iPhone... On Jun 25, 2013, at 8:14 AM, Hal Finkel <hfinkel at anl.gov> wrote: > ----- Original Message ----- >> >> >> >> On Jun 24, 2013, at 4:24 PM, Hal Finkel < hfinkel at anl.gov > wrote: >> >> >> >> >> Indvars should ideally preserve NSW flags whenever possible. However, >> we don't want to
2016 Jul 13
3
IR -> source pretty printing?
Hi, I often find myself staring at IR and wanting to look at the C source code it corresponds to. To do so, I look up the debug identifier for the given IR line, scroll to the bottom of the IR file to find the debug identifier, look at the debug location (source and column), and then look at the source file. Too many steps. What would be great is a tool that took two files, i.e., a .c file and a
2013 Jun 25
2
[LLVMdev] [llvm] r184698 - Add a flag to defer vectorization into a phase after the inliner and its
----- Original Message ----- > > > > On Jun 24, 2013, at 4:24 PM, Hal Finkel < hfinkel at anl.gov > wrote: > > > > > Indvars should ideally preserve NSW flags whenever possible. However, > we don't want to rely on SCEV to preserve them. SCEV expressions are > implicitly reassociated and uniqued in a flow-insensitive universe > independent of the
2013 Jul 05
0
[LLVMdev] Enabling vectorization with LLVM 3.3 for a DSL emitting LLVM IR
On 07/04/2013 01:39 PM, Stéphane Letz wrote: > Hi, > > Our DSL can generate C or directly generate LLVM IR. With LLVM 3.3, we can vectorize the C produced code using clang with -O3, or clang with -O1 then opt -O3 -vectorize-loops. But the same program generating LLVM IR version cannot be vectorized with opt -O3 -vectorize-loops. So our guess is that our generated LLVM IR lacks some
2014 Jan 22
3
[LLVMdev] Why should we have the LoopPass and LoopPassManager? Can we get rid of this complexity?
On Wed, Jan 22, 2014 at 1:01 AM, Andrew Trick <atrick at apple.com> wrote: > On Jan 22, 2014, at 12:44 AM, Chandler Carruth <chandlerc at gmail.com> > wrote: > > > On Wed, Jan 22, 2014 at 12:33 AM, Andrew Trick <atrick at apple.com> wrote: > >> > There appear to be two chunks of "functionality" provided by loop >> passes: >> >