search for: wideiv

Displaying 20 results from an estimated 27 matches for "wideiv".

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...
2015 Aug 20
2
loop unrolling introduces conditional branch
...> = %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* > > *; <lab...
2015 Aug 21
2
loop unrolling introduces conditional branch
...i 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...
2015 Aug 22
2
loop unrolling introduces conditional branch
...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 >>>&g...
2015 Aug 22
3
loop unrolling introduces conditional branch
...ext.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
...oyBIPowkHDEyR7lvQ&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.ph.spli...
2015 Feb 26
6
[LLVMdev] RFC: Loop versioning for LICM
....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 = %for....
2013 Jul 11
1
[LLVMdev] Scalar Evolution and Loop Trip Count.
...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.end, labe...
2016 May 19
4
GEP index canonicalization
...ader, %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 = %for...
2013 Jun 25
2
[LLVMdev] SimplifyIndVar looses nsw flags
..., [ %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 is this...
2015 Apr 25
3
[LLVMdev] alias analysis on llvm internal globals
...rayidx3 = 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 for.e...
2015 Feb 26
1
[LLVMdev] RFC: Loop versioning for LICM
...reheader ] > %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:...
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 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
2013 Feb 04
0
[LLVMdev] Vectorizer using Instruction, not opcodes
..., i64 %indvars.iv LV: Found an estimated cost of 1 for VF 1 For instruction: store i32 %mul, i32* %arrayidx4, align 4, !tbaa !0 LV: Found an estimated cost of 1 for VF 1 For instruction: %indvars.iv.next = add i64 %indvars.iv, 1 LV: Found an estimated cost of 0 for VF 1 For instruction: %lftr.wideiv = trunc i64 %indvars.iv.next to i32 LV: Found an estimated cost of 1 for VF 1 For instruction: %exitcond = icmp ne i32 %lftr.wideiv, 256 LV: Found an estimated cost of 0 for VF 1 For instruction: br i1 %exitcond, label %for.body, label %for.end LV: Scalar loop costs: 6. LV: Found an estimated c...
2013 Feb 25
0
[LLVMdev] loop metdata instruction
On 2/25/2013 2:08 PM, Redmond, Paul wrote: > > I've been looking through past threads looking for an answer to why the loop metadata is attached to the loop latch branch. What is the reason for putting the metadata inside the loop rather than outside (for example on the branch into the loop header.) Latch is a branch to the header. What branch in particular do you have in mind? Loop
2013 Jun 25
0
[LLVMdev] SimplifyIndVar looses nsw flags
...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...
2013 Feb 25
2
[LLVMdev] loop metdata instruction
..., [ 0, %entry ] %arrayidx = getelementptr inbounds float* %b, i64 %indvars.iv %0 = load float* %arrayidx, align 4, !tbaa !1 %arrayidx2 = getelementptr inbounds float* %a, i64 %indvars.iv store float %0, float* %arrayidx2, align 4, !tbaa !1 %indvars.iv.next = add i64 %indvars.iv, 1 %lftr.wideiv = trunc i64 %indvars.iv.next to i32 %exitcond = icmp eq i32 %lftr.wideiv, %n br i1 %exitcond, label %for.end, label %for.body for.end: ; preds = %for.body, %entry ret void } paul > > Loop latch identifies the loop. Loops with multiple latche...
2013 Feb 25
2
[LLVMdev] loop metdata instruction
Hi, I've been looking through past threads looking for an answer to why the loop metadata is attached to the loop latch branch. What is the reason for putting the metadata inside the loop rather than outside (for example on the branch into the loop header.) Note that I'm asking about llvm.loop.parallel not llvm.mem.parallel_loop_access which obviously must be inside the loop. It seems
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