search for: isknownnonnegative

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

2019 May 13
3
Delinearization validity checks in DependenceAnalysis
...not overflow into another subscript, so is // always safe. The others need to be 0 <= subscript[i] < bound, for both src // and dst. // FIXME: It may be better to record these sizes and add them as constraints // to the dependency checks. for (int i = 1; i < size; ++i) { if (!isKnownNonNegative(SrcSubscripts[i], SrcPtr)) return false; if (!isKnownLessThan(SrcSubscripts[i], Sizes[i - 1])) return false; if (!isKnownNonNegative(DstSubscripts[i], DstPtr)) return false; if (!isKnownLessThan(DstSubscripts[i], Sizes[i - 1])) return false; } ``` The pr...
2019 May 15
3
Delinearization validity checks in DependenceAnalysis
...for and it cannot overflow into another subscript, so is // always safe. The others need to be 0 <= subscript[i] < bound, for both src // and dst. // FIXME: It may be better to record these sizes and add them as constraints // to the dependency checks. for (int i = 1; i < size; ++i) { if (!isKnownNonNegative(SrcSubscripts[i], SrcPtr)) return false; if (!isKnownLessThan(SrcSubscripts[i], Sizes[i - 1])) return false; if (!isKnownNonNegative(DstSubscripts[i], DstPtr)) return false; if (!isKnownLessThan(DstSubscripts[i], Sizes[i - 1])) return false; } ``` The problem is that in a lot of cases these con...
2019 May 16
2
Delinearization validity checks in DependenceAnalysis
...ript, so > is > // always safe. The others need to be 0 <= subscript[i] < bound, for both > src > // and dst. > // FIXME: It may be better to record these sizes and add them as > constraints > // to the dependency checks. > for (int i = 1; i < size; ++i) { > if (!isKnownNonNegative(SrcSubscripts[i], SrcPtr)) > return false; > > if (!isKnownLessThan(SrcSubscripts[i], Sizes[i - 1])) > return false; > > if (!isKnownNonNegative(DstSubscripts[i], DstPtr)) > return false; > > if (!isKnownLessThan(DstSubscripts[i], Sizes[i - 1])) > return false; >...
2018 Jan 26
0
Late setting of SCEV NoWrap flags does bad with cache
...not go up by very much. > You may find the example of such behavior if you re-enable the assertion > from patch https://reviews.llvm.org/rL323309 . The test that was added with For that case specifically: I don't think such asserts are a good idea, unless you've already checked SE.isKnownNonNegative(X) (i.e. not only do you know that X is "supposed to be" non-negative, but you also know that SCEV can prove it). For instance see https://bugs.llvm.org/show_bug.cgi?id=25170 where SCEV can prove "A-B" is a constant but can't prove that "B-A" is a constant. I thi...
2018 Jan 26
2
Late setting of SCEV NoWrap flags does bad with cache
...up by very much. > You may find the example of such behavior if you re-enable the > assertion from patch https://reviews.llvm.org/rL323309 . The test that > was added with For that case specifically: I don't think such asserts are a good idea, unless you've already checked SE.isKnownNonNegative(X) (i.e. not only do you know that X is "supposed to be" non-negative, but you also know that SCEV can prove it). For instance see https://bugs.llvm.org/show_bug.cgi?id=25170 where SCEV can prove "A-B" is a constant but can't prove that "B-A" is a constant. I thi...
2012 Apr 09
0
[LLVMdev] new methods for ScalarEvolutions
Working on a dependence test, I wrote some code that looked like this: const SCEV *delta = ...; bool deltaMaybeZero = !SE->isKnownNonZero(delta); bool deltaMaybePositive = !SE->isKnownNonPositive(delta); bool deltaMaybeNegative = !SE->isKnownNonNegative(delta); I'm really happy with the power of the SCEVs, letting me answer these questions, but I'm unhappy with how the code reads, namely the double negatives. Perhaps we might introduce a handful of new methods, things like *bool ScalarEvolution::isPerhapsZero(const SCEV *S) {* * re...
2018 Jan 25
2
Late setting of SCEV NoWrap flags does bad with cache
Hello Everyone, I want to raise a discussion about reasonability of late setting of nsw/nuw/nw flags to SCEV AddRecs through setNoWrapFlags method. A discussion about this have already happened in August last year, there was a concern about different no-wrap flags that come from different sequences of SCEV flags invocations. It was mentioned there that late setting of flags is actually a hack to
2018 Jan 26
0
Late setting of SCEV NoWrap flags does bad with cache
...>> You may find the example of such behavior if you re-enable the >> assertion from patch https://reviews.llvm.org/rL323309 . The test that >> was added with > > For that case specifically: I don't think such asserts are a good idea, unless you've already checked SE.isKnownNonNegative(X) (i.e. not only do you know that X is "supposed to be" non-negative, but you also know that SCEV can prove it). For instance see > https://bugs.llvm.org/show_bug.cgi?id=25170 where SCEV can prove "A-B" > is a constant but can't prove that "B-A" is a consta...
2019 May 22
2
Delinearization validity checks in DependenceAnalysis
...ript, so > is > // always safe. The others need to be 0 <= subscript[i] < bound, for both > src > // and dst. > // FIXME: It may be better to record these sizes and add them as > constraints > // to the dependency checks. > for (int i = 1; i < size; ++i) { > if (!isKnownNonNegative(SrcSubscripts[i], SrcPtr)) > return false; > > if (!isKnownLessThan(SrcSubscripts[i], Sizes[i - 1])) > return false; > > if (!isKnownNonNegative(DstSubscripts[i], DstPtr)) > return false; > > if (!isKnownLessThan(DstSubscripts[i], Sizes[i - 1])) > return false; > }...