Displaying 13 results from an estimated 13 matches for "getunknown".
2018 Feb 11
2
[SCEV] Inconsistent SCEV formation for zext
...e.insert(Entry);
}
We need to distinguish top level calls to the external interface like getSCEV()/getBackedgeTakenCount() etc from the internal recursive calls for setting/resetting the state correctly. We start with adding the most conservative result for the value in PendingCache. This would be getUnknown() for getSCEV().
So getSCEV() may be implemented something like this-
ScalarEvolution::getSCEV(Value *V) {
return getSCEVImpl(V, true);
}
ScalarEvolution::getSCEVImpl (Value *V, bool IsTopCall = false) {
// Look up in cache using logic described above
If (S = getExistingSCEV())
retur...
2018 Feb 20
0
[SCEV] Inconsistent SCEV formation for zext
...);
> }
>
> We need to distinguish top level calls to the external interface like getSCEV()/getBackedgeTakenCount() etc from the internal recursive calls for setting/resetting the state correctly. We start with adding the most conservative result for the value in PendingCache. This would be getUnknown() for getSCEV().
>
> So getSCEV() may be implemented something like this-
>
> ScalarEvolution::getSCEV(Value *V) {
> return getSCEVImpl(V, true);
> }
>
> ScalarEvolution::getSCEVImpl (Value *V, bool IsTopCall = false) {
> // Look up in cache using logic described abo...
2009 Feb 26
2
[LLVMdev] SCEVCouldNotCompute
...op down
to this code:
// If this is a chain of recurrences, turn it into a closed form, using the
// folders, then expandCodeFor the closed form. This allows the folders to
// simplify the expression without having to build a bunch of special code
// into this folder.
SCEVHandle IH = SE.getUnknown(I); // Get I as a "symbolic" SCEV.
SCEVHandle V = S->evaluateAtIteration(IH, SE);
//cerr << "Evaluated: " << *this << "\n to: " << *V << "\n";
return expand(V);
SCEVAddRecExpr::evaluateAtIteration trips up becau...
2018 Feb 26
2
[SCEV] Inconsistent SCEV formation for zext
...; 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'. I wasn't doing that :)
> }
>
> SCEV *S = createSCEV();
>...
2018 Mar 13
2
[SCEV] Inconsistent SCEV formation for zext
...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'. I wasn't doing that :)
>
>
>> }
>>...
2009 Feb 27
0
[LLVMdev] SCEVCouldNotCompute
...t; // If this is a chain of recurrences, turn it into a closed form, using the
> // folders, then expandCodeFor the closed form. This allows the folders to
> // simplify the expression without having to build a bunch of special code
> // into this folder.
> SCEVHandle IH = SE.getUnknown(I); // Get I as a "symbolic" SCEV.
>
> SCEVHandle V = S->evaluateAtIteration(IH, SE);
> //cerr << "Evaluated: " << *this << "\n to: " << *V << "\n";
>
> return expand(V);
>
> SCEVAddRecExpr:...
2018 Mar 12
0
[SCEV] Inconsistent SCEV formation for zext
...; 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'. I wasn't doing that :)
> }
>
> SCEV *S = createSCEV();
>...
2009 Feb 28
1
[LLVMdev] SCEVCouldNotCompute
...s is a chain of recurrences, turn it into a closed form, using
> > the // folders, then expandCodeFor the closed form. This allows the
> > folders to // simplify the expression without having to build a bunch of
> > special code // into this folder.
> > SCEVHandle IH = SE.getUnknown(I); // Get I as a "symbolic" SCEV.
> >
> > SCEVHandle V = S->evaluateAtIteration(IH, SE);
> > //cerr << "Evaluated: " << *this << "\n to: " << *V << "\n";
> >
> > return expand(V);
>...
2018 Mar 13
0
[SCEV] Inconsistent SCEV formation for zext
...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'. I wasn't doing that :)
>
>
>> }
>>...
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 Mar 13
1
[SCEV] Inconsistent SCEV formation for zext
...e) {
>>> // 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'. I wasn't doing that :)
>>
>...
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
2019 Mar 15
0
Wine release 4.4
...ttributes::GetItemByIndex().
mfplat: Add support for integer attribute values.
mfplat: Implement IMFAttributes::GetCount().
mfplat: Implement IMFAttributes::{SetDouble, GetDouble}.
mfplat: Add support for string attributes.
mfplat: Implement IMFAttributes::{SetUnknown, GetUnknown}.
mfplat: Implement IMFAttributes::DeleteAllItems().
mfplat: Implement IMFAttributes::CopyAllItems().
mfplat: Add support for GUID attributes.
mfplat: Add support for blob attribute values.
mfplat: Implement CompareItem() for attributes.
Józef Kucia (47):
d3d11:...