search for: uniquescevs

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

2018 Feb 26
2
[SCEV] Inconsistent SCEV formation for zext
...e, how about adding a cache that maps SCEV expressions to their simplified versions? Then we could do something like: I may be wrong but I think caching is not an issue in itself, but caching in the presence of self-recursion is. >> getZeroExtendExpr(S) { >> if (AlreadyPresent = UniqueSCEVs.find(kZeroExtend, S) { >> if (Simplified = SimplifiedSCEVs.find(AlreadyPresent)) { >> return Simplified; >> } >> return AlreadyPresent; >> } >> ... >> // We discovered zext(s) can be simplified to t >> UniqueSCEVs.in...
2018 Mar 13
2
[SCEV] Inconsistent SCEV formation for zext
...he that maps SCEV expressions to their simplified versions? Then we could do something like: > > I may be wrong but I think caching is not an issue in itself, but caching in the presence of self-recursion is. > > >>> getZeroExtendExpr(S) { >>> if (AlreadyPresent = UniqueSCEVs.find(kZeroExtend, S) { >>> if (Simplified = SimplifiedSCEVs.find(AlreadyPresent)) { >>> return Simplified; >>> } >>> return AlreadyPresent; >>> } > >>> ... >>> // We discovered zext(s) can be simplified...
2018 Mar 12
0
[SCEV] Inconsistent SCEV formation for zext
...e, how about adding a cache that maps SCEV expressions to their simplified versions? Then we could do something like: I may be wrong but I think caching is not an issue in itself, but caching in the presence of self-recursion is. >> getZeroExtendExpr(S) { >> if (AlreadyPresent = UniqueSCEVs.find(kZeroExtend, S) { >> if (Simplified = SimplifiedSCEVs.find(AlreadyPresent)) { >> return Simplified; >> } >> return AlreadyPresent; >> } >> ... >> // We discovered zext(s) can be simplified to t >> UniqueSCEVs.in...
2018 Feb 20
0
[SCEV] Inconsistent SCEV formation for zext
...a bit apprehensive of adding more caching to solve problems created by caching; but if there is no way out of adding another cache, how about adding a cache that maps SCEV expressions to their simplified versions? Then we could do something like: getZeroExtendExpr(S) { if (AlreadyPresent = UniqueSCEVs.find(kZeroExtend, S) { if (Simplified = SimplifiedSCEVs.find(AlreadyPresent)) { return Simplified; } return AlreadyPresent; } ... // We discovered zext(s) can be simplified to t UniqueSCEVs.insert({kZeroExtend, S}, t); SimplifiedSCEVs[s] = t; retur...
2018 Mar 13
0
[SCEV] Inconsistent SCEV formation for zext
...he that maps SCEV expressions to their simplified versions? Then we could do something like: > > I may be wrong but I think caching is not an issue in itself, but caching in the presence of self-recursion is. > > >>> getZeroExtendExpr(S) { >>> if (AlreadyPresent = UniqueSCEVs.find(kZeroExtend, S) { >>> if (Simplified = SimplifiedSCEVs.find(AlreadyPresent)) { >>> return Simplified; >>> } >>> return AlreadyPresent; >>> } > >>> ... >>> // We discovered zext(s) can be simplified...
2018 Mar 13
1
[SCEV] Inconsistent SCEV formation for zext
...sions to their simplified versions? Then we could do something like: >> >> I may be wrong but I think caching is not an issue in itself, but caching in the presence of self-recursion is. >> >> >>>> getZeroExtendExpr(S) { >>>> if (AlreadyPresent = UniqueSCEVs.find(kZeroExtend, S) { >>>> if (Simplified = SimplifiedSCEVs.find(AlreadyPresent)) { >>>> return Simplified; >>>> } >>>> return AlreadyPresent; >>>> } >> >>>> ... >>>> // We disc...
2018 Feb 11
2
[SCEV] Inconsistent SCEV formation for zext
Hi Sanjoy, Thanks for investigating the issue! I am more interested in getting the underlying problem fixed rather than making this particular test case work. I think I have more test cases where this problem crops up. I would any day prefer consistent results over compile time savings which can lead to inconsistencies. These inconsistencies require significant developer time to analyze and fix
2015 Jul 01
3
[LLVMdev] Deriving undefined behavior from nsw/inbounds/poison for scalar evolution
...n does not unsign-overflow; if such an optimization changes > program behavior then that program has UB since it was data dependent > on poison [2]. To make sure that I understand correctly, are you suggesting making the nuw (and similar) flags part of the key when looking up an SCEV in the UniqueSCEVs member variable on ScalarEvolution? That way, an instruction with nuw and one without will not map to the same SCEV unless the nuw can be inferred in some other way. Sounds good to me, I'm happy to go with either one of that or inferring UB from poison. Adding the flags to the key/identity doe...
2015 Jun 26
6
[LLVMdev] Deriving undefined behavior from nsw/inbounds/poison for scalar evolution
*** Summary I'd like to propose (and implement) functionality in LLVM to determine when a poison value from an instruction is guaranteed to produce undefined behavior. I want to use that to improve handling of nsw, inbounds etc. flags in scalar evolution and LSR. I imagine that there would be other uses for it. I'd like feedback on this idea before I proceed with it. *** Details Poison