search for: scevaddrec

Displaying 12 results from an estimated 12 matches for "scevaddrec".

2019 Jun 11
3
[RFC][SCEV] Behavior of AddRec in CompareSCEVComplexity
...the input program(i.e. ptr_test.c), it will violate the assertion in line 705 in lib/Analysis/ScalarEvolution.cpp. The point is that the assertion in line 705 doesn’t make sense in most of the cases: I don’t think there is any limitation imposed on arbitrary SCEV expressions to make the enclosing SCEVAddRec to be in the same loop(Or should we?). As I mentioned earlier, the simplest solution is to remove this assertion, but still, the very assumption is still encoded in the surrounding code. So I want to hear from you folks whether we should calculate the complexity of SCEVAddRec located in different l...
2019 Jun 12
2
[RFC][SCEV] Behavior of AddRec in CompareSCEVComplexity
...), it will violate the > assertion in line 705 in lib/Analysis/ScalarEvolution.cpp. > > > > The point is that the assertion in line 705 doesn’t make sense in most > of the cases: I don’t think there is any limitation imposed on arbitrary > SCEV expressions to make the enclosing SCEVAddRec to be in the same loop(Or > should we?). > > As I mentioned earlier, the simplest solution is to remove this > assertion, but still, the very assumption is still encoded in the > surrounding code. > > So I want to hear from you folks whether we should calculate the > complex...
2010 Jun 29
2
[LLVMdev] Confuse on getSCEVAtScope
hi all, i have SCEVAddRec {{(32 + @edge.8265),+,32}<Loop0>,+,4}<Loop1> where Loop0 and Loop1 are brothers (loops at the same level of the loopnest), and Loop0 have a computable backedge taken count. when i call getSCEVAtScope({{(32 + @edge.8265),+,32}<Loop0>,+,4}<Loop1> , Loop1), it just give me...
2012 Sep 19
0
[LLVMdev] sign extensions, SCEVs, and wrap flags
...W flag. SCEV doesn't know anything about acyclic control flow or IR users, so it must drop the flags. I would try hard not to rely on NSW flags on arbitrary SCEVs. I would first find the phi or basic induction variable before checking the recurrence's NSW flag. Or, better yet, only rely on SCEVAddRec's NW (no self-wrap flag) rather than NSW. Notice that the NW is preserved in your add's recurrence! -Andy -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120918/ce934d2d/attachment.html>
2012 Sep 19
2
[LLVMdev] sign extensions, SCEVs, and wrap flags
Given the following SCEV, *(sext i32 {2,+,1}<nw><%for.body> to i64)* from the following C source, *void strong3(int *A, int *B, int n) {* * for (int i = 0; i < n; i++) {* * A[i + 2] = i;* * ...* * }* *}* Since the No-Wrap flag is set on the addrec, can't I safely rewrite it as *{2,+,1}<nw><%for.body>* If I can, why isn't the SCEV package
2012 Sep 19
2
[LLVMdev] sign extensions, SCEVs, and wrap flags
...know > anything about acyclic control flow or IR users, so it must drop the flags. > > I would try hard not to rely on NSW flags on arbitrary SCEVs. I would > first find the phi or basic induction variable before checking the > recurrence's NSW flag. Or, better yet, only rely on SCEVAddRec's NW (no > self-wrap flag) rather than NSW. Notice that the NW is preserved in your > add's recurrence! > > -Andy > > OK. I think... Basically, I'm trying to understand how two subscripts relate to one another. When I find sign and zero extensions, life gets confusing...
2012 Sep 20
0
[LLVMdev] sign extensions, SCEVs, and wrap flags
...EV doesn't know anything about acyclic control flow or IR users, so it must drop the flags. > > I would try hard not to rely on NSW flags on arbitrary SCEVs. I would first find the phi or basic induction variable before checking the recurrence's NSW flag. Or, better yet, only rely on SCEVAddRec's NW (no self-wrap flag) rather than NSW. Notice that the NW is preserved in your add's recurrence! > > -Andy > > > OK. I think... > Basically, I'm trying to understand how two subscripts relate to one another. When I find sign and zero extensions, life gets confus...
2012 Nov 30
2
[LLVMdev] [polly] scev codegen (first step to remove the dependence on ivcanon pass)
Hi Tobi, I would like to remove the SCEVRewriter code and replace it with a call to SCEVAddRec::apply (see attached a patch that adds just this function). More precisely I want to add another function called apply_map that applies a map (loop -> expr) on a given scev. This is the apply function on a multi-variate polynomial. So here is an overview of how I would like the scev code gene...
2012 Sep 20
3
[LLVMdev] sign extensions, SCEVs, and wrap flags
...ing about acyclic control flow or IR users, so it must drop the flags. >> >> I would try hard not to rely on NSW flags on arbitrary SCEVs. I would >> first find the phi or basic induction variable before checking the >> recurrence's NSW flag. Or, better yet, only rely on SCEVAddRec's NW (no >> self-wrap flag) rather than NSW. Notice that the NW is preserved in your >> add's recurrence! >> >> -Andy >> >> > OK. I think... > Basically, I'm trying to understand how two subscripts relate to one > another. When I find sign a...
2017 Nov 20
2
Nowaday Scalar Evolution's Problem.
...(%1 == 4) + %3; %3 -> %3 = (%1 == 7) + %4; %4 -> %4 = 1; %5 -> goto %1; %6 -> label %6; This is a current add-recurrence SCEV node emmited from SCEV. for now, %2 and %3 cannot be evoluted. we cannot calculate the backedge-taken count for this node. the SCEVAddRec node can only handle a constant variable. so it will be like.. SCEV: What is Loop-Latch? : %1 Is The Loop-Latch is only one? : Yes Is the Loop-Latch is conditional? : Yes Is The Loop-Latch has Exit? : Yes What is Loop-Latch's Exit? : %5 What is %1 value?...
2012 Dec 01
0
[LLVMdev] [polly] scev codegen (first step to remove the dependence on ivcanon pass)
On Fri, Nov 30, 2012, at 08:46 PM, Sebastian Pop wrote: > Hi Tobi, > > I would like to remove the SCEVRewriter code and replace it with a call > to > SCEVAddRec::apply (see attached a patch that adds just this function). > More > precisely I want to add another function called apply_map that applies a > map > (loop -> expr) on a given scev. This is the apply function on a > multi-variate > polynomial. Hi Sebastian, thanks for worki...
2012 Sep 12
5
[LLVMdev] Multi-dimensional array accesses in LLVM-IR | Thoughts
...r.i>,+, ; (8 * %o)}<%for.j>,+,8}<%for.k> Those examples are obviously not exhaustive, but they already cover many common cases. Analyzing them seems to be possible. As you may realize the size of the array dimensions are all explicitly available in the 'step' of the SCEVAddRec repressions. Even in the last example which contains parameters both for the sizes and the offsets, the parameters for the sizes are the only ones that appear on the right hand sides ('8 * %m * %o' and '8 * %o'). I would guess that we could write a SCEVIterator, that analyzes the...