search for: end_crit_edge

Displaying 20 results from an estimated 33 matches for "end_crit_edge".

2014 Oct 24
2
[LLVMdev] Virtual register def doesn't dominate all uses
...{ int sum = 0; for(int i = 0; i < end_loop_index; i++) { sum += i; } return(sum); } LLVm byte-code disassembly: ; Function Attrs: nounwind readnone define i32 @simple_loop(i32 %end_loop_index) #1 { entry: %cmp4 = icmp sgt i32 %end_loop_index, 0 br i1 %cmp4, label %for.cond.for.end_crit_edge, label %for.end for.cond.for.end_crit_edge: ; preds = %entry %0 = add i32 %end_loop_index, -2 %1 = add i32 %end_loop_index, -1 %2 = zext i32 %0 to i33 %3 = zext i32 %1 to i33 %4 = mul i33 %3, %2 %5 = lshr i33 %4, 1 %6 = trunc i33 %5 to i32 %7 = add i32 %6, %en...
2014 Oct 29
2
[LLVMdev] Virtual register def doesn't dominate all uses
...gt;> return(sum); >> } >> >> >> LLVm byte-code disassembly: >> ; Function Attrs: nounwind readnone >> define i32 @simple_loop(i32 %end_loop_index) #1 { >> entry: >> %cmp4 = icmp sgt i32 %end_loop_index, 0 >> br i1 %cmp4, label %for.cond.for.end_crit_edge, label %for.end >> >> for.cond.for.end_crit_edge: ; preds = %entry >> %0 = add i32 %end_loop_index, -2 >> %1 = add i32 %end_loop_index, -1 >> %2 = zext i32 %0 to i33 >> %3 = zext i32 %1 to i33 >> %4 = mul i33 %3, %2 >> %5 = lshr...
2014 Oct 31
2
[LLVMdev] Virtual register def doesn't dominate all uses
...t; >>>> LLVm byte-code disassembly: >>>> ; Function Attrs: nounwind readnone >>>> define i32 @simple_loop(i32 %end_loop_index) #1 { >>>> entry: >>>> %cmp4 = icmp sgt i32 %end_loop_index, 0 >>>> br i1 %cmp4, label %for.cond.for.end_crit_edge, label %for.end >>>> >>>> for.cond.for.end_crit_edge: ; preds = %entry >>>> %0 = add i32 %end_loop_index, -2 >>>> %1 = add i32 %end_loop_index, -1 >>>> %2 = zext i32 %0 to i33 >>>> %3 = zext i32 %1 to i33...
2015 Apr 25
3
[LLVMdev] alias analysis on llvm internal globals
...oBuf = internal unnamed_addr global i32* null, align 8 @foo.local_fooBuf = internal global [2048 x i32] zeroinitializer, align 16 ; Function Attrs: nounwind uwtable define i32 @foo(i32* nocapture %fooPtr, i32 %aconst) #0 { entry: %.b = load i1, i1* @foo.init, align 1 br i1 %.b, label %entry.if.end_crit_edge, label %if.then entry.if.end_crit_edge: ; preds = %entry %.pre = load i32*, i32** @foo.fooBuf, align 8, !tbaa !1 br label %if.end if.then: ; preds = %entry store i32* getelementptr inbounds ([2048 x i32]* @foo.local_fooBuf,...
2018 Feb 09
1
PHI nodes for atomic variables
..._personality_v0 { entry: ; 1 = MemoryDef(liveOnEntry) tail call void @checker_thread_begin(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0)) ; MemoryUse(1) %0 = load i32, i32* @data1, align 4, !tbaa !1 %cmp = icmp sgt i32 %0, 0 br i1 %cmp, label %if.then, label %entry.if.end_crit_edge entry.if.end_crit_edge: ; preds = %entry ; MemoryUse(1) %.pre = load i32, i32* @data2, align 4, !tbaa !1 br label %if.end if.then: ; preds = %entry ; MemoryUse(1) %1 = load i32, i32* @data4, align 4, !tbaa !1 *; 2 = MemoryDe...
2014 Nov 01
2
[LLVMdev] Virtual register def doesn't dominate all uses
...ssembly: >>>>>> ; Function Attrs: nounwind readnone >>>>>> define i32 @simple_loop(i32 %end_loop_index) #1 { >>>>>> entry: >>>>>> %cmp4 = icmp sgt i32 %end_loop_index, 0 >>>>>> br i1 %cmp4, label %for.cond.for.end_crit_edge, label %for.end >>>>>> >>>>>> for.cond.for.end_crit_edge: ; preds = %entry >>>>>> %0 = add i32 %end_loop_index, -2 >>>>>> %1 = add i32 %end_loop_index, -1 >>>>>> %2 = zext i32 %0 to i33...
2013 Aug 22
2
[LLVMdev] scev questions
..., %for.body.lr.ph ], [ %incdec.ptr, %for.body ] %incdec.ptr = getelementptr inbounds i32* %a.addr.05, i64 1 %0 = load i32* %a.addr.05, align 4, !tbaa !0 %add = add i32 %0, %s.06 %add1 = add nsw i32 %i.07, 4 %cmp = icmp slt i32 %add1, %len br i1 %cmp, label %for.body, label %for.cond.for.end_crit_edge Classifying expressions for: @_Z4sum2Pji %i.07 = phi i32 [ 0, %for.body.lr.ph ], [ %add1, %for.body ] --> {0,+,4}<nuw><nsw><%for.body> Exits: <<Unknown>> %s.06 = phi i32 [ 0, %for.body.lr.ph ], [ %add, %for.body ] --> %s.06 Exits: <<Unknown>> %a.a...
2016 Mar 22
3
Instrumented BB in PGO
...ge 6: 6-->7 W=95 Edge 7: 7-->8 * W=95 Edge 8: 0-->1 W=12 Edge 9: 2-->0 * W=12 Edge 10: 3-->4 W=8 Edge 11: 9-->2 W=8 Edge 12: 1-->3 W=7 Edge 13: 8-->9 * W=7 Split critical edge: 4 --> 6 Adding Instrumentation in BB Name=for.body.if.end_crit_edge Adding Instrumentation in BB Name=if.then Adding Instrumentation in BB Name=if.then5 Adding Instrumentation in BB Name=for.end Adding Instrumentation in BB Name=for.end.loopexit After a training run, we get profile data for the main function as follows, but these count values are put into...
2018 Feb 08
0
PHI nodes for atomic variables
Let me try to help. On Thu, Feb 8, 2018 at 12:13 PM, Qiuping Yi via llvm-dev < llvm-dev at lists.llvm.org> wrote: > Thanks for your explanation. > > Do you mean that LLVM will not maintain the def-use chain for atomic > variables? > It is not a variable at the LLVM level. At the source level, it is a variable. At the LLVM IR level, it is lowered into memory operations. All
2014 Feb 14
2
[LLVMdev] DominatorTree not updated properly after calling the llvm::SplitBlock.
...[3] %for.cond {2,25} [4] %for.body {3,6} [5] %for.inc {4,5} [4] %for.end {7,24} *[5] %for.end.split {4294967295,4294967295}* [6] %if.then {8,15} [7] %if.then13 {9,10} [7] %if.end {11,12} [7] %if.then.if.end_crit_edge {13,14} [6] %if.end14 {16,21} [7] %exit.b4.barrier {17,20} [8] %exit.barrier {18,19} [6] %for.end.if.end14_crit_edge {22,23} -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm...
2013 Jun 20
0
[LLVMdev] -indvars issues?
...preds = %for.body > %8 = load i32* %i, align 4, !dbg !22 > %add2 = add nsw i32 %8, -3, !dbg !22 > store i32 %add2, i32* %i, align 4, !dbg !22 > %9 = load i32* %i, align 4, !dbg !22 > %cmp = icmp sgt i32 %9, 0, !dbg !22 > br i1 %cmp, label %for.body, label %for.cond.for.end_crit_edge, !dbg !22 > > for.cond.for.end_crit_edge: ; preds = %for.inc > br label %for.end, !dbg !22 > > for.end: ; preds = > %for.cond.for.end_crit_edge, %entry > %arrayidx3 = getelementptr inbounds [100 x i32]* %a, i32...
2018 Feb 08
3
PHI nodes for atomic variables
Thanks for your explanation. Do you mean that LLVM will not maintain the def-use chain for atomic variables? So it is impossible to directly catch the fact that the load of x at the statement 'data1 = x; ' dependents on data4 (because of the statement x=data4 )? If I want to get such information, may be the only solution is to traverse all the predecessors of the statement 'data1 =
2017 Jul 29
2
Storing "blockaddress(@function, %block)" in a global variable?
...a global variable and so I did: % cat cond.c void foo(long *a) { if (a) *a = 0; } % clang -O1 -c cond.c -fsanitize-coverage=inline-8bit-counters,pc-table -S -o - -emit-llvm @__sancov_gen_.1 = private constant [3 x i8*] [i8* bitcast (void (i64*)* @foo to i8*), i8* blockaddress(@foo, %entry.if.end_crit_edge), i8* blockaddress(@foo, %if.then)], section "__sancov_pcs", align 8 Is this expected to work? If not, is it reasonable to try to make it work? This works almost as I want it to, but not quite entirely: % cat cout.cpp #include <iostream> void Foo() { std::cout << "&quot...
2017 Dec 19
4
A code layout related side-effect introduced by rL318299
...; preds = %entry br label %while.body while.cond: ; preds = %while.body %h.addr.0 = phi i8* [ %add.ptr4, %while.body ] %d.addr.0 = phi i8* [ %add.ptr3, %while.body ] %cmp = icmp ugt i8* %h.addr.0, @i br i1 %cmp, label %while.cond.while.end_crit_edge, label %while.body while.body: ; preds = % while.body.lr.ph, %while.cond %d.addr.03 = phi i8* [ %d, %while.body.lr.ph ], [ %d.addr.0, %while.cond ] %h.addr.02 = phi i8* [ %h, %while.body.lr.ph ], [ %h.addr.0, %while.cond ] %0 = bitcast i8* %d.addr.03 to...
2013 Jun 18
2
[LLVMdev] -indvars issues?
It seems there is no -enable-iv-rewrite now in llvm3.2, and it suggest -enable-load-pre, but it still does not work. So, how to active the transform? -- View this message in context: http://llvm.1065342.n5.nabble.com/indvars-issues-tp4646p58587.html Sent from the LLVM - Dev mailing list archive at Nabble.com.
2017 Dec 19
2
A code layout related side-effect introduced by rL318299
...y >> >> while.cond: ; preds = %while.body >> %h.addr.0 = phi i8* [ %add.ptr4, %while.body ] >> %d.addr.0 = phi i8* [ %add.ptr3, %while.body ] >> %cmp = icmp ugt i8* %h.addr.0, @i >> br i1 %cmp, label %while.cond.while.end_crit_edge, label %while.body >> >> while.body: ; preds = % >> while.body.lr.ph, %while.cond >> %d.addr.03 = phi i8* [ %d, %while.body.lr.ph ], [ %d.addr.0, >> %while.cond ] >> %h.addr.02 = phi i8* [ %h, %while.body.lr.ph ], [ %h.ad...
2011 Oct 06
2
[LLVMdev] A potential bug
Hi all, There might be a bug in DeadStoreElimination.cpp. This pass eliminates stores backwards aggressively in an end BB. It does not check dependencies on stores in an end BB though. For example, in this code snippet: ... 1. %sum.safe_r47.pre-phi = phi i64* [ %sum.safe_r47.pre, %entry.for.end_crit_edge ], [ %sum.safe_r42, %for.body ] 2. %call9 = call i32 @gettimeofday(%struct.timeval* %end, %struct.timeval* null) nounwind 3. %0 = bitcast %struct.timeval* %start to i64* // eliminated by HandleEndBlock in DeadStoreElimination.cpp 4. %1 = bitcast %struct.timeval* %agg.tmp to i64* //...
2013 Aug 22
0
[LLVMdev] scev questions
...%for.body > ] > %incdec.ptr = getelementptr inbounds i32* %a.addr.05, i64 1 > %0 = load i32* %a.addr.05, align 4, !tbaa !0 > %add = add i32 %0, %s.06 > %add1 = add nsw i32 %i.07, 4 > %cmp = icmp slt i32 %add1, %len > br i1 %cmp, label %for.body, label %for.cond.for.end_crit_edge > > > Classifying expressions for: @_Z4sum2Pji > %i.07 = phi i32 [ 0, %for.body.lr.ph ], [ %add1, %for.body ] > --> {0,+,4}<nuw><nsw><%for.body> Exits: <<Unknown>> > %s.06 = phi i32 [ 0, %for.body.lr.ph ], [ %add, %for.body ] > --> %s...
2014 Feb 14
2
[LLVMdev] DominatorTree not updated properly after calling the llvm::SplitBlock.
...[4] %for.body {3,6} > [5] %for.inc {4,5} > [4] %for.end {7,24} > *[5] %for.end.split {4294967295,4294967295}* > [6] %if.then {8,15} > [7] %if.then13 {9,10} > [7] %if.end {11,12} > [7] %if.then.if.end_crit_edge {13,14} > [6] %if.end14 {16,21} > [7] %exit.b4.barrier {17,20} > [8] %exit.barrier {18,19} > [6] %for.end.if.end14_crit_edge {22,23} > > _______________________________________________ > LLVM Developers mailing list > LL...
2011 Oct 06
2
[LLVMdev] A potential bug
...eElimination.cpp. This pass eliminates >> stores backwards aggressively in an end BB. It does not check dependencies >> on stores in an end BB though. For example, in this code snippet: >>   ... >> 1.  %sum.safe_r47.pre-phi = phi i64* [ %sum.safe_r47.pre, >> %entry.for.end_crit_edge ], [ %sum.safe_r42, %for.body ] >> 2.  %call9 = call i32 @gettimeofday(%struct.timeval* %end, %struct.timeval* >> null) nounwind >> 3.  %0 = bitcast %struct.timeval* %start to i64*           // eliminated by >> HandleEndBlock in DeadStoreElimination.cpp >> 4.  %1 = bit...