Index: include/polly/DependenceInfo.h =================================================================== --- include/polly/DependenceInfo.h +++ include/polly/DependenceInfo.h @@ -161,9 +161,6 @@ : RAW(nullptr), WAR(nullptr), WAW(nullptr), RED(nullptr), TC_RED(nullptr), IslCtx(IslCtx), Level(Level) {} - /// Calculate and add at the privatization dependences. - void addPrivatizationDependences(); - /// Calculate the dependences for a certain SCoP @p S. void calculateDependences(Scop &S); Index: lib/Analysis/DependenceInfo.cpp =================================================================== --- lib/Analysis/DependenceInfo.cpp +++ lib/Analysis/DependenceInfo.cpp @@ -167,7 +167,7 @@ if (MA->isRead()) Read = isl_union_map_add_map(Read, accdom); - else if (MA->isMayWrite()) + else if (MA->isMayWrite() || MA->isReductionLike()) MayWrite = isl_union_map_add_map(MayWrite, accdom); else MustWrite = isl_union_map_add_map(MustWrite, accdom); @@ -187,101 +187,6 @@ MayWrite = isl_union_map_coalesce(MayWrite); } -/// Fix all dimension of @p Zero to 0 and add it to @p user -static isl_stat fixSetToZero(__isl_take isl_set *Zero, void *user) { - isl_union_set **User = (isl_union_set **)user; - for (unsigned i = 0; i < isl_set_dim(Zero, isl_dim_set); i++) - Zero = isl_set_fix_si(Zero, isl_dim_set, i, 0); - *User = isl_union_set_add_set(*User, Zero); - return isl_stat_ok; -} - -/// Compute the privatization dependences for a given dependency @p Map -/// -/// Privatization dependences are widened original dependences which originate -/// or end in a reduction access. To compute them we apply the transitive close -/// of the reduction dependences (which maps each iteration of a reduction -/// statement to all following ones) on the RAW/WAR/WAW dependences. The -/// dependences which start or end at a reduction statement will be extended to -/// depend on all following reduction statement iterations as well. -/// Note: "Following" here means according to the reduction dependences. -/// -/// For the input: -/// -/// S0: *sum = 0; -/// for (int i = 0; i < 1024; i++) -/// S1: *sum += i; -/// S2: *sum = *sum * 3; -/// -/// we have the following dependences before we add privatization dependences: -/// -/// RAW: -/// { S0[] -> S1[0]; S1[1023] -> S2[] } -/// WAR: -/// { } -/// WAW: -/// { S0[] -> S1[0]; S1[1024] -> S2[] } -/// RED: -/// { S1[i0] -> S1[1 + i0] : i0 >= 0 and i0 <= 1022 } -/// -/// and afterwards: -/// -/// RAW: -/// { S0[] -> S1[i0] : i0 >= 0 and i0 <= 1023; -/// S1[i0] -> S2[] : i0 >= 0 and i0 <= 1023} -/// WAR: -/// { } -/// WAW: -/// { S0[] -> S1[i0] : i0 >= 0 and i0 <= 1023; -/// S1[i0] -> S2[] : i0 >= 0 and i0 <= 1023} -/// RED: -/// { S1[i0] -> S1[1 + i0] : i0 >= 0 and i0 <= 1022 } -/// -/// Note: This function also computes the (reverse) transitive closure of the -/// reduction dependences. -void Dependences::addPrivatizationDependences() { - isl_union_map *PrivRAW, *PrivWAW, *PrivWAR; - - // The transitive closure might be over approximated, thus could lead to - // dependency cycles in the privatization dependences. To make sure this - // will not happen we remove all negative dependences after we computed - // the transitive closure. - TC_RED = isl_union_map_transitive_closure(isl_union_map_copy(RED), nullptr); - - // FIXME: Apply the current schedule instead of assuming the identity schedule - // here. The current approach is only valid as long as we compute the - // dependences only with the initial (identity schedule). Any other - // schedule could change "the direction of the backward dependences" we - // want to eliminate here. - isl_union_set *UDeltas = isl_union_map_deltas(isl_union_map_copy(TC_RED)); - isl_union_set *Universe = isl_union_set_universe(isl_union_set_copy(UDeltas)); - isl_union_set *Zero = isl_union_set_empty(isl_union_set_get_space(Universe)); - isl_union_set_foreach_set(Universe, fixSetToZero, &Zero); - isl_union_map *NonPositive = isl_union_set_lex_le_union_set(UDeltas, Zero); - - TC_RED = isl_union_map_subtract(TC_RED, NonPositive); - - TC_RED = isl_union_map_union( - TC_RED, isl_union_map_reverse(isl_union_map_copy(TC_RED))); - TC_RED = isl_union_map_coalesce(TC_RED); - - isl_union_map **Maps[] = {&RAW, &WAW, &WAR}; - isl_union_map **PrivMaps[] = {&PrivRAW, &PrivWAW, &PrivWAR}; - for (unsigned u = 0; u < 3; u++) { - isl_union_map **Map = Maps[u], **PrivMap = PrivMaps[u]; - - *PrivMap = isl_union_map_apply_range(isl_union_map_copy(*Map), - isl_union_map_copy(TC_RED)); - *PrivMap = isl_union_map_union( - *PrivMap, isl_union_map_apply_range(isl_union_map_copy(TC_RED), - isl_union_map_copy(*Map))); - - *Map = isl_union_map_union(*Map, *PrivMap); - } - - isl_union_set_free(Universe); -} - static __isl_give isl_union_flow *buildFlow(__isl_keep isl_union_map *Snk, __isl_keep isl_union_map *Src, __isl_keep isl_union_map *MaySrc, @@ -359,7 +264,6 @@ dbgs() << "MayWrite: " << MayWrite << "\n"; dbgs() << "Schedule: " << Schedule << "\n"); - isl_union_map *StrictWAW = nullptr; { IslMaxOperationsGuard MaxOpGuard(IslCtx.get(), OptComputeOut); @@ -367,70 +271,8 @@ isl_union_map *Write = isl_union_map_union(isl_union_map_copy(MustWrite), isl_union_map_copy(MayWrite)); - // We are interested in detecting reductions that do not have intermediate - // computations that are captured by other statements. - // - // Example: - // void f(int *A, int *B) { - // for(int i = 0; i <= 100; i++) { - // - // *-WAR (S0[i] -> S0[i + 1] 0 <= i <= 100)------------* - // | | - // *-WAW (S0[i] -> S0[i + 1] 0 <= i <= 100)------------* - // | | - // v | - // S0: *A += i; >------------------*-----------------------* - // | - // if (i >= 98) { WAR (S0[i] -> S1[i]) 98 <= i <= 100 - // | - // S1: *B = *A; <--------------* - // } - // } - // } - // - // S0[0 <= i <= 100] has a reduction. However, the values in - // S0[98 <= i <= 100] is captured in S1[98 <= i <= 100]. - // Since we allow free reordering on our reduction dependences, we need to - // remove all instances of a reduction statement that have data dependences - // orignating from them. - // In the case of the example, we need to remove S0[98 <= i <= 100] from - // our reduction dependences. - // - // When we build up the WAW dependences that are used to detect reductions, - // we consider only **Writes that have no intermediate Reads**. - // - // `isl_union_flow_get_must_dependence` gives us dependences of the form: - // (sink <- must_source). - // - // It *will not give* dependences of the form: - // 1. (sink <- ... <- may_source <- ... <- must_source) - // 2. (sink <- ... <- must_source <- ... <- must_source) - // - // For a detailed reference on ISL's flow analysis, see: - // "Presburger Formulas and Polyhedral Compilation" - Approximate Dataflow - // Analysis. - // - // Since we set "Write" as a must-source, "Read" as a may-source, and ask - // for must dependences, we get all Writes to Writes that **do not flow - // through a Read**. - // - // ScopInfo::checkForReductions makes sure that if something captures - // the reduction variable in the same basic block, then it is rejected - // before it is even handed here. This makes sure that there is exactly - // one read and one write to a reduction variable in a Statement. - // Example: - // void f(int *sum, int A[N], int B[N]) { - // for (int i = 0; i < N; i++) { - // *sum += A[i]; < the store and the load is not tagged as a - // B[i] = *sum; < reductionLike acccess due to the overlap. - // } - // } - - isl_union_flow *Flow = buildFlow(Write, Write, Read, Schedule); - StrictWAW = isl_union_flow_get_must_dependence(Flow); - isl_union_flow_free(Flow); - if (OptAnalysisType == VALUE_BASED_ANALYSIS) { + isl_union_flow *Flow; Flow = buildFlow(Read, MustWrite, MayWrite, Schedule); RAW = isl_union_flow_get_may_dependence(Flow); isl_union_flow_free(Flow); @@ -502,8 +344,7 @@ isl_union_map_free(RAW); isl_union_map_free(WAW); isl_union_map_free(WAR); - isl_union_map_free(StrictWAW); - RAW = WAW = WAR = StrictWAW = nullptr; + RAW = WAW = WAR = nullptr; isl_ctx_reset_error(IslCtx.get()); } @@ -514,7 +355,6 @@ RED = isl_union_map_empty(isl_union_map_get_space(RAW)); TC_RED = isl_union_map_empty(isl_union_set_get_space(TaggedStmtDomain)); isl_union_set_free(TaggedStmtDomain); - isl_union_map_free(StrictWAW); return; } @@ -560,7 +400,7 @@ // Step 2) RED = isl_union_map_intersect(RED, isl_union_map_copy(RAW)); - RED = isl_union_map_intersect(RED, StrictWAW); + RED = isl_union_map_intersect(RED, isl_union_map_copy(WAW)); if (!isl_union_map_is_empty(RED)) { @@ -570,7 +410,12 @@ WAR = isl_union_map_subtract(WAR, isl_union_map_copy(RED)); // Step 4) - addPrivatizationDependences(); + // We need to reverse the reductions and add them to TC_RED in cases where + // loop reversal may take place. That way, we still have legitimate + // dependences even when the schedule has reversed. + TC_RED = isl_union_map_union(isl_union_map_reverse(isl_union_map_copy(RED)), + isl_union_map_copy(RED)); + TC_RED = isl_union_map_coalesce(TC_RED); } DEBUG({ Index: lib/Transform/ScheduleOptimizer.cpp =================================================================== --- lib/Transform/ScheduleOptimizer.cpp +++ lib/Transform/ScheduleOptimizer.cpp @@ -768,7 +768,7 @@ /// Check for dependencies corresponding to the matrix multiplication. /// /// Check that there is only true dependence of the form -/// S(..., k, ...) -> S(..., k + 1, …), where S is the SCoP statement +/// S(..., k, ...) -> S(..., , ...), where S is the SCoP statement /// represented by @p Schedule and k is @p Pos. Such a dependence corresponds /// to the dependency produced by the matrix multiplication. /// @@ -781,29 +781,45 @@ /// and false, otherwise. static bool containsOnlyMatMulDep(__isl_keep isl_map *Schedule, const Dependences *D, int &Pos) { - auto *Dep = D->getDependences(Dependences::TYPE_RAW); - auto *Red = D->getDependences(Dependences::TYPE_RED); - if (Red) - Dep = isl_union_map_union(Dep, Red); + auto *Dep = D->getDependences(Dependences::TYPE_RAW | Dependences::TYPE_RED); auto *DomainSpace = isl_space_domain(isl_map_get_space(Schedule)); auto *Space = isl_space_map_from_domain_and_range(isl_space_copy(DomainSpace), DomainSpace); auto *Deltas = isl_map_deltas(isl_union_map_extract_map(Dep, Space)); isl_union_map_free(Dep); int DeltasDimNum = isl_set_dim(Deltas, isl_dim_set); + + bool foundNonZeroDimension = false; + for (int i = 0; i < DeltasDimNum; i++) { auto *Val = isl_set_plain_get_val_if_fixed(Deltas, isl_dim_set, i); - Pos = Pos < 0 && isl_val_is_one(Val) ? i : Pos; - if (isl_val_is_nan(Val) || - !(isl_val_is_zero(Val) || (i == Pos && isl_val_is_one(Val)))) { + if (isl_val_is_zero(Val)) { isl_val_free(Val); + continue; + } + isl_val_free(Val); + + // we have already found a nonzero subspace. Getting another + // nonzero subspace means that we have a dependence along another dimension. + if (foundNonZeroDimension) { + isl_set_free(Deltas); + return false; + } + foundNonZeroDimension = true; + + // Pos < 0, we need to set the parameter which corresponds the dependence. + if (Pos < 0) { + Pos = i; + } + // Pos > 0, we should verify that the dimension is the one along which + // the dependence is supposed to be, + else if (Pos != i) { isl_set_free(Deltas); return false; } - isl_val_free(Val); } isl_set_free(Deltas); - if (DeltasDimNum == 0 || Pos < 0) + if (DeltasDimNum == 0 || !foundNonZeroDimension) return false; return true; } Index: test/DependenceInfo/reduction_complex_location.ll =================================================================== --- test/DependenceInfo/reduction_complex_location.ll +++ test/DependenceInfo/reduction_complex_location.ll @@ -9,7 +9,7 @@ ; CHECK-NEXT: WAW dependences: ; CHECK-NEXT: { } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_for_body3[i0, i1] -> Stmt_for_body3[2 + i0, -1 + i1] : 0 <= i0 <= 97 and 0 < i1 <= 99 } +; CHECK-NEXT: { Stmt_for_body3[i0, i1] -> Stmt_for_body3[o0, o1] : 2o1 = i0 + 2i1 - o0 and i0 >= 0 and i1 <= 99 and i0 < o0 <= 99 and o0 <= i0 + 2i1 } ; ; void f(int *sum) { ; for (int i = 0; i < 100; i++) Index: test/DependenceInfo/reduction_dependences_equal_non_reduction_dependences.ll =================================================================== --- test/DependenceInfo/reduction_dependences_equal_non_reduction_dependences.ll +++ test/DependenceInfo/reduction_dependences_equal_non_reduction_dependences.ll @@ -3,14 +3,14 @@ ; This loopnest contains a reduction which imposes the same dependences as the ; accesses to the array A. We need to ensure we keep the dependences of A. ; -; CHECK: RAW dependences: -; CHECK-NEXT: { Stmt_for_body[i0] -> Stmt_for_body[1 + i0] : 0 <= i0 <= 1022 } +; CHECK: RAW dependences: +; CHECK-NEXT: { Stmt_for_body[i0] -> Stmt_for_body[1 + i0] : 0 <= i0 <= 1022 } ; CHECK-NEXT: WAR dependences: -; CHECK-NEXT: { Stmt_for_body[i0] -> Stmt_for_body[1 + i0] : 0 <= i0 <= 1022 } +; CHECK-NEXT: { Stmt_for_body[i0] -> Stmt_for_body[1 + i0] : 0 <= i0 <= 1022 } ; CHECK-NEXT: WAW dependences: -; CHECK-NEXT: { Stmt_for_body[i0] -> Stmt_for_body[1 + i0] : 0 <= i0 <= 1022 } +; CHECK-NEXT: { Stmt_for_body[i0] -> Stmt_for_body[1 + i0] : 0 <= i0 <= 1022 } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_for_body[i0] -> Stmt_for_body[1 + i0] : 0 <= i0 <= 1022 } +; CHECK-NEXT: { Stmt_for_body[i0] -> Stmt_for_body[o0] : i0 >= 0 and i0 < o0 <= 1023 } ; ; ; void AandSum(int *restrict sum, int *restrict A) { Index: test/DependenceInfo/reduction_mixed_reduction_and_non_reduction_dependences.ll =================================================================== --- test/DependenceInfo/reduction_mixed_reduction_and_non_reduction_dependences.ll +++ test/DependenceInfo/reduction_mixed_reduction_and_non_reduction_dependences.ll @@ -1,13 +1,13 @@ ; RUN: opt %loadPolly -polly-dependences -analyze < %s | FileCheck %s ; ; CHECK: RAW dependences: -; CHECK-NEXT: { Stmt_for_body3[i0, i1] -> Stmt_for_body3[i0 + i1, o1] : i0 >= 0 and 0 <= i1 <= 1023 - i0 and i1 <= 1 and 0 < o1 <= 511 } +; CHECK-NEXT: { Stmt_for_body3[i0, i1] -> Stmt_for_body3[i0 + i1, o1] : i0 >= 0 and 0 <= i1 <= 1023 - i0 and i1 <= 511 and 0 < o1 <= 511 } ; CHECK-NEXT: WAR dependences: ; CHECK-NEXT: { } ; CHECK-NEXT: WAW dependences: -; CHECK-NEXT: { Stmt_for_body3[i0, i1] -> Stmt_for_body3[1 + i0, -1 + i1] : 0 <= i0 <= 1022 and 2 <= i1 <= 511; Stmt_for_body3[i0, 2] -> Stmt_for_body3[2 + i0, 0] : 0 <= i0 <= 1021 } +; CHECK-NEXT: { Stmt_for_body3[i0, i1] -> Stmt_for_body3[o0, i0 + i1 - o0] : i0 >= 0 and i1 <= 511 and i0 < o0 <= 1023 and o0 < i0 + i1 } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_for_body3[i0, 1] -> Stmt_for_body3[1 + i0, 0] : 0 <= i0 <= 1022 } +; CHECK-NEXT: { Stmt_for_body3[i0, i1] -> Stmt_for_body3[i0 + i1, 0] : i0 >= 0 and 0 < i1 <= 1023 - i0 and i1 <= 511 } ; ; void f(int *sum) { ; for (int i = 0; i < 1024; i++) Index: test/DependenceInfo/reduction_multiple_loops_array_sum.ll =================================================================== --- test/DependenceInfo/reduction_multiple_loops_array_sum.ll +++ test/DependenceInfo/reduction_multiple_loops_array_sum.ll @@ -5,7 +5,7 @@ ; Verify that only the inner reduction like accesses cause reduction dependences ; ; CHECK: Reduction dependences: -; CHECK-NEXT: { Stmt_for_body3[i0, i1] -> Stmt_for_body3[i0, 1 + i1] : 0 <= i0 <= 99 and 0 <= i1 <= 98 } +; CHECK-NEXT: { Stmt_for_body[i0] -> Stmt_for_body[o0] : i0 >= 0 and i0 < o0 <= 99; Stmt_for_body3[i0, i1] -> Stmt_for_body3[o0, o1] : i0 >= 0 and 0 <= i1 <= 99 and i0 < o0 <= 99 and 0 <= o1 <= 99; Stmt_for_body3[i0, i1] -> Stmt_for_body3[i0, o1] : 0 <= i0 <= 99 and i1 >= 0 and i1 < o1 <= 99 } ; ; void f(int * restrict A, int * restrict sum) { ; int i, j, k; Index: test/DependenceInfo/reduction_multiple_loops_array_sum_2.ll =================================================================== --- test/DependenceInfo/reduction_multiple_loops_array_sum_2.ll +++ test/DependenceInfo/reduction_multiple_loops_array_sum_2.ll @@ -7,7 +7,7 @@ ; CHECK-NEXT: WAW dependences: ; CHECK-NEXT: { } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_for_body3[i0, i1] -> Stmt_for_body3[i0, 1 + i1] : 0 <= i0 <= 99 and 0 <= i1 <= 98; Stmt_for_body3[i0, 99] -> Stmt_for_body3[1 + i0, 0] : 0 <= i0 <= 98 } +; CHECK-NEXT: { Stmt_for_body3[i0, i1] -> Stmt_for_body3[o0, o1] : i0 >= 0 and 0 <= i1 <= 99 and i0 < o0 <= 99 and 0 <= o1 <= 99; Stmt_for_body3[i0, i1] -> Stmt_for_body3[i0, o1] : 0 <= i0 <= 99 and i1 >= 0 and i1 < o1 <= 99 } ; ; int f(int * restrict A, int * restrict sum) { ; int i, j, k; Index: test/DependenceInfo/reduction_multiple_loops_array_sum_3.ll =================================================================== --- test/DependenceInfo/reduction_multiple_loops_array_sum_3.ll +++ test/DependenceInfo/reduction_multiple_loops_array_sum_3.ll @@ -1,7 +1,7 @@ ; RUN: opt %loadPolly -polly-dependences -analyze -basicaa < %s | FileCheck %s ; ; CHECK: Reduction dependences: -; CHECK-NEXT: { Stmt_for_inc[i0, i1] -> Stmt_for_inc[i0, 1 + i1] : 0 <= i0 <= 99 and 0 <= i1 <= 98 } +; CHECK-NEXT: { Stmt_for_inc[i0, i1] -> Stmt_for_inc[i0, o1] : 0 <= i0 <= 99 and i1 >= 0 and i1 < o1 <= 99 } ; ; int f(int * __restrict__ A) { ; int i, j, sum = 0; Index: test/DependenceInfo/reduction_multiple_reductions.ll =================================================================== --- test/DependenceInfo/reduction_multiple_reductions.ll +++ test/DependenceInfo/reduction_multiple_reductions.ll @@ -9,7 +9,7 @@ ; CHECK-NEXT: WAW dependences: ; CHECK-NEXT: { } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_if_else[i0] -> Stmt_if_else[1 + i0] : 512 <= i0 <= 1022; Stmt_if_then[i0] -> Stmt_if_then[1 + i0] : 0 <= i0 <= 510 } +; CHECK-NEXT: { Stmt_if_else[i0] -> Stmt_if_else[o0] : i0 >= 512 and i0 < o0 <= 1023; Stmt_if_then[i0] -> Stmt_if_then[o0] : i0 >= 0 and i0 < o0 <= 511 } ; ; void f(int *restrict sum, int *restrict prod) { ; for (int i = 0; i < 1024; i++) Index: test/DependenceInfo/reduction_multiple_reductions_2.ll =================================================================== --- test/DependenceInfo/reduction_multiple_reductions_2.ll +++ test/DependenceInfo/reduction_multiple_reductions_2.ll @@ -10,13 +10,13 @@ ; Stmt_S1[i0, i1] -> Stmt_S2[i0, 0] ; ; CHECK: RAW dependences: -; CHECK-NEXT: { Stmt_S0[i0] -> Stmt_S1[i0, o1] : 0 <= i0 <= 1023 and 0 <= o1 <= 1023; Stmt_S2[i0, i1] -> Stmt_S3[i0] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023; Stmt_S3[i0] -> Stmt_S0[1 + i0] : 0 <= i0 <= 1022; Stmt_S1[i0, 1023] -> Stmt_S2[i0, o1] : 0 <= i0 <= 1023 and 0 <= o1 <= 1023; Stmt_S1[i0, i1] -> Stmt_S2[i0, 0] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022 } +; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S3[i0] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023; Stmt_S0[i0] -> Stmt_S2[i0, o1] : 0 <= i0 <= 1023 and 0 <= o1 <= 1023; Stmt_S1[i0, i1] -> Stmt_S3[i0] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023; Stmt_S1[i0, i1] -> Stmt_S2[i0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o1 <= 1023; Stmt_S0[i0] -> Stmt_S3[i0] : 0 <= i0 <= 1023; Stmt_S3[i0] -> Stmt_S0[1 + i0] : 0 <= i0 <= 1022; Stmt_S0[i0] -> Stmt_S1[i0, o1] : 0 <= i0 <= 1023 and 0 <= o1 <= 1023 } ; CHECK-NEXT: WAR dependences: -; CHECK-NEXT: { Stmt_S0[i0] -> Stmt_S1[i0, o1] : 0 <= i0 <= 1023 and 0 <= o1 <= 1023; Stmt_S2[i0, i1] -> Stmt_S3[i0] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023; Stmt_S3[i0] -> Stmt_S0[1 + i0] : 0 <= i0 <= 1022; Stmt_S1[i0, 1023] -> Stmt_S2[i0, o1] : 0 <= i0 <= 1023 and 0 <= o1 <= 1023; Stmt_S1[i0, i1] -> Stmt_S2[i0, 0] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022 } +; CHECK-NEXT: { Stmt_S0[i0] -> Stmt_S1[i0, 0] : 0 <= i0 <= 1023; Stmt_S2[i0, 1023] -> Stmt_S3[i0] : 0 <= i0 <= 1023; Stmt_S3[i0] -> Stmt_S0[1 + i0] : 0 <= i0 <= 1022; Stmt_S1[i0, 1023] -> Stmt_S2[i0, 0] : 0 <= i0 <= 1023 } ; CHECK-NEXT: WAW dependences: -; CHECK-NEXT: { Stmt_S0[i0] -> Stmt_S1[i0, o1] : 0 <= i0 <= 1023 and 0 <= o1 <= 1023; Stmt_S2[i0, i1] -> Stmt_S3[i0] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023; Stmt_S3[i0] -> Stmt_S0[1 + i0] : 0 <= i0 <= 1022; Stmt_S1[i0, 1023] -> Stmt_S2[i0, o1] : 0 <= i0 <= 1023 and 0 <= o1 <= 1023; Stmt_S1[i0, i1] -> Stmt_S2[i0, 0] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022 } +; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S3[i0] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023; Stmt_S0[i0] -> Stmt_S2[i0, o1] : 0 <= i0 <= 1023 and 0 <= o1 <= 1023; Stmt_S1[i0, i1] -> Stmt_S3[i0] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023; Stmt_S1[i0, i1] -> Stmt_S2[i0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o1 <= 1023; Stmt_S0[i0] -> Stmt_S3[i0] : 0 <= i0 <= 1023; Stmt_S3[i0] -> Stmt_S0[1 + i0] : 0 <= i0 <= 1022; Stmt_S0[i0] -> Stmt_S1[i0, o1] : 0 <= i0 <= 1023 and 0 <= o1 <= 1023 } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_S1[i0, i1] -> Stmt_S1[i0, 1 + i1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022; Stmt_S2[i0, i1] -> Stmt_S2[i0, 1 + i1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022 } +; CHECK-NEXT: { Stmt_S1[i0, i1] -> Stmt_S1[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023; Stmt_S2[i0, i1] -> Stmt_S2[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023 } ; ; void f(int *restrict red) { ; for (int j = 0; j < 1024; j++) { Index: test/DependenceInfo/reduction_partially_escaping_intermediate_in_other_stmt.ll =================================================================== --- test/DependenceInfo/reduction_partially_escaping_intermediate_in_other_stmt.ll +++ test/DependenceInfo/reduction_partially_escaping_intermediate_in_other_stmt.ll @@ -1,7 +1,7 @@ ; RUN: opt %loadPolly -polly-dependences -analyze -basicaa < %s | FileCheck %s ; ; CHECK: Reduction dependences: -; CHECK-NEXT: [N] -> { Stmt_for_body3[i0, i1] -> Stmt_for_body3[i0, 1 + i1] : 0 <= i0 <= 1023 and i1 >= 0 and 1024 - N + i0 <= i1 <= 1022 } +; CHECK-NEXT: [N] -> { Stmt_for_body3[i0, i1] -> Stmt_for_body3[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023 } ; ; void f(int N, int * restrict sums, int * restrict escape) { ; for (int i = 0; i < 1024; i++) { Index: test/DependenceInfo/reduction_privatization_deps.ll =================================================================== --- test/DependenceInfo/reduction_privatization_deps.ll +++ test/DependenceInfo/reduction_privatization_deps.ll @@ -1,13 +1,13 @@ ; RUN: opt %loadPolly -polly-dependences -analyze < %s | FileCheck %s ; ; CHECK: RAW dependences: -; CHECK-NEXT: { Stmt_S0[i0] -> Stmt_S1[o0, i0 - o0] : i0 <= 1023 and 0 <= o0 <= i0; Stmt_S1[i0, i1] -> Stmt_S2[-1 + i0 + i1] : 0 <= i0 <= 1023 and i1 >= 0 and -i0 < i1 <= 1024 - i0 and i1 <= 1023 } +; CHECK-NEXT: { Stmt_S0[i0] -> Stmt_S2[-1 + i0] : 0 < i0 <= 1023; Stmt_S0[i0] -> Stmt_S1[o0, i0 - o0] : i0 <= 1023 and 0 <= o0 <= i0; Stmt_S1[i0, i1] -> Stmt_S2[-1 + i0 + i1] : 0 <= i0 <= 1023 and i1 >= 0 and -i0 < i1 <= 1024 - i0 and i1 <= 1023 } ; CHECK-NEXT: WAR dependences: ; CHECK-NEXT: { Stmt_S2[i0] -> Stmt_S2[1 + i0] : 0 <= i0 <= 1022; Stmt_S1[0, 0] -> Stmt_S2[0] } ; CHECK-NEXT: WAW dependences: -; CHECK-NEXT: { Stmt_S0[i0] -> Stmt_S1[o0, i0 - o0] : i0 <= 1023 and 0 <= o0 <= i0; Stmt_S1[i0, i1] -> Stmt_S2[i0 + i1] : i0 >= 0 and 0 <= i1 <= 1023 - i0 } +; CHECK-NEXT: { Stmt_S0[i0] -> Stmt_S2[i0] : 0 <= i0 <= 1023; Stmt_S0[i0] -> Stmt_S1[o0, i0 - o0] : i0 <= 1023 and 0 <= o0 <= i0; Stmt_S1[i0, i1] -> Stmt_S2[i0 + i1] : i0 >= 0 and 0 <= i1 <= 1023 - i0 } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_S1[i0, i1] -> Stmt_S1[1 + i0, -1 + i1] : 0 <= i0 <= 1022 and 0 < i1 <= 1023 } +; CHECK-NEXT: { Stmt_S1[i0, i1] -> Stmt_S1[o0, i0 + i1 - o0] : i0 >= 0 and i1 <= 1023 and i0 < o0 <= 1023 and o0 <= i0 + i1 } ; ; void f(int *sum) { ; for (int i = 0; i < 1024; i++) Index: test/DependenceInfo/reduction_privatization_deps_2.ll =================================================================== --- test/DependenceInfo/reduction_privatization_deps_2.ll +++ test/DependenceInfo/reduction_privatization_deps_2.ll @@ -4,13 +4,13 @@ ; textually earlier one, but the dependences still go forward in time. ; ; CHECK: RAW dependences: -; CHECK-NEXT: { Stmt_S3[i0] -> Stmt_S2[1 + i0, o1] : 0 <= i0 <= 97 and 0 <= o1 <= 99; Stmt_S1[i0] -> Stmt_S3[i0] : 0 <= i0 <= 98 } +; CHECK-NEXT: { Stmt_S1[i0] -> Stmt_S2[1 + i0, o1] : 0 <= i0 <= 97 and 0 <= o1 <= 99; Stmt_S3[i0] -> Stmt_S2[1 + i0, o1] : 0 <= i0 <= 97 and 0 <= o1 <= 99; Stmt_S1[i0] -> Stmt_S3[i0] : 0 <= i0 <= 98 } ; CHECK-NEXT: WAR dependences: -; CHECK-NEXT: { Stmt_S3[i0] -> Stmt_S2[1 + i0, o1] : 0 <= i0 <= 97 and 0 <= o1 <= 99; Stmt_S1[i0] -> Stmt_S3[i0] : 0 <= i0 <= 98 } +; CHECK-NEXT: { Stmt_S3[i0] -> Stmt_S2[1 + i0, 0] : 0 <= i0 <= 97; Stmt_S1[i0] -> Stmt_S3[i0] : 0 <= i0 <= 98 } ; CHECK-NEXT: WAW dependences: -; CHECK-NEXT: { Stmt_S3[i0] -> Stmt_S2[1 + i0, o1] : 0 <= i0 <= 97 and 0 <= o1 <= 99; Stmt_S1[i0] -> Stmt_S3[i0] : 0 <= i0 <= 98 } +; CHECK-NEXT: { Stmt_S1[i0] -> Stmt_S2[1 + i0, o1] : 0 <= i0 <= 97 and 0 <= o1 <= 99; Stmt_S3[i0] -> Stmt_S2[1 + i0, o1] : 0 <= i0 <= 97 and 0 <= o1 <= 99; Stmt_S1[i0] -> Stmt_S3[i0] : 0 <= i0 <= 98 } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S2[i0, 1 + i1] : 0 <= i0 <= 98 and 0 <= i1 <= 98 } +; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S2[i0, o1] : 0 <= i0 <= 98 and i1 >= 0 and i1 < o1 <= 99 } ; ; void f(int *sum) { ; int i, j; Index: test/DependenceInfo/reduction_privatization_deps_3.ll =================================================================== --- test/DependenceInfo/reduction_privatization_deps_3.ll +++ test/DependenceInfo/reduction_privatization_deps_3.ll @@ -1,13 +1,12 @@ ; RUN: opt %loadPolly -polly-dependences -analyze < %s | FileCheck %s -; ; CHECK: RAW dependences: -; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S3[o0] : i1 <= 1 - i0 and -i1 < o0 <= 1 and o0 <= 1 + i0 - i1; Stmt_S3[i0] -> Stmt_S2[o0, 1 - i0] : 0 <= i0 <= 1 and i0 < o0 <= 98; Stmt_S1[i0] -> Stmt_S3[2 + i0] : 0 <= i0 <= 96 } +; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S3[1 - i1] : i0 >= 0 and 0 <= i1 <= 1 - i0; Stmt_S3[i0] -> Stmt_S2[o0, 1 - i0] : 0 <= i0 <= 1 and i0 < o0 <= 98; Stmt_S1[i0] -> Stmt_S3[2 + i0] : 0 <= i0 <= 96 } ; CHECK-NEXT: WAR dependences: -; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S3[o0] : i1 <= 1 - i0 and -i1 < o0 <= 1 and o0 <= 1 + i0 - i1; Stmt_S3[i0] -> Stmt_S2[o0, 1 - i0] : 0 <= i0 <= 1 and i0 < o0 <= 98; Stmt_S1[i0] -> Stmt_S3[2 + i0] : 0 <= i0 <= 96 } +; CHECK-NEXT: { Stmt_S2[i0, 1 - i0] -> Stmt_S3[i0] : 0 <= i0 <= 1; Stmt_S3[i0] -> Stmt_S2[1 + i0, 1 - i0] : 0 <= i0 <= 1; Stmt_S1[i0] -> Stmt_S3[2 + i0] : 0 <= i0 <= 96 } ; CHECK-NEXT: WAW dependences: -; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S3[o0] : i1 <= 1 - i0 and -i1 < o0 <= 1 and o0 <= 1 + i0 - i1; Stmt_S3[i0] -> Stmt_S2[o0, 1 - i0] : 0 <= i0 <= 1 and i0 < o0 <= 98; Stmt_S1[i0] -> Stmt_S3[2 + i0] : 0 <= i0 <= 96 } +; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S3[1 - i1] : i0 >= 0 and 0 <= i1 <= 1 - i0; Stmt_S3[i0] -> Stmt_S2[o0, 1 - i0] : 0 <= i0 <= 1 and i0 < o0 <= 98; Stmt_S1[i0] -> Stmt_S3[2 + i0] : 0 <= i0 <= 96 } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S2[1 + i0, i1] : 0 <= i0 <= 97 and i1 >= 0 and 2 - i0 <= i1 <= 98 - i0; Stmt_S2[0, 0] -> Stmt_S2[1, 0] } +; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S2[o0, i1] : i0 >= 0 and i1 >= 0 and i0 < o0 <= 99 - i1 and o0 <= 98 } ; ; void f(int *sum) { ; int i, j; Index: test/DependenceInfo/reduction_privatization_deps_4.ll =================================================================== --- test/DependenceInfo/reduction_privatization_deps_4.ll +++ test/DependenceInfo/reduction_privatization_deps_4.ll @@ -1,13 +1,13 @@ ; RUN: opt %loadPolly -polly-dependences -analyze < %s | FileCheck %s ; ; CHECK: RAW dependences: -; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S1[i1] : i0 >= 0 and i0 < i1 <= 98; Stmt_S1[i0] -> Stmt_S2[i0, i0] : 0 <= i0 <= 98; Stmt_S2[i0, i0] -> Stmt_S3[i0] : 0 <= i0 <= 98; Stmt_S3[i0] -> Stmt_S2[o0, i0] : i0 >= 0 and i0 < o0 <= 98 } +; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S1[i1] : i0 >= 0 and i0 < i1 <= 98; Stmt_S1[i0] -> Stmt_S2[o0, i0] : i0 >= 0 and i0 <= o0 <= 98; Stmt_S2[i0, i1] -> Stmt_S3[i1] : i0 >= 0 and i0 <= i1 <= 98; Stmt_S3[i0] -> Stmt_S2[o0, i0] : i0 >= 0 and i0 < o0 <= 98; Stmt_S1[i0] -> Stmt_S3[i0] : 0 <= i0 <= 98 } ; CHECK-NEXT: WAR dependences: -; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S1[i1] : i0 >= 0 and i0 < i1 <= 98; Stmt_S1[i0] -> Stmt_S2[i0, i0] : 0 <= i0 <= 98; Stmt_S2[i0, i0] -> Stmt_S3[i0] : 0 <= i0 <= 98; Stmt_S3[i0] -> Stmt_S2[o0, i0] : i0 >= 0 and i0 < o0 <= 98 } +; CHECK-NEXT: { Stmt_S2[i0, 1 + i0] -> Stmt_S1[1 + i0] : 0 <= i0 <= 97; Stmt_S1[i0] -> Stmt_S2[i0, i0] : 0 <= i0 <= 98; Stmt_S2[i0, i0] -> Stmt_S3[i0] : 0 <= i0 <= 98; Stmt_S3[i0] -> Stmt_S2[1 + i0, i0] : 0 <= i0 <= 97 } ; CHECK-NEXT: WAW dependences: -; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S1[i1] : i0 >= 0 and i0 < i1 <= 98; Stmt_S1[i0] -> Stmt_S2[i0, i0] : 0 <= i0 <= 98; Stmt_S2[i0, i0] -> Stmt_S3[i0] : 0 <= i0 <= 98; Stmt_S3[i0] -> Stmt_S2[o0, i0] : i0 >= 0 and i0 < o0 <= 98 } +; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S1[i1] : i0 >= 0 and i0 < i1 <= 98; Stmt_S1[i0] -> Stmt_S2[o0, i0] : i0 >= 0 and i0 <= o0 <= 98; Stmt_S2[i0, i1] -> Stmt_S3[i1] : i0 >= 0 and i0 <= i1 <= 98; Stmt_S3[i0] -> Stmt_S2[o0, i0] : i0 >= 0 and i0 < o0 <= 98; Stmt_S1[i0] -> Stmt_S3[i0] : 0 <= i0 <= 98 } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S2[1 + i0, i1] : (i0 >= 0 and 2 + i0 <= i1 <= 99) or (i0 <= 97 and 0 <= i1 < i0) } +; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S2[o0, i1] : i0 >= 0 and 0 <= i1 <= 99 and i0 < o0 <= 98 } ; ; void f(int *sum) { ; for (int i = 0; i < 99; i++) { Index: test/DependenceInfo/reduction_privatization_deps_5.ll =================================================================== --- test/DependenceInfo/reduction_privatization_deps_5.ll +++ test/DependenceInfo/reduction_privatization_deps_5.ll @@ -1,13 +1,13 @@ ; RUN: opt %loadPolly -polly-dependences -analyze < %s | FileCheck %s ; -; CHECK: RAW dependences: -; CHECK-NEXT: { Stmt_S2[i0, 0] -> Stmt_S1[1 + i0, 0] : 0 <= i0 <= 97; Stmt_S1[i0, 0] -> Stmt_S2[i0, 0] : 0 <= i0 <= 98 } +; CHECK: RAW dependences: +; CHECK-NEXT: { Stmt_S2[i0, 0] -> Stmt_S1[o0, 0] : i0 >= 0 and i0 < o0 <= 98; Stmt_S1[i0, 0] -> Stmt_S2[o0, 0] : i0 >= 0 and i0 <= o0 <= 98 } ; CHECK-NEXT: WAR dependences: ; CHECK-NEXT: { Stmt_S2[i0, 0] -> Stmt_S1[1 + i0, 0] : 0 <= i0 <= 97; Stmt_S1[i0, 0] -> Stmt_S2[i0, 0] : 0 <= i0 <= 98 } ; CHECK-NEXT: WAW dependences: -; CHECK-NEXT: { Stmt_S2[i0, 0] -> Stmt_S1[1 + i0, 0] : 0 <= i0 <= 97; Stmt_S1[i0, 0] -> Stmt_S2[i0, 0] : 0 <= i0 <= 98 } +; CHECK-NEXT: { Stmt_S2[i0, 0] -> Stmt_S1[o0, 0] : i0 >= 0 and i0 < o0 <= 98; Stmt_S1[i0, 0] -> Stmt_S2[o0, 0] : i0 >= 0 and i0 <= o0 <= 98 } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_S2[i0, i1] -> Stmt_S2[1 + i0, i1] : 0 <= i0 <= 97 and 0 < i1 <= 99 } +; CHECK-NEXT: { Stmt_S1[i0, 0] -> Stmt_S1[o0, 0] : i0 >= 0 and i0 < o0 <= 98; Stmt_S2[i0, i1] -> Stmt_S2[o0, i1] : i0 >= 0 and 0 <= i1 <= 99 and i0 < o0 <= 98 } ; ; void f(int *sum) { ; for (int i = 0; i < 99; i++) { Index: test/DependenceInfo/reduction_sequence.ll =================================================================== --- test/DependenceInfo/reduction_sequence.ll +++ test/DependenceInfo/reduction_sequence.ll @@ -58,16 +58,16 @@ ; *A += 42; ; } -; CHECK: RAW dependences: -; CHECK-NEXT: { Stmt_bb150[1023, 1023] -> Stmt_bb162[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb150[i0, i1] -> Stmt_bb162[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb150[1023, 1023] -> Stmt_bb162[0, 0]; Stmt_bb174[1023, 1023] -> Stmt_bb186[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb174[i0, i1] -> Stmt_bb186[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb174[1023, 1023] -> Stmt_bb186[0, 0]; Stmt_bb102[1023, 1023] -> Stmt_bb114[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb114[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb102[1023, 1023] -> Stmt_bb114[0, 0]; Stmt_bb42[1023, 1023] -> Stmt_bb54[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb54[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb42[1023, 1023] -> Stmt_bb54[0, 0]; Stmt_bb54[1023, 1023] -> Stmt_bb66[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb66[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb54[1023, 1023] -> Stmt_bb66[0, 0]; Stmt_bb31[1023, 1023] -> Stmt_bb42[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb42[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb31[1023, 1023] -> Stmt_bb42[0, 0]; Stmt_bb162[1023, 1023] -> Stmt_bb174[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb162[i0, i1] -> Stmt_bb174[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb162[1023, 1023] -> Stmt_bb174[0, 0]; Stmt_bb126[1023, 1023] -> Stmt_bb138[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb126[i0, i1] -> Stmt_bb138[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb126[1023, 1023] -> Stmt_bb138[0, 0]; Stmt_bb90[1023, 1023] -> Stmt_bb102[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb102[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb90[1023, 1023] -> Stmt_bb102[0, 0]; Stmt_bb138[1023, 1023] -> Stmt_bb150[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb138[i0, i1] -> Stmt_bb150[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb138[1023, 1023] -> Stmt_bb150[0, 0]; Stmt_bb66[1023, 1023] -> Stmt_bb78[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb78[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb66[1023, 1023] -> Stmt_bb78[0, 0]; Stmt_bb78[1023, 1023] -> Stmt_bb90[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb90[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb78[1023, 1023] -> Stmt_bb90[0, 0]; Stmt_bb114[1023, 1023] -> Stmt_bb126[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb126[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb114[1023, 1023] -> Stmt_bb126[0, 0] } -; CHECK-NEXT: WAR dependences: -; CHECK-NEXT: { Stmt_bb150[1023, 1023] -> Stmt_bb162[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb150[i0, i1] -> Stmt_bb162[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb150[1023, 1023] -> Stmt_bb162[0, 0]; Stmt_bb174[1023, 1023] -> Stmt_bb186[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb174[i0, i1] -> Stmt_bb186[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb174[1023, 1023] -> Stmt_bb186[0, 0]; Stmt_bb102[1023, 1023] -> Stmt_bb114[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb114[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb102[1023, 1023] -> Stmt_bb114[0, 0]; Stmt_bb42[1023, 1023] -> Stmt_bb54[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb54[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb42[1023, 1023] -> Stmt_bb54[0, 0]; Stmt_bb54[1023, 1023] -> Stmt_bb66[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb66[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb54[1023, 1023] -> Stmt_bb66[0, 0]; Stmt_bb31[1023, 1023] -> Stmt_bb42[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb42[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb31[1023, 1023] -> Stmt_bb42[0, 0]; Stmt_bb162[1023, 1023] -> Stmt_bb174[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb162[i0, i1] -> Stmt_bb174[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb162[1023, 1023] -> Stmt_bb174[0, 0]; Stmt_bb126[1023, 1023] -> Stmt_bb138[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb126[i0, i1] -> Stmt_bb138[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb126[1023, 1023] -> Stmt_bb138[0, 0]; Stmt_bb90[1023, 1023] -> Stmt_bb102[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb102[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb90[1023, 1023] -> Stmt_bb102[0, 0]; Stmt_bb138[1023, 1023] -> Stmt_bb150[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb138[i0, i1] -> Stmt_bb150[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb138[1023, 1023] -> Stmt_bb150[0, 0]; Stmt_bb66[1023, 1023] -> Stmt_bb78[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb78[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb66[1023, 1023] -> Stmt_bb78[0, 0]; Stmt_bb78[1023, 1023] -> Stmt_bb90[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb90[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb78[1023, 1023] -> Stmt_bb90[0, 0]; Stmt_bb114[1023, 1023] -> Stmt_bb126[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb126[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb114[1023, 1023] -> Stmt_bb126[0, 0] } -; CHECK-NEXT: WAW dependences: -; CHECK-NEXT: { Stmt_bb150[1023, 1023] -> Stmt_bb162[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb150[i0, i1] -> Stmt_bb162[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb150[1023, 1023] -> Stmt_bb162[0, 0]; Stmt_bb174[1023, 1023] -> Stmt_bb186[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb174[i0, i1] -> Stmt_bb186[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb174[1023, 1023] -> Stmt_bb186[0, 0]; Stmt_bb102[1023, 1023] -> Stmt_bb114[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb114[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb102[1023, 1023] -> Stmt_bb114[0, 0]; Stmt_bb42[1023, 1023] -> Stmt_bb54[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb54[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb42[1023, 1023] -> Stmt_bb54[0, 0]; Stmt_bb54[1023, 1023] -> Stmt_bb66[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb66[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb54[1023, 1023] -> Stmt_bb66[0, 0]; Stmt_bb31[1023, 1023] -> Stmt_bb42[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb42[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb31[1023, 1023] -> Stmt_bb42[0, 0]; Stmt_bb162[1023, 1023] -> Stmt_bb174[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb162[i0, i1] -> Stmt_bb174[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb162[1023, 1023] -> Stmt_bb174[0, 0]; Stmt_bb126[1023, 1023] -> Stmt_bb138[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb126[i0, i1] -> Stmt_bb138[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb126[1023, 1023] -> Stmt_bb138[0, 0]; Stmt_bb90[1023, 1023] -> Stmt_bb102[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb102[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb90[1023, 1023] -> Stmt_bb102[0, 0]; Stmt_bb138[1023, 1023] -> Stmt_bb150[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb138[i0, i1] -> Stmt_bb150[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb138[1023, 1023] -> Stmt_bb150[0, 0]; Stmt_bb66[1023, 1023] -> Stmt_bb78[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb78[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb66[1023, 1023] -> Stmt_bb78[0, 0]; Stmt_bb78[1023, 1023] -> Stmt_bb90[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb90[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb78[1023, 1023] -> Stmt_bb90[0, 0]; Stmt_bb114[1023, 1023] -> Stmt_bb126[o0, o1] : o0 <= 1023 and o1 >= 0 and -1024o0 < o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb126[0, 0] : i0 >= 0 and 0 <= i1 <= 1048574 - 1024i0 and i1 <= 1023; Stmt_bb114[1023, 1023] -> Stmt_bb126[0, 0] } -; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_bb102[i0, i1] -> Stmt_bb102[i0, 1 + i1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022; Stmt_bb102[i0, 1023] -> Stmt_bb102[1 + i0, 0] : 0 <= i0 <= 1022; Stmt_bb186[i0, i1] -> Stmt_bb186[i0, 1 + i1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022; Stmt_bb186[i0, 1023] -> Stmt_bb186[1 + i0, 0] : 0 <= i0 <= 1022; Stmt_bb90[i0, i1] -> Stmt_bb90[i0, 1 + i1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022; Stmt_bb90[i0, 1023] -> Stmt_bb90[1 + i0, 0] : 0 <= i0 <= 1022; Stmt_bb66[i0, i1] -> Stmt_bb66[i0, 1 + i1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022; Stmt_bb66[i0, 1023] -> Stmt_bb66[1 + i0, 0] : 0 <= i0 <= 1022; Stmt_bb31[i0, i1] -> Stmt_bb31[i0, 1 + i1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022; Stmt_bb31[i0, 1023] -> Stmt_bb31[1 + i0, 0] : 0 <= i0 <= 1022; Stmt_bb138[i0, i1] -> Stmt_bb138[i0, 1 + i1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022; Stmt_bb138[i0, 1023] -> Stmt_bb138[1 + i0, 0] : 0 <= i0 <= 1022; Stmt_bb126[i0, i1] -> Stmt_bb126[i0, 1 + i1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022; Stmt_bb126[i0, 1023] -> Stmt_bb126[1 + i0, 0] : 0 <= i0 <= 1022; Stmt_bb150[i0, i1] -> Stmt_bb150[i0, 1 + i1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022; Stmt_bb150[i0, 1023] -> Stmt_bb150[1 + i0, 0] : 0 <= i0 <= 1022; Stmt_bb42[i0, i1] -> Stmt_bb42[i0, 1 + i1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022; Stmt_bb42[i0, 1023] -> Stmt_bb42[1 + i0, 0] : 0 <= i0 <= 1022; Stmt_bb78[i0, i1] -> Stmt_bb78[i0, 1 + i1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022; Stmt_bb78[i0, 1023] -> Stmt_bb78[1 + i0, 0] : 0 <= i0 <= 1022; Stmt_bb114[i0, i1] -> Stmt_bb114[i0, 1 + i1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022; Stmt_bb114[i0, 1023] -> Stmt_bb114[1 + i0, 0] : 0 <= i0 <= 1022; Stmt_bb174[i0, i1] -> Stmt_bb174[i0, 1 + i1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022; Stmt_bb174[i0, 1023] -> Stmt_bb174[1 + i0, 0] : 0 <= i0 <= 1022; Stmt_bb162[i0, i1] -> Stmt_bb162[i0, 1 + i1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022; Stmt_bb162[i0, 1023] -> Stmt_bb162[1 + i0, 0] : 0 <= i0 <= 1022; Stmt_bb54[i0, i1] -> Stmt_bb54[i0, 1 + i1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1022; Stmt_bb54[i0, 1023] -> Stmt_bb54[1 + i0, 0] : 0 <= i0 <= 1022 } -; CHECK-NEXT: Transitive closure of reduction dependences: -; CHECK-NEXT: { Stmt_bb102[i0, i1] -> Stmt_bb102[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 >= 0 and o0 <= 1023 and o1 > 1024i0 + i1 - 1024o0) or (i0 <= 1023 and o0 >= 0 and o1 < 1024i0 + i1 - 1024o0)); Stmt_bb186[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 >= 0 and o0 <= 1023 and o1 > 1024i0 + i1 - 1024o0) or (i0 <= 1023 and o0 >= 0 and o1 < 1024i0 + i1 - 1024o0)); Stmt_bb90[i0, i1] -> Stmt_bb90[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 >= 0 and o0 <= 1023 and o1 > 1024i0 + i1 - 1024o0) or (i0 <= 1023 and o0 >= 0 and o1 < 1024i0 + i1 - 1024o0)); Stmt_bb66[i0, i1] -> Stmt_bb66[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 >= 0 and o0 <= 1023 and o1 > 1024i0 + i1 - 1024o0) or (i0 <= 1023 and o0 >= 0 and o1 < 1024i0 + i1 - 1024o0)); Stmt_bb31[i0, i1] -> Stmt_bb31[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 >= 0 and o0 <= 1023 and o1 > 1024i0 + i1 - 1024o0) or (i0 <= 1023 and o0 >= 0 and o1 < 1024i0 + i1 - 1024o0)); Stmt_bb138[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 >= 0 and o0 <= 1023 and o1 > 1024i0 + i1 - 1024o0) or (i0 <= 1023 and o0 >= 0 and o1 < 1024i0 + i1 - 1024o0)); Stmt_bb126[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 >= 0 and o0 <= 1023 and o1 > 1024i0 + i1 - 1024o0) or (i0 <= 1023 and o0 >= 0 and o1 < 1024i0 + i1 - 1024o0)); Stmt_bb150[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 >= 0 and o0 <= 1023 and o1 > 1024i0 + i1 - 1024o0) or (i0 <= 1023 and o0 >= 0 and o1 < 1024i0 + i1 - 1024o0)); Stmt_bb42[i0, i1] -> Stmt_bb42[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 >= 0 and o0 <= 1023 and o1 > 1024i0 + i1 - 1024o0) or (i0 <= 1023 and o0 >= 0 and o1 < 1024i0 + i1 - 1024o0)); Stmt_bb78[i0, i1] -> Stmt_bb78[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 >= 0 and o0 <= 1023 and o1 > 1024i0 + i1 - 1024o0) or (i0 <= 1023 and o0 >= 0 and o1 < 1024i0 + i1 - 1024o0)); Stmt_bb114[i0, i1] -> Stmt_bb114[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 >= 0 and o0 <= 1023 and o1 > 1024i0 + i1 - 1024o0) or (i0 <= 1023 and o0 >= 0 and o1 < 1024i0 + i1 - 1024o0)); Stmt_bb174[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 >= 0 and o0 <= 1023 and o1 > 1024i0 + i1 - 1024o0) or (i0 <= 1023 and o0 >= 0 and o1 < 1024i0 + i1 - 1024o0)); Stmt_bb162[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 >= 0 and o0 <= 1023 and o1 > 1024i0 + i1 - 1024o0) or (i0 <= 1023 and o0 >= 0 and o1 < 1024i0 + i1 - 1024o0)); Stmt_bb54[i0, i1] -> Stmt_bb54[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 >= 0 and o0 <= 1023 and o1 > 1024i0 + i1 - 1024o0) or (i0 <= 1023 and o0 >= 0 and o1 < 1024i0 + i1 - 1024o0)) } +; CHECK: RAW dependences: +; CHECK-NEXT: { Stmt_bb90[i0, i1] -> Stmt_bb102[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb162[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb138[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb66[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb174[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb78[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb138[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb90[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb54[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb102[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb138[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb90[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb114[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb126[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb150[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb90[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb66[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb126[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb114[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb114[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb138[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb114[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb150[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb114[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb114[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb102[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb102[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb78[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb150[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb66[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb78[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb42[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb162[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb102[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb126[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb90[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb126[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb90[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb102[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb126[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb54[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb78[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb114[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023 } +; CHECK-NEXT: WAR dependences: +; CHECK-NEXT: { Stmt_bb150[1023, 1023] -> Stmt_bb162[0, 0]; Stmt_bb174[1023, 1023] -> Stmt_bb186[0, 0]; Stmt_bb102[1023, 1023] -> Stmt_bb114[0, 0]; Stmt_bb42[1023, 1023] -> Stmt_bb54[0, 0]; Stmt_bb54[1023, 1023] -> Stmt_bb66[0, 0]; Stmt_bb31[1023, 1023] -> Stmt_bb42[0, 0]; Stmt_bb162[1023, 1023] -> Stmt_bb174[0, 0]; Stmt_bb126[1023, 1023] -> Stmt_bb138[0, 0]; Stmt_bb90[1023, 1023] -> Stmt_bb102[0, 0]; Stmt_bb138[1023, 1023] -> Stmt_bb150[0, 0]; Stmt_bb66[1023, 1023] -> Stmt_bb78[0, 0]; Stmt_bb78[1023, 1023] -> Stmt_bb90[0, 0]; Stmt_bb114[1023, 1023] -> Stmt_bb126[0, 0] } +; CHECK-NEXT: WAW dependences: +; CHECK-NEXT: { Stmt_bb90[i0, i1] -> Stmt_bb102[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb162[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb138[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb66[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb174[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb78[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb138[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb90[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb54[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb102[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb138[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb90[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb114[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb126[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb150[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb90[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb66[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb126[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb114[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb114[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb138[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb114[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb150[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb114[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb114[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb102[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb102[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb78[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb150[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb66[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb78[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb42[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb162[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb102[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb126[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb90[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb126[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb90[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb102[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb126[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb54[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb78[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb114[o0, o1] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= o0 <= 1023 and 0 <= o1 <= 1023 } +; CHECK-NEXT: Reduction dependences: +; CHECK-NEXT: { Stmt_bb102[i0, i1] -> Stmt_bb102[o0, o1] : i0 >= 0 and 0 <= i1 <= 1023 and i0 < o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb102[i0, i1] -> Stmt_bb102[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023; Stmt_bb186[i0, i1] -> Stmt_bb186[o0, o1] : i0 >= 0 and 0 <= i1 <= 1023 and i0 < o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb186[i0, i1] -> Stmt_bb186[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb90[o0, o1] : i0 >= 0 and 0 <= i1 <= 1023 and i0 < o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb90[i0, i1] -> Stmt_bb90[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb66[o0, o1] : i0 >= 0 and 0 <= i1 <= 1023 and i0 < o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb66[i0, i1] -> Stmt_bb66[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb31[o0, o1] : i0 >= 0 and 0 <= i1 <= 1023 and i0 < o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb31[i0, i1] -> Stmt_bb31[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023; Stmt_bb138[i0, i1] -> Stmt_bb138[o0, o1] : i0 >= 0 and 0 <= i1 <= 1023 and i0 < o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb138[i0, i1] -> Stmt_bb138[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023; Stmt_bb126[i0, i1] -> Stmt_bb126[o0, o1] : i0 >= 0 and 0 <= i1 <= 1023 and i0 < o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb126[i0, i1] -> Stmt_bb126[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023; Stmt_bb150[i0, i1] -> Stmt_bb150[o0, o1] : i0 >= 0 and 0 <= i1 <= 1023 and i0 < o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb150[i0, i1] -> Stmt_bb150[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb42[o0, o1] : i0 >= 0 and 0 <= i1 <= 1023 and i0 < o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb42[i0, i1] -> Stmt_bb42[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb78[o0, o1] : i0 >= 0 and 0 <= i1 <= 1023 and i0 < o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb78[i0, i1] -> Stmt_bb78[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb114[o0, o1] : i0 >= 0 and 0 <= i1 <= 1023 and i0 < o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb114[i0, i1] -> Stmt_bb114[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023; Stmt_bb174[i0, i1] -> Stmt_bb174[o0, o1] : i0 >= 0 and 0 <= i1 <= 1023 and i0 < o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb174[i0, i1] -> Stmt_bb174[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023; Stmt_bb162[i0, i1] -> Stmt_bb162[o0, o1] : i0 >= 0 and 0 <= i1 <= 1023 and i0 < o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb162[i0, i1] -> Stmt_bb162[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb54[o0, o1] : i0 >= 0 and 0 <= i1 <= 1023 and i0 < o0 <= 1023 and 0 <= o1 <= 1023; Stmt_bb54[i0, i1] -> Stmt_bb54[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023 } +; CHECK-NEXT: Transitive closure of reduction dependences: +; CHECK-NEXT: { Stmt_bb102[i0, i1] -> Stmt_bb102[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 <= 1023 and 0 <= o0 < i0) or (i0 >= 0 and i0 < o0 <= 1023)); Stmt_bb102[i0, i1] -> Stmt_bb102[i0, o1] : 0 <= i0 <= 1023 and ((i1 <= 1023 and 0 <= o1 < i1) or (i1 >= 0 and i1 < o1 <= 1023)); Stmt_bb186[i0, i1] -> Stmt_bb186[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 <= 1023 and 0 <= o0 < i0) or (i0 >= 0 and i0 < o0 <= 1023)); Stmt_bb186[i0, i1] -> Stmt_bb186[i0, o1] : 0 <= i0 <= 1023 and ((i1 <= 1023 and 0 <= o1 < i1) or (i1 >= 0 and i1 < o1 <= 1023)); Stmt_bb90[i0, i1] -> Stmt_bb90[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 <= 1023 and 0 <= o0 < i0) or (i0 >= 0 and i0 < o0 <= 1023)); Stmt_bb90[i0, i1] -> Stmt_bb90[i0, o1] : 0 <= i0 <= 1023 and ((i1 <= 1023 and 0 <= o1 < i1) or (i1 >= 0 and i1 < o1 <= 1023)); Stmt_bb66[i0, i1] -> Stmt_bb66[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 <= 1023 and 0 <= o0 < i0) or (i0 >= 0 and i0 < o0 <= 1023)); Stmt_bb66[i0, i1] -> Stmt_bb66[i0, o1] : 0 <= i0 <= 1023 and ((i1 <= 1023 and 0 <= o1 < i1) or (i1 >= 0 and i1 < o1 <= 1023)); Stmt_bb31[i0, i1] -> Stmt_bb31[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 <= 1023 and 0 <= o0 < i0) or (i0 >= 0 and i0 < o0 <= 1023)); Stmt_bb31[i0, i1] -> Stmt_bb31[i0, o1] : 0 <= i0 <= 1023 and ((i1 <= 1023 and 0 <= o1 < i1) or (i1 >= 0 and i1 < o1 <= 1023)); Stmt_bb138[i0, i1] -> Stmt_bb138[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 <= 1023 and 0 <= o0 < i0) or (i0 >= 0 and i0 < o0 <= 1023)); Stmt_bb138[i0, i1] -> Stmt_bb138[i0, o1] : 0 <= i0 <= 1023 and ((i1 <= 1023 and 0 <= o1 < i1) or (i1 >= 0 and i1 < o1 <= 1023)); Stmt_bb126[i0, i1] -> Stmt_bb126[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 <= 1023 and 0 <= o0 < i0) or (i0 >= 0 and i0 < o0 <= 1023)); Stmt_bb126[i0, i1] -> Stmt_bb126[i0, o1] : 0 <= i0 <= 1023 and ((i1 <= 1023 and 0 <= o1 < i1) or (i1 >= 0 and i1 < o1 <= 1023)); Stmt_bb150[i0, i1] -> Stmt_bb150[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 <= 1023 and 0 <= o0 < i0) or (i0 >= 0 and i0 < o0 <= 1023)); Stmt_bb150[i0, i1] -> Stmt_bb150[i0, o1] : 0 <= i0 <= 1023 and ((i1 <= 1023 and 0 <= o1 < i1) or (i1 >= 0 and i1 < o1 <= 1023)); Stmt_bb42[i0, i1] -> Stmt_bb42[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 <= 1023 and 0 <= o0 < i0) or (i0 >= 0 and i0 < o0 <= 1023)); Stmt_bb42[i0, i1] -> Stmt_bb42[i0, o1] : 0 <= i0 <= 1023 and ((i1 <= 1023 and 0 <= o1 < i1) or (i1 >= 0 and i1 < o1 <= 1023)); Stmt_bb78[i0, i1] -> Stmt_bb78[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 <= 1023 and 0 <= o0 < i0) or (i0 >= 0 and i0 < o0 <= 1023)); Stmt_bb78[i0, i1] -> Stmt_bb78[i0, o1] : 0 <= i0 <= 1023 and ((i1 <= 1023 and 0 <= o1 < i1) or (i1 >= 0 and i1 < o1 <= 1023)); Stmt_bb114[i0, i1] -> Stmt_bb114[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 <= 1023 and 0 <= o0 < i0) or (i0 >= 0 and i0 < o0 <= 1023)); Stmt_bb114[i0, i1] -> Stmt_bb114[i0, o1] : 0 <= i0 <= 1023 and ((i1 <= 1023 and 0 <= o1 < i1) or (i1 >= 0 and i1 < o1 <= 1023)); Stmt_bb174[i0, i1] -> Stmt_bb174[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 <= 1023 and 0 <= o0 < i0) or (i0 >= 0 and i0 < o0 <= 1023)); Stmt_bb174[i0, i1] -> Stmt_bb174[i0, o1] : 0 <= i0 <= 1023 and ((i1 <= 1023 and 0 <= o1 < i1) or (i1 >= 0 and i1 < o1 <= 1023)); Stmt_bb162[i0, i1] -> Stmt_bb162[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 <= 1023 and 0 <= o0 < i0) or (i0 >= 0 and i0 < o0 <= 1023)); Stmt_bb162[i0, i1] -> Stmt_bb162[i0, o1] : 0 <= i0 <= 1023 and ((i1 <= 1023 and 0 <= o1 < i1) or (i1 >= 0 and i1 < o1 <= 1023)); Stmt_bb54[i0, i1] -> Stmt_bb54[o0, o1] : 0 <= i1 <= 1023 and 0 <= o1 <= 1023 and ((i0 <= 1023 and 0 <= o0 < i0) or (i0 >= 0 and i0 < o0 <= 1023)); Stmt_bb54[i0, i1] -> Stmt_bb54[i0, o1] : 0 <= i0 <= 1023 and ((i1 <= 1023 and 0 <= o1 < i1) or (i1 >= 0 and i1 < o1 <= 1023)) } ; target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" Index: test/DependenceInfo/reduction_simple_iv.ll =================================================================== --- test/DependenceInfo/reduction_simple_iv.ll +++ test/DependenceInfo/reduction_simple_iv.ll @@ -7,7 +7,7 @@ ; CHECK-NEXT: WAW dependences: ; CHECK-NEXT: { } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_for_cond[i0] -> Stmt_for_cond[1 + i0] : 0 <= i0 <= 99 } +; CHECK-NEXT: { Stmt_for_cond[i0] -> Stmt_for_cond[o0] : i0 >= 0 and i0 < o0 <= 100 } ; ; void f(int* sum) { ; for (int i = 0; i <= 100; i++) Index: test/DependenceInfo/reduction_simple_iv_debug_wrapped_dependences.ll =================================================================== --- test/DependenceInfo/reduction_simple_iv_debug_wrapped_dependences.ll +++ test/DependenceInfo/reduction_simple_iv_debug_wrapped_dependences.ll @@ -3,16 +3,16 @@ ; REQUIRES: asserts ; ; CHECK: Read: { [Stmt_for_cond[i0] -> MemRef_sum[0{{\]\]}} -> MemRef_sum[0] : 0 <= i0 <= 100 } -; CHECK-NEXT: Write: { [Stmt_for_cond[i0] -> MemRef_sum[0{{\]\]}} -> MemRef_sum[0] : 0 <= i0 <= 100 } -; CHECK-NEXT: MayWrite: { } +; CHECK-NEXT: MustWrite: { } +; CHECK-NEXT: MayWrite: { [Stmt_for_cond[i0] -> MemRef_sum[0{{\]\]}} -> MemRef_sum[0] : 0 <= i0 <= 100 } ; ; CHECK: Wrapped Dependences: ; CHECK-NEXT: RAW dependences: -; CHECK-NEXT: { [Stmt_for_cond[i0] -> MemRef_sum[0{{\]\]}} -> [Stmt_for_cond[1 + i0] -> MemRef_sum[0{{\]\]}} : 0 <= i0 <= 99 } +; CHECK-NEXT: { [Stmt_for_cond[i0] -> MemRef_sum[0{{\]\]}} -> [Stmt_for_cond[o0] -> MemRef_sum[0{{\]\]}} : i0 >= 0 and i0 < o0 <= 100 } ; CHECK-NEXT: WAR dependences: ; CHECK-NEXT: { [Stmt_for_cond[i0] -> MemRef_sum[0{{\]\]}} -> [Stmt_for_cond[1 + i0] -> MemRef_sum[0{{\]\]}} : 0 <= i0 <= 99 } ; CHECK-NEXT: WAW dependences: -; CHECK-NEXT: { [Stmt_for_cond[i0] -> MemRef_sum[0{{\]\]}} -> [Stmt_for_cond[1 + i0] -> MemRef_sum[0{{\]\]}} : 0 <= i0 <= 99 } +; CHECK-NEXT: { [Stmt_for_cond[i0] -> MemRef_sum[0{{\]\]}} -> [Stmt_for_cond[o0] -> MemRef_sum[0{{\]\]}} : i0 >= 0 and i0 < o0 <= 100 } ; CHECK-NEXT: Reduction dependences: ; CHECK-NEXT: n/a ; @@ -24,7 +24,7 @@ ; CHECK-NEXT: WAW dependences: ; CHECK-NEXT: { } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { [Stmt_for_cond[i0] -> MemRef_sum[0{{\]\]}} -> [Stmt_for_cond[1 + i0] -> MemRef_sum[0{{\]\]}} : 0 <= i0 <= 99 } +; CHECK-NEXT: { [Stmt_for_cond[i0] -> MemRef_sum[0{{\]\]}} -> [Stmt_for_cond[o0] -> MemRef_sum[0{{\]\]}} : i0 >= 0 and i0 < o0 <= 100 } ; ; CHECK: Zipped Dependences: ; CHECK-NEXT: RAW dependences: @@ -34,7 +34,7 @@ ; CHECK-NEXT: WAW dependences: ; CHECK-NEXT: { } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { [Stmt_for_cond[i0] -> Stmt_for_cond[1 + i0{{\]\]}} -> [MemRef_sum[0] -> MemRef_sum[0{{\]\]}} : 0 <= i0 <= 99 } +; CHECK-NEXT: { [Stmt_for_cond[i0] -> Stmt_for_cond[i1{{\]\]}} -> [MemRef_sum[0] -> MemRef_sum[0{{\]\]}} : i0 >= 0 and i0 < i1 <= 100 } ; ; CHECK: Unwrapped Dependences: ; CHECK-NEXT: RAW dependences: @@ -44,7 +44,7 @@ ; CHECK-NEXT: WAW dependences: ; CHECK-NEXT: { } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_for_cond[i0] -> Stmt_for_cond[1 + i0] : 0 <= i0 <= 99 } +; CHECK-NEXT: { Stmt_for_cond[i0] -> Stmt_for_cond[o0] : i0 >= 0 and i0 < o0 <= 100 } ; ; CHECK: RAW dependences: ; CHECK-NEXT: { } @@ -53,7 +53,7 @@ ; CHECK-NEXT: WAW dependences: ; CHECK-NEXT: { } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_for_cond[i0] -> Stmt_for_cond[1 + i0] : 0 <= i0 <= 99 } +; CHECK-NEXT: { Stmt_for_cond[i0] -> Stmt_for_cond[o0] : i0 >= 0 and i0 < o0 <= 100 } ; ; CHECK: RAW dependences: ; CHECK-NEXT: { } @@ -62,7 +62,7 @@ ; CHECK-NEXT: WAW dependences: ; CHECK-NEXT: { } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_for_cond[i0] -> Stmt_for_cond[1 + i0] : 0 <= i0 <= 99 } +; CHECK-NEXT: { Stmt_for_cond[i0] -> Stmt_for_cond[o0] : i0 >= 0 and i0 < o0 <= 100 } ; ; void f(int* sum) { ; for (int i = 0; i <= 100; i++) Index: test/DependenceInfo/reduction_simple_privatization_deps_2.ll =================================================================== --- test/DependenceInfo/reduction_simple_privatization_deps_2.ll +++ test/DependenceInfo/reduction_simple_privatization_deps_2.ll @@ -1,13 +1,14 @@ ; RUN: opt %loadPolly -polly-dependences -analyze < %s | FileCheck %s ; + ; CHECK: RAW dependences: -; CHECK-NEXT: { Stmt_S2[i0] -> Stmt_S0[1 + i0] : 0 <= i0 <= 98; Stmt_S0[i0] -> Stmt_S1[i0, o1] : 0 <= i0 <= 99 and 0 <= o1 <= 99; Stmt_S1[i0, i1] -> Stmt_S2[i0] : 0 <= i0 <= 99 and 0 <= i1 <= 99 } +; CHECK-NEXT: { Stmt_S2[i0] -> Stmt_S1[o0, o1] : i0 >= 0 and i0 < o0 <= 99 and 0 <= o1 <= 99; Stmt_S2[i0] -> Stmt_S0[o0] : i0 >= 0 and i0 < o0 <= 99; Stmt_S1[i0, i1] -> Stmt_S0[o0] : i0 >= 0 and 0 <= i1 <= 99 and i0 < o0 <= 99; Stmt_S0[i0] -> Stmt_S2[o0] : i0 >= 0 and i0 <= o0 <= 99; Stmt_S1[i0, i1] -> Stmt_S2[o0] : i0 >= 0 and 0 <= i1 <= 99 and i0 <= o0 <= 99; Stmt_S0[i0] -> Stmt_S1[o0, o1] : i0 >= 0 and i0 <= o0 <= 99 and 0 <= o1 <= 99 } ; CHECK-NEXT: WAR dependences: -; CHECK-NEXT: { Stmt_S2[i0] -> Stmt_S0[1 + i0] : 0 <= i0 <= 98; Stmt_S0[i0] -> Stmt_S1[i0, o1] : 0 <= i0 <= 99 and 0 <= o1 <= 99; Stmt_S1[i0, i1] -> Stmt_S2[i0] : 0 <= i0 <= 99 and 0 <= i1 <= 99 } +; CHECK-NEXT: { Stmt_S2[i0] -> Stmt_S0[1 + i0] : 0 <= i0 <= 98; Stmt_S0[i0] -> Stmt_S1[i0, 0] : 0 <= i0 <= 99; Stmt_S1[i0, 99] -> Stmt_S2[i0] : 0 <= i0 <= 99 } ; CHECK-NEXT: WAW dependences: -; CHECK-NEXT: { Stmt_S2[i0] -> Stmt_S0[1 + i0] : 0 <= i0 <= 98; Stmt_S0[i0] -> Stmt_S1[i0, o1] : 0 <= i0 <= 99 and 0 <= o1 <= 99; Stmt_S1[i0, i1] -> Stmt_S2[i0] : 0 <= i0 <= 99 and 0 <= i1 <= 99 } +; CHECK-NEXT: { Stmt_S2[i0] -> Stmt_S1[o0, o1] : i0 >= 0 and i0 < o0 <= 99 and 0 <= o1 <= 99; Stmt_S2[i0] -> Stmt_S0[o0] : i0 >= 0 and i0 < o0 <= 99; Stmt_S1[i0, i1] -> Stmt_S0[o0] : i0 >= 0 and 0 <= i1 <= 99 and i0 < o0 <= 99; Stmt_S0[i0] -> Stmt_S2[o0] : i0 >= 0 and i0 <= o0 <= 99; Stmt_S1[i0, i1] -> Stmt_S2[o0] : i0 >= 0 and 0 <= i1 <= 99 and i0 <= o0 <= 99; Stmt_S0[i0] -> Stmt_S1[o0, o1] : i0 >= 0 and i0 <= o0 <= 99 and 0 <= o1 <= 99 } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_S1[i0, i1] -> Stmt_S1[i0, 1 + i1] : 0 <= i0 <= 99 and 0 <= i1 <= 98 } +; CHECK-NEXT: { Stmt_S0[i0] -> Stmt_S0[o0] : i0 >= 0 and i0 < o0 <= 99; Stmt_S2[i0] -> Stmt_S2[o0] : i0 >= 0 and i0 < o0 <= 99; Stmt_S1[i0, i1] -> Stmt_S1[o0, o1] : i0 >= 0 and 0 <= i1 <= 99 and i0 < o0 <= 99 and 0 <= o1 <= 99; Stmt_S1[i0, i1] -> Stmt_S1[i0, o1] : 0 <= i0 <= 99 and i1 >= 0 and i1 < o1 <= 99 } ; ; void f(int *sum) { ; for (int i = 0; i < 100; i++) { Index: test/DependenceInfo/reduction_simple_privatization_deps_w_parameter.ll =================================================================== --- test/DependenceInfo/reduction_simple_privatization_deps_w_parameter.ll +++ test/DependenceInfo/reduction_simple_privatization_deps_w_parameter.ll @@ -1,13 +1,13 @@ ; RUN: opt %loadPolly -polly-dependences -analyze < %s | FileCheck %s ; ; CHECK: RAW dependences: -; CHECK-NEXT: [N] -> { Stmt_S0[] -> Stmt_S1[o0] : N >= 11 and 0 <= o0 <= 1023; Stmt_S1[i0] -> Stmt_S2[] : N >= 11 and 0 <= i0 <= 1023 } +; CHECK-NEXT: [N] -> { Stmt_S0[] -> Stmt_S1[o0] : N >= 11 and 0 <= o0 <= 1023; Stmt_S0[] -> Stmt_S2[] : N >= 11; Stmt_S1[i0] -> Stmt_S2[] : N >= 11 and 0 <= i0 <= 1023 } ; CHECK-NEXT: WAR dependences: -; CHECK-NEXT: [N] -> { Stmt_S1[i0] -> Stmt_S2[] : N >= 11 and 0 <= i0 <= 1023 } +; CHECK-NEXT: [N] -> { Stmt_S1[1023] -> Stmt_S2[] : N >= 11 } ; CHECK-NEXT: WAW dependences: -; CHECK-NEXT: [N] -> { Stmt_S0[] -> Stmt_S1[o0] : N >= 11 and 0 <= o0 <= 1023; Stmt_S1[i0] -> Stmt_S2[] : N >= 11 and 0 <= i0 <= 1023 } +; CHECK-NEXT: [N] -> { Stmt_S0[] -> Stmt_S1[o0] : N >= 11 and 0 <= o0 <= 1023; Stmt_S0[] -> Stmt_S2[] : N >= 11; Stmt_S1[i0] -> Stmt_S2[] : N >= 11 and 0 <= i0 <= 1023 } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: [N] -> { Stmt_S1[i0] -> Stmt_S1[1 + i0] : N >= 11 and 0 <= i0 <= 1022 } +; CHECK-NEXT: [N] -> { Stmt_S1[i0] -> Stmt_S1[o0] : N >= 11 and i0 >= 0 and i0 < o0 <= 1023 } ; ; void f(int *sum, int N) { ; if (N >= 10) { Index: test/DependenceInfo/reduction_two_reductions_different_rloops.ll =================================================================== --- test/DependenceInfo/reduction_two_reductions_different_rloops.ll +++ test/DependenceInfo/reduction_two_reductions_different_rloops.ll @@ -7,7 +7,7 @@ ; CHECK-NEXT: WAW dependences: ; CHECK-NEXT: { } ; CHECK-NEXT: Reduction dependences: -; CHECK-NEXT: { Stmt_for_body3[i0, i1] -> Stmt_for_body3[o0, 1 + i0 + i1 - o0] : i0 >= 0 and i1 >= 0 and o0 >= -1022 + i0 + i1 and i0 <= o0 <= 1023 and o0 <= 1 + i0 } +; CHECK-NEXT: { Stmt_for_body3[i0, i1] -> Stmt_for_body3[i0, o1] : 0 <= i0 <= 1023 and i1 >= 0 and i1 < o1 <= 1023; Stmt_for_body3[i0, i1] -> Stmt_for_body3[o0, i1] : i0 >= 0 and 0 <= i1 <= 1023 and i0 < o0 <= 1023 } ; ; void f(int *restrict A, int *restrict B, int *restrict Values) { ; for (int i = 0; i < 1024; i++) { Index: test/ScheduleOptimizer/pattern-matching-based-opts_9.ll =================================================================== --- test/ScheduleOptimizer/pattern-matching-based-opts_9.ll +++ test/ScheduleOptimizer/pattern-matching-based-opts_9.ll @@ -313,9 +313,10 @@ ; DEPENDENCES-NEXT: WAW dependences: ; DEPENDENCES-NEXT: { } ; DEPENDENCES-NEXT: Reduction dependences: -; DEPENDENCES-NEXT: { Stmt_for_body6[i0, i1, i2] -> Stmt_for_body6[i0, i1, 1 + i2] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and 0 <= i2 <= 1022 } +; DEPENDENCES-NEXT: { Stmt_for_body6[i0, i1, i2] -> Stmt_for_body6[i0, i1, o2] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and i2 >= 0 and i2 < o2 <= 1023 } ; DEPENDENCES-NEXT: Transitive closure of reduction dependences: -; DEPENDENCES-NEXT: { Stmt_for_body6[i0, i1, i2] -> Stmt_for_body6[i0, i1, o2] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and ((i2 >= 0 and i2 < o2 <= 1023) or (i2 <= 1023 and 0 <= o2 < i2)) } +; DEPENDENCES0NEXT: { Stmt_for_body6[i0, i1, i2] -> Stmt_for_body6[i0, i1, o2] : 0 <= i0 <= 1023 and 0 <= i1 <= 1023 and ((i2 <= 1023 and 0 <= o2 < i2) or (i2 >= 0 and i2 < o2 <= 1023)) } + ; target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-unknown"