search for: loopexit

Displaying 20 results from an estimated 91 matches for "loopexit".

2005 Apr 29
2
[LLVMdev] IntervalPartition bug?
...------------------------------------- Interval Contents: entry: load int* %i ; <int>:0 [#uses=1] load int* %j ; <int>:1 [#uses=1] %tmp.24 = setgt int %k, 0 ; <bool> [#uses=1] %tmp.35 = load int* %i ; <int> [#uses=2] br bool %tmp.24, label %no_exit.preheader, label %loopexit no_exit: ; preds = %no_exit, %no_exit.preheader %indvar = phi uint [ 0, %no_exit.preheader ], [ %indvar.next, %no_exit ] ; <uint> [#uses=2] %j.tmp.1 = phi int [ %j.promoted, %no_exit.preheader ], [ %tmp.8, %no_exit ] ; <int> [#uses=1] %tmp.3.0 = phi int [ %tmp.5, %no_exit ], [ %...
2014 Dec 08
3
[LLVMdev] Incorrect loop optimization when building the Linux kernel
..., i64* %9, align 8, !dbg !3999 %10 = getelementptr inbounds %struct.builtin_fw* %b_fw.02.lcssa, i64 0, i32 1, !dbg !4001 %11 = load i8** %10, align 8, !dbg !4001 %12 = getelementptr inbounds %struct.firmware* %fw, i64 0, i32 1, !dbg !4001 store i8* %11, i8** %12, align 8, !dbg !4001 br label %.loopexit, !dbg !4002 ; <label>:13 ; preds = %1 %14 = getelementptr %struct.builtin_fw* %b_fw.02, i64 1, !dbg !400 tail call void @llvm.dbg.value(metadata !{%struct.builtin_fw* %14}, i64 0, metadata !3989, metadata !3750), !dbg !3990 %15 = icmp eq %struct.builti...
2017 Nov 29
4
CodeExtractor buggy?
...   ; preds = %2   br label %codeRepl codeRepl:                                         ; preds = %4   call void @foo_(%struct.S* %0, i32 %1, %struct.S** %.loc, %struct.S** %.loc1)   %.reload = load %struct.S*, %struct.S** %.loc   %.reload2 = load %struct.S*, %struct.S** %.loc1   br label %.loopexit .loopexit:                                        ; preds = %codeRepl   %.ph = phi %struct.S* [ %.reload2, %codeRepl ], [ %.reload, %codeRepl ]   br label %5 ; <label>:5:                                      ; preds = %.loopexit, %2   %6 = phi %struct.S* [ %0, %2 ], [ %.ph, %.loope...
2015 Jul 16
2
[LLVMdev] Improving loop vectorizer support for loops with a volatile iteration variable
...tail call i32 @done(float* %x, float* %y, float* %z) #1 > > > %lnot.15 = icmp eq i32 %call.14, 0 > > > br i1 %lnot.15, label %for.body.preheader, label %while.end > > > for.body.preheader: ; preds = %entry > > > br label %for.body > > > while.cond.loopexit: ; preds = %for.body > > > %call = tail call i32 @done(float* %x, float* %y, float* %z) #1 > > > %lnot = icmp eq i32 %call, 0 > > > br i1 %lnot, label %for.body.backedge, label %while.end.loopexit > > > for.body: ; preds = %for.body.backedge, %for.body.prehe...
2015 Jul 16
2
[LLVMdev] Improving loop vectorizer support for loops with a volatile iteration variable
...noalias %x, float* noalias %y, float* noalias %z) #0 { entry: %call.14 = tail call i32 @done(float* %x, float* %y, float* %z) #1 %lnot.15 = icmp eq i32 %call.14, 0 br i1 %lnot.15, label %for.body.preheader, label %while.end for.body.preheader: ; preds = %entry br label %for.body while.cond.loopexit: ; preds = %for.body %call = tail call i32 @done(float* %x, float* %y, float* %z) #1 %lnot = icmp eq i32 %call, 0 br i1 %lnot, label %for.body.backedge, label %while.end.loopexit for.body: ; preds = %for.body.backedge, %for.body.preheader %indvars.iv = phi i64 [ 0, %for.body.preheader ], [ %i...
2019 Aug 26
2
SCEV related question
...%i.addr.04 = phi i64 [ %inc, %for.body ], [ %i, %for.body.preheader ] %arrayidx = getelementptr inbounds i32, i32* %a, i64 %i.addr.04 store i32 1, i32* %arrayidx, align 4, !tbaa !2 %inc = add nuw nsw i64 %i.addr.04, 1 %exitcond = icmp eq i64 %inc, 16 br i1 %exitcond, label %for.end.loopexit, label %for.body for.end.loopexit: ; preds = %for.body br label %for.end for.end: ; preds = %for.end.loopexit, %entry ret void } I have also checked that at a pass before above pass SCEV works and returns 16. Here...
2005 Feb 22
0
[LLVMdev] Area for improvement
...: > > .text > .align 16 > .globl init_board > .type init_board, @function > init_board: > subl $4, %esp > movl %esi, (%esp) > movl 8(%esp), %eax > movl $0, %ecx > .LBBinit_board_1: # loopexit.1 > imull $7, %ecx, %edx > movl %eax, %esi > addl %edx, %esi > movb $46, (%esi) > imull $7, %ecx, %edx > movl %eax, %esi > addl %edx, %esi > leal 1(%esi), %edx > movb $46, (%edx) > imull $7...
2014 Dec 26
3
[LLVMdev] Correct usage of `llvm.assume` for loop vectorization alignment?
...ad, <i8 7, i8 7, i8 7, i8 7> %20 = getelementptr %u8XY* %3, i64 0, i32 6, i64 %index %21 = bitcast i8* %20 to <4 x i8>* store <4 x i8> %19, <4 x i8>* %21, align 1 %index.next = add i64 %index, 4 %22 = icmp eq i64 %index.next, %n.vec br i1 %22, label %middle.block.loopexit, label %vector.body, !llvm.loop !1 middle.block.loopexit: ; preds = %vector.body br label %middle.block middle.block: ; preds = %middle.block.loopexit, %entry %resume.val = phi i64 [ 0, %entry ], [ %n.vec, %middle.block.loopexit ]...
2009 Jan 06
2
[LLVMdev] LLVM Optmizer
...bb3: ; preds = %bb3, %entry %indvar = phi i32 [ %indvar.next, %bb3 ], [ 0, %entry ] ; <i32> [#uses=3] %2 = add i32 %indvar, 2 ; <i32> [#uses=1] %3 = icmp sgt i32 %2, %paraml ; <i1> [#uses=1] %indvar.next = add i32 %indvar, 1 ; <i32> [#uses=1] br i1 %3, label %bb5.loopexit, label %bb3 bb5.loopexit: ; preds = %bb3 %tmp14 = add i32 %parami, 1 ; <i32> [#uses=1] %tmp15 = mul i32 %indvar, %tmp14 ; <i32> [#uses=1] %varx.111 = add i32 %tmp15, %varx.110 ; <i32> [#uses=1] %4 = add i32 %varx.111, %parami ; <i32> [#uses=1] %phitmp = add i32 %4...
2005 Feb 22
5
[LLVMdev] Area for improvement
...[ROWS]=0; } This generates the following X86 code: .text .align 16 .globl init_board .type init_board, @function init_board: subl $4, %esp movl %esi, (%esp) movl 8(%esp), %eax movl $0, %ecx .LBBinit_board_1: # loopexit.1 imull $7, %ecx, %edx movl %eax, %esi addl %edx, %esi movb $46, (%esi) imull $7, %ecx, %edx movl %eax, %esi addl %edx, %esi leal 1(%esi), %edx movb $46, (%edx) imull $7, %ecx, %edx movl %eax, %esi addl...
2015 Sep 03
2
[RFC] New pass: LoopExitValues
...iv1 = phi i32* [ %Dst, %for.body.4.lr.ph.preheader ], [ %1, %for.cond.cleanup.3 ] %Outer.026 = phi i32 [ %inc10, %for.cond.cleanup.3 ], [ 0, %for.body.4.lr.ph.preheader ] %lsr.iv56 = bitcast i32* %lsr.iv5 to i1* %lsr.iv12 = bitcast i32* %lsr.iv1 to i1* br label %for.body.4 for.cond.cleanup.loopexit: ; preds = %for.cond.cleanup.3 br label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond.cleanup.loopexit, %entry ret void for.cond.cleanup.3: ; preds = %for.body.4 %inc10 = add nuw nsw i32 %Outer.02...
2015 Apr 25
3
[LLVMdev] alias analysis on llvm internal globals
...%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.end: ; preds = %for.end.loopexit, %if.end %sum.0.lcssa = phi i32 [ undef, %if.end ],...
2016 May 24
1
BitcodeReader non explicit error
....loopexit: ; preds = %12, %.lr.ph3 %5 = icmp ult i32 %7, %3...
2016 Mar 22
3
Instrumented BB in PGO
...ion main Hash: 61483163021 after CFGMST Number of Basic Blocks: 10 BB: FakeNode Index=0 BB: if.then Index=5 BB: for.body Index=4 BB: for.body.lr.ph Index=3 BB: entry Index=1 BB: for.inc Index=8 BB: if.then5 Index=7 BB: if.end Index=6 BB: for.end Index=2 BB: for.end.loopexit Index=9 Number of Edges: 14 (*: Instrument, C: CriticalEdge, -: Removed) Edge 0: 8-->4 c W=247031 Edge 1: 6-->8 c W=159375 Edge 2: 4-->6 *c W=127500 Edge 3: 1-->2 c W=4500 Edge 4: 4-->5 W=127 Edge 5: 5-->6 * W=127 Edge 6: 6-->7 W=95 Edge 7: 7...
2016 May 19
4
GEP index canonicalization
...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.end.loopexit, %entry ret void }
2016 Feb 11
3
Expected constant simplification not happening
...*)** %cond.i = load i8* (%struct._foo*, i32, i8*)*, i8* (%struct._foo*, i32, i8*)** %cond.in.i, align 8 %call8.i = tail call i8* %cond.i(%struct._foo* %obj, i32 2298949, i8* %value) #1 %inc = add nuw nsw i32 %i.04, 1 %exitcond = icmp eq i32 %inc, 100 br i1 %exitcond, label %for.end.loopexit, label %call.exit for.end.loopexit: ; preds = %call.exit %call8.i.lcssa = phi i8* [ %call8.i, %call.exit ] br label %for.end for.end: ; preds = %for.end.loopexit, %entry %rval.0.lcssa = phi i8* [ %0, %entry ], [ %c...
2016 May 05
2
No remapping of clone instruction in CloneBasicBlock
...%scan.056, i64 0, i32 0, !dbg !91 %8 = load %struct.Node*, %struct.Node** %next30, align 8, !dbg !91, !tbaa !92 tail call void @llvm.dbg.value(metadata %struct.Node* %8, i64 0, metadata !28, metadata !34), !dbg !41 %cmp = icmp eq %struct.Node* %8, null, !dbg !52 br i1 %cmp, label %no_silent.loopexit, label %while.body, !dbg !54 Clone Block: sw.epilog.jl: ; No predecessors! %no_final.1.jl = phi i32 [ %no_final.055, %while.body ], [ 1, %if.end29 ], [ %no_final.055, %sw.bb20 ], [ %no_final.055, %sw.bb15 ], [ %no_final.055, %sw.bb10 ], [ %no_final.055, %sw.bb...
2005 Jul 29
1
[LLVMdev] help with pointer-to-array conversion
OK, thanks Chris, I've found that running opt -loopsimplify -instcombine -indvars -stats gives me the setup I need for this transformation, and a small patch makes it happen in the simple case we discussed. However, I'm having some trouble when things get a bit more complicated with 3 nesting levels: int A[3000000], B[20000], C[100], Z; int main() { int i, j, k, *a, *b,
2016 Oct 17
2
[SCEV] inconsistent operand ordering
...%i.011 = phi i32 [ %inc, %for.body ], [ 0, %for.body.preheader ] %conv = trunc i32 %i.011 to i8 store i8 %conv, i8* %q.012, align 1 %add.ptr2 = getelementptr inbounds i8, i8* %q.012, i32 %b %inc = add nuw nsw i32 %i.011, 1 %exitcond = icmp eq i32 %inc, %n br i1 %exitcond, label %for.end.loopexit, label %for.body for.end.loopexit: ; preds = %for.body br label %for.end for.end: ; preds = %for.end.loopexit, %entry ret void } For this IR, if I call getSCEV() in the following order- 1) getSCEV(%q.012) 2) getSCEV(%...
2014 Sep 02
2
[LLVMdev] Preserving NSW/NUW bits
...#39;ve been doing a little work on this as of late. I have a bit of code that looks like the following: %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %2 = add i64 %indvars.iv.next, -1 %tmp = trunc i64 %2 to i32 %cmp = icmp slt i32 %tmp, %0 br i1 %cmp, label %for.body, label %for.end.loopexit I'm trying to fold the 2nd add instruction into the compare by changing the condition from from 'slt' to 'sle': %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %tmp = trunc i64 %indvars.iv.next to i32 %cmp = icmp sle i32 %tmp, %0 br i1 %cmp, label %for.body, label %f...