search for: scevnaryexpr

Displaying 4 results from an estimated 4 matches for "scevnaryexpr".

2013 Jul 30
0
[LLVMdev] creating SCEV taking too long
...============================================================ --- lib/Analysis/ScalarEvolution.cpp (revision 187379) +++ lib/Analysis/ScalarEvolution.cpp (working copy) @@ -585,6 +585,9 @@ case scAddExpr: case scMulExpr: case scSMaxExpr: case scUMaxExpr: { const SCEVNAryExpr *LC = cast<SCEVNAryExpr>(LHS); const SCEVNAryExpr *RC = cast<SCEVNAryExpr>(RHS); // Lexicographically compare n-ary expressions. unsigned LNumOps = LC->getNumOperands(), RNumOps = RC->getNumOperands(); + if (LNumOps != RNumOps) { + retur...
2013 Jul 30
4
[LLVMdev] creating SCEV taking too long
On Jul 29, 2013, at 4:08 PM, Guo, Xiaoyi <Xiaoyi.Guo at amd.com> wrote: > Hi, > > We have a benchmark where there are 128 MAD computations in a loop. (See the attached IR.) Creating SCEVs for these expressions takes a long time, making the compile time too long. E.g., running opt with the “indvars” pass only takes 45 seconds. > > It seems that the majority of the time is
2016 Aug 24
2
Request suggestions about how to remove redundencies caused by SCEV expansion fundementally
On Wed, Aug 24, 2016 at 3:07 PM, Daniel Berlin <dberlin at dberlin.org> wrote: > > > On Fri, Aug 19, 2016 at 3:57 PM, Wei Mi via llvm-dev > <llvm-dev at lists.llvm.org> wrote: >> >> SCEV expansion sometimes generates redundent expr even if there is an >> available expr which can be reused. The redundent exprs can be a lot >> different from existing
2016 Aug 29
4
Request suggestions about how to remove redundencies caused by SCEV expansion fundementally
...affine expr, and then use those affine >> exprs and their value ranges in loop to compute loop iteration >> number, >> so it doesn't involve SCEV expansion. > > So how are you thinking about moving forward here? Shorterm I feel easy to try is to enhance the expansion of SCEVNAryExpr: As suggested by Andy, for a new SCEV C = A1 + A2 + B which is generated by getAddExpr(A, B), adding an opaque value node somewhere to record C equals to opaque_value = Value_A + Value_B. It is possible that B doesn't have Value_B recorded in ExprValueMap. Need to find some representation sayin...