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...