search for: pessimisticmode

Displaying 9 results from an estimated 9 matches for "pessimisticmode".

2018 Feb 11
2
[SCEV] Inconsistent SCEV formation for zext
...Value->Predicate, Loop->BackedgeTakenCount etc). The first level of caching is the 'PendingCache' and the second one is the 'FinalCache'. PendingCache is similar to PendingLoopPredicates. It is used to break infinite recursion. In addition we keep a Boolean class member 'PessimisticMode' (common to all caches). The lookup logic for the cache is something like this- If (PendingCache.find(Key)) { PessimisticMode = true; return Value; } else if (FinalCache.find(Key)) { return Value; } Insertion logic is like this- If (PessimisticMode) { PendingCache.insert(Entry); }...
2018 Feb 20
0
[SCEV] Inconsistent SCEV formation for zext
...t); SimplifiedSCEVs[s] = t; return t; } > The first level of caching is the 'PendingCache' and the second one is the 'FinalCache'. PendingCache is similar to PendingLoopPredicates. It is used to break infinite recursion. In addition we keep a Boolean class member 'PessimisticMode' (common to all caches). > > The lookup logic for the cache is something like this- > > If (PendingCache.find(Key)) { > PessimisticMode = true; > return Value; > } else if (FinalCache.find(Key)) { > return Value; > } > > Insertion logic is like this- >...
2018 Feb 10
0
[SCEV] Inconsistent SCEV formation for zext
Hi, +CC Max, Serguei This looks like a textbook case of why caching is hard. We first call getZeroExtendExpr on %dec, and this call does end up returning an add rec. However, in the process of simplifying the zext, it also calls into isLoopBackedgeGuardedByCond which in turn calls getZeroExtendExpr(%dec) again. However, this second (recursive) time, we don't simplify the zext and cache a
2018 Feb 26
2
[SCEV] Inconsistent SCEV formation for zext
...39; this logic. It will be handled by the same 'IsTopCall' approach. > > ScalarEvolution::getSCEVImpl (Value *V, bool IsTopCall = false) { > // Look up in cache using logic described above > If (S = getExistingSCEV()) > return S; > > if (IsTopCall) { > PessimisticMode = false; > PendingCache.clear(); > PendingCache.insert(V, getUnknown(V)); >> Can this be assert(!PessimisticMode && !PendingCache.empty()) since on a "top call" we could not have hit self recursion yet? Yes, if we reset them before exiting 'IsTopCall'....
2018 Feb 08
2
[SCEV] Inconsistent SCEV formation for zext
Hi Sanjoy, SCEV is behaving inconsistently when forming SCEV for this zext instruction in the attached test case- %conv5 = zext i32 %dec to i64 If we request a SCEV for the instruction, it returns- (zext i32 {{-1,+,1}<nw><%for.body>,+,-1}<nw><%for.body7> to i64) This can be seen by invoking- $ opt -analyze -scalar-evolution inconsistent-scev-zext.ll But when computing
2018 Mar 13
2
[SCEV] Inconsistent SCEV formation for zext
...y the same 'IsTopCall' approach. > >> >> ScalarEvolution::getSCEVImpl (Value *V, bool IsTopCall = false) { >> // Look up in cache using logic described above >> If (S = getExistingSCEV()) >> return S; >> >> if (IsTopCall) { >> PessimisticMode = false; >> PendingCache.clear(); >> PendingCache.insert(V, getUnknown(V)); > >>> Can this be assert(!PessimisticMode && !PendingCache.empty()) since on a "top call" we could not have hit self recursion yet? > > > Yes, if we reset them before...
2018 Mar 12
0
[SCEV] Inconsistent SCEV formation for zext
...39; this logic. It will be handled by the same 'IsTopCall' approach. > > ScalarEvolution::getSCEVImpl (Value *V, bool IsTopCall = false) { > // Look up in cache using logic described above > If (S = getExistingSCEV()) > return S; > > if (IsTopCall) { > PessimisticMode = false; > PendingCache.clear(); > PendingCache.insert(V, getUnknown(V)); >> Can this be assert(!PessimisticMode && !PendingCache.empty()) since on a "top call" we could not have hit self recursion yet? Yes, if we reset them before exiting 'IsTopCall'....
2018 Mar 13
0
[SCEV] Inconsistent SCEV formation for zext
...y the same 'IsTopCall' approach. > >> >> ScalarEvolution::getSCEVImpl (Value *V, bool IsTopCall = false) { >> // Look up in cache using logic described above >> If (S = getExistingSCEV()) >> return S; >> >> if (IsTopCall) { >> PessimisticMode = false; >> PendingCache.clear(); >> PendingCache.insert(V, getUnknown(V)); > >>> Can this be assert(!PessimisticMode && !PendingCache.empty()) since on a "top call" we could not have hit self recursion yet? > > > Yes, if we reset them before...
2018 Mar 13
1
[SCEV] Inconsistent SCEV formation for zext
...ach. >> >>> >>> ScalarEvolution::getSCEVImpl (Value *V, bool IsTopCall = false) { >>> // Look up in cache using logic described above >>> If (S = getExistingSCEV()) >>> return S; >>> >>> if (IsTopCall) { >>> PessimisticMode = false; >>> PendingCache.clear(); >>> PendingCache.insert(V, getUnknown(V)); >> >>>> Can this be assert(!PessimisticMode && !PendingCache.empty()) since on a "top call" we could not have hit self recursion yet? >> >> >>...