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...