2017-02-19 00:38:58 +08:00
|
|
|
; RUN: opt %loadPolly -polly-dependences -analyze < %s | FileCheck %s
|
|
|
|
|
|
|
|
; void manyreductions(long *A) {
|
|
|
|
; for (long i = 0; i < 1024; i++)
|
|
|
|
; for (long j = 0; j < 1024; j++)
|
|
|
|
; *A += 42;
|
|
|
|
;
|
|
|
|
; for (long i = 0; i < 1024; i++)
|
|
|
|
; for (long j = 0; j < 1024; j++)
|
|
|
|
; *A += 42;
|
|
|
|
;
|
|
|
|
; for (long i = 0; i < 1024; i++)
|
|
|
|
; for (long j = 0; j < 1024; j++)
|
|
|
|
; *A += 42;
|
|
|
|
;
|
|
|
|
; for (long i = 0; i < 1024; i++)
|
|
|
|
; for (long j = 0; j < 1024; j++)
|
|
|
|
; *A += 42;
|
|
|
|
;
|
|
|
|
; for (long i = 0; i < 1024; i++)
|
|
|
|
; for (long j = 0; j < 1024; j++)
|
|
|
|
; *A += 42;
|
|
|
|
;
|
|
|
|
; for (long i = 0; i < 1024; i++)
|
|
|
|
; for (long j = 0; j < 1024; j++)
|
|
|
|
; *A += 42;
|
|
|
|
;
|
|
|
|
; for (long i = 0; i < 1024; i++)
|
|
|
|
; for (long j = 0; j < 1024; j++)
|
|
|
|
; *A += 42;
|
|
|
|
;
|
|
|
|
; for (long i = 0; i < 1024; i++)
|
|
|
|
; for (long j = 0; j < 1024; j++)
|
|
|
|
; *A += 42;
|
|
|
|
;
|
|
|
|
; for (long i = 0; i < 1024; i++)
|
|
|
|
; for (long j = 0; j < 1024; j++)
|
|
|
|
; *A += 42;
|
|
|
|
;
|
|
|
|
; for (long i = 0; i < 1024; i++)
|
|
|
|
; for (long j = 0; j < 1024; j++)
|
|
|
|
; *A += 42;
|
|
|
|
;
|
|
|
|
; for (long i = 0; i < 1024; i++)
|
|
|
|
; for (long j = 0; j < 1024; j++)
|
|
|
|
; *A += 42;
|
|
|
|
;
|
|
|
|
; for (long i = 0; i < 1024; i++)
|
|
|
|
; for (long j = 0; j < 1024; j++)
|
|
|
|
; *A += 42;
|
|
|
|
;
|
|
|
|
; for (long i = 0; i < 1024; i++)
|
|
|
|
; for (long j = 0; j < 1024; j++)
|
|
|
|
; *A += 42;
|
|
|
|
;
|
|
|
|
; for (long i = 0; i < 1024; i++)
|
|
|
|
; for (long j = 0; j < 1024; j++)
|
|
|
|
; *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:
|
[Polly] [DependenceInfo] change WAR, WAW generation to correct semantics
= Change of WAR, WAW generation: =
- `buildFlow(Sink, MustSource, MaySource, Sink)` treates any flow of the form
`sink <- may source <- must source` as a *may* dependence.
- we used to call:
```lang=cpp, name=old-flow-call.cpp
Flow = buildFlow(MustWrite, MustWrite, Read, Schedule);
WAW = isl_union_flow_get_must_dependence(Flow);
WAR = isl_union_flow_get_may_dependence(Flow);
```
- This caused some WAW dependences to be treated as WAR dependences.
- Incorrect semantics.
- Now, we call WAR and WAW correctly.
== Correct WAW: ==
```lang=cpp, name=new-waw-call.cpp
Flow = buildFlow(Write, MustWrite, MayWrite, Schedule);
WAW = isl_union_flow_get_may_dependence(Flow);
isl_union_flow_free(Flow);
```
== Correct WAR: ==
```lang=cpp, name=new-war-call.cpp
Flow = buildFlow(Write, Read, MustaWrite, Schedule);
WAR = isl_union_flow_get_must_dependence(Flow);
isl_union_flow_free(Flow);
```
- We want the "shortest" WAR possible (exact dependences).
- We mark all the *must-writes* as may-source, reads as must-souce.
- Then, we ask for *must* dependence.
- This removes all the reads that flow through a *must-write*
before reaching a sink.
- Note that we only block ealier writes with *must-writes*. This is
intuitively correct, as we do not want may-writes to block
must-writes.
- Leaves us with direct (R -> W).
- This affects reduction generation since RED is built using WAW and WAR.
= New StrictWAW for Reductions: =
- We used to call:
```lang=cpp,name=old-waw-war-call.cpp
Flow = buildFlow(MustWrite, MustWrite, Read, Schedule);
WAW = isl_union_flow_get_must_dependence(Flow);
WAR = isl_union_flow_get_may_dependence(Flow);
```
- This *is* the right model of WAW we need for reductions, just not in general.
- Reductions need to track only *strict* WAW, without any interfering reductions.
= Explanation: Why the new WAR dependences in tests are correct: =
- We no longer set WAR = WAR - WAW
- Hence, we will have WAR dependences that were originally removed.
- These may look incorrect, but in fact make sense.
== Code: ==
```lang=llvm, name=new-war-dependence.ll
; void manyreductions(long *A) {
; for (long i = 0; i < 1024; i++)
; for (long j = 0; j < 1024; j++)
; S0: *A += 42;
;
; for (long i = 0; i < 1024; i++)
; for (long j = 0; j < 1024; j++)
; S1: *A += 42;
;
```
=== WAR dependence: ===
{ S0[1023, 1023] -> S1[0, 0] }
- Between `S0[1023, 1023]` and `S1[0, 0]`, we will have the dependences:
```lang=cpp, name=dependence-incorrect, counterexample
S0[1023, 1023]:
*-- tmp = *A (load0)--*
WAR 2 add = tmp + 42 |
*-> *A = add (store0) |
WAR 1
S1[0, 0]: |
tmp = *A (load1) |
add = tmp + 42 |
A = add (store1)<-*
```
- One may assume that WAR2 *hides* WAR1 (since store0 happens before
store1). However, within a statement, Polly has no idea about the
ordering of loads and stores.
- Hence, according to Polly, the code may have looked like this:
```lang=cpp, name=dependence-correct
S0[1023, 1023]:
A = add (store0)
tmp = A (load0) ---*
add = A + 42 |
WAR 1
S1[0, 0]: |
tmp = A (load1) |
add = A + 42 |
A = add (store1) <-*
```
- So, Polly generates (correct) WAR dependences. It does not make sense
to remove these dependences, since they are correct with respect to
Polly's model.
Reviewers: grosser, Meinersbur
tags: #polly
Differential revision: https://reviews.llvm.org/D31386
llvm-svn: 299429
2017-04-04 21:08:23 +08:00
|
|
|
; 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] }
|
2017-02-19 00:38:58 +08:00
|
|
|
; 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)) }
|
|
|
|
;
|
|
|
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
|
|
|
|
|
|
|
define void @manyreductions(i64* %A) {
|
|
|
|
bb:
|
|
|
|
br label %bb28
|
|
|
|
|
|
|
|
bb28: ; preds = %bb36, %bb
|
|
|
|
%i.0 = phi i64 [ 0, %bb ], [ %tmp37, %bb36 ]
|
|
|
|
%exitcond27 = icmp ne i64 %i.0, 1024
|
|
|
|
br i1 %exitcond27, label %bb29, label %bb38
|
|
|
|
|
|
|
|
bb29: ; preds = %bb28
|
|
|
|
br label %bb30
|
|
|
|
|
|
|
|
bb30: ; preds = %bb33, %bb29
|
|
|
|
%j.0 = phi i64 [ 0, %bb29 ], [ %tmp34, %bb33 ]
|
|
|
|
%exitcond26 = icmp ne i64 %j.0, 1024
|
|
|
|
br i1 %exitcond26, label %bb31, label %bb35
|
|
|
|
|
|
|
|
bb31: ; preds = %bb30
|
|
|
|
%tmp = load i64, i64* %A, align 8
|
|
|
|
%tmp32 = add nsw i64 %tmp, 42
|
|
|
|
store i64 %tmp32, i64* %A, align 8
|
|
|
|
br label %bb33
|
|
|
|
|
|
|
|
bb33: ; preds = %bb31
|
|
|
|
%tmp34 = add nuw nsw i64 %j.0, 1
|
|
|
|
br label %bb30
|
|
|
|
|
|
|
|
bb35: ; preds = %bb30
|
|
|
|
br label %bb36
|
|
|
|
|
|
|
|
bb36: ; preds = %bb35
|
|
|
|
%tmp37 = add nuw nsw i64 %i.0, 1
|
|
|
|
br label %bb28
|
|
|
|
|
|
|
|
bb38: ; preds = %bb28
|
|
|
|
br label %bb39
|
|
|
|
|
|
|
|
bb39: ; preds = %bb48, %bb38
|
|
|
|
%i1.0 = phi i64 [ 0, %bb38 ], [ %tmp49, %bb48 ]
|
|
|
|
%exitcond25 = icmp ne i64 %i1.0, 1024
|
|
|
|
br i1 %exitcond25, label %bb40, label %bb50
|
|
|
|
|
|
|
|
bb40: ; preds = %bb39
|
|
|
|
br label %bb41
|
|
|
|
|
|
|
|
bb41: ; preds = %bb45, %bb40
|
|
|
|
%j2.0 = phi i64 [ 0, %bb40 ], [ %tmp46, %bb45 ]
|
|
|
|
%exitcond24 = icmp ne i64 %j2.0, 1024
|
|
|
|
br i1 %exitcond24, label %bb42, label %bb47
|
|
|
|
|
|
|
|
bb42: ; preds = %bb41
|
|
|
|
%tmp43 = load i64, i64* %A, align 8
|
|
|
|
%tmp44 = add nsw i64 %tmp43, 42
|
|
|
|
store i64 %tmp44, i64* %A, align 8
|
|
|
|
br label %bb45
|
|
|
|
|
|
|
|
bb45: ; preds = %bb42
|
|
|
|
%tmp46 = add nuw nsw i64 %j2.0, 1
|
|
|
|
br label %bb41
|
|
|
|
|
|
|
|
bb47: ; preds = %bb41
|
|
|
|
br label %bb48
|
|
|
|
|
|
|
|
bb48: ; preds = %bb47
|
|
|
|
%tmp49 = add nuw nsw i64 %i1.0, 1
|
|
|
|
br label %bb39
|
|
|
|
|
|
|
|
bb50: ; preds = %bb39
|
|
|
|
br label %bb51
|
|
|
|
|
|
|
|
bb51: ; preds = %bb60, %bb50
|
|
|
|
%i3.0 = phi i64 [ 0, %bb50 ], [ %tmp61, %bb60 ]
|
|
|
|
%exitcond23 = icmp ne i64 %i3.0, 1024
|
|
|
|
br i1 %exitcond23, label %bb52, label %bb62
|
|
|
|
|
|
|
|
bb52: ; preds = %bb51
|
|
|
|
br label %bb53
|
|
|
|
|
|
|
|
bb53: ; preds = %bb57, %bb52
|
|
|
|
%j4.0 = phi i64 [ 0, %bb52 ], [ %tmp58, %bb57 ]
|
|
|
|
%exitcond22 = icmp ne i64 %j4.0, 1024
|
|
|
|
br i1 %exitcond22, label %bb54, label %bb59
|
|
|
|
|
|
|
|
bb54: ; preds = %bb53
|
|
|
|
%tmp55 = load i64, i64* %A, align 8
|
|
|
|
%tmp56 = add nsw i64 %tmp55, 42
|
|
|
|
store i64 %tmp56, i64* %A, align 8
|
|
|
|
br label %bb57
|
|
|
|
|
|
|
|
bb57: ; preds = %bb54
|
|
|
|
%tmp58 = add nuw nsw i64 %j4.0, 1
|
|
|
|
br label %bb53
|
|
|
|
|
|
|
|
bb59: ; preds = %bb53
|
|
|
|
br label %bb60
|
|
|
|
|
|
|
|
bb60: ; preds = %bb59
|
|
|
|
%tmp61 = add nuw nsw i64 %i3.0, 1
|
|
|
|
br label %bb51
|
|
|
|
|
|
|
|
bb62: ; preds = %bb51
|
|
|
|
br label %bb63
|
|
|
|
|
|
|
|
bb63: ; preds = %bb72, %bb62
|
|
|
|
%i5.0 = phi i64 [ 0, %bb62 ], [ %tmp73, %bb72 ]
|
|
|
|
%exitcond21 = icmp ne i64 %i5.0, 1024
|
|
|
|
br i1 %exitcond21, label %bb64, label %bb74
|
|
|
|
|
|
|
|
bb64: ; preds = %bb63
|
|
|
|
br label %bb65
|
|
|
|
|
|
|
|
bb65: ; preds = %bb69, %bb64
|
|
|
|
%j6.0 = phi i64 [ 0, %bb64 ], [ %tmp70, %bb69 ]
|
|
|
|
%exitcond20 = icmp ne i64 %j6.0, 1024
|
|
|
|
br i1 %exitcond20, label %bb66, label %bb71
|
|
|
|
|
|
|
|
bb66: ; preds = %bb65
|
|
|
|
%tmp67 = load i64, i64* %A, align 8
|
|
|
|
%tmp68 = add nsw i64 %tmp67, 42
|
|
|
|
store i64 %tmp68, i64* %A, align 8
|
|
|
|
br label %bb69
|
|
|
|
|
|
|
|
bb69: ; preds = %bb66
|
|
|
|
%tmp70 = add nuw nsw i64 %j6.0, 1
|
|
|
|
br label %bb65
|
|
|
|
|
|
|
|
bb71: ; preds = %bb65
|
|
|
|
br label %bb72
|
|
|
|
|
|
|
|
bb72: ; preds = %bb71
|
|
|
|
%tmp73 = add nuw nsw i64 %i5.0, 1
|
|
|
|
br label %bb63
|
|
|
|
|
|
|
|
bb74: ; preds = %bb63
|
|
|
|
br label %bb75
|
|
|
|
|
|
|
|
bb75: ; preds = %bb84, %bb74
|
|
|
|
%i7.0 = phi i64 [ 0, %bb74 ], [ %tmp85, %bb84 ]
|
|
|
|
%exitcond19 = icmp ne i64 %i7.0, 1024
|
|
|
|
br i1 %exitcond19, label %bb76, label %bb86
|
|
|
|
|
|
|
|
bb76: ; preds = %bb75
|
|
|
|
br label %bb77
|
|
|
|
|
|
|
|
bb77: ; preds = %bb81, %bb76
|
|
|
|
%j8.0 = phi i64 [ 0, %bb76 ], [ %tmp82, %bb81 ]
|
|
|
|
%exitcond18 = icmp ne i64 %j8.0, 1024
|
|
|
|
br i1 %exitcond18, label %bb78, label %bb83
|
|
|
|
|
|
|
|
bb78: ; preds = %bb77
|
|
|
|
%tmp79 = load i64, i64* %A, align 8
|
|
|
|
%tmp80 = add nsw i64 %tmp79, 42
|
|
|
|
store i64 %tmp80, i64* %A, align 8
|
|
|
|
br label %bb81
|
|
|
|
|
|
|
|
bb81: ; preds = %bb78
|
|
|
|
%tmp82 = add nuw nsw i64 %j8.0, 1
|
|
|
|
br label %bb77
|
|
|
|
|
|
|
|
bb83: ; preds = %bb77
|
|
|
|
br label %bb84
|
|
|
|
|
|
|
|
bb84: ; preds = %bb83
|
|
|
|
%tmp85 = add nuw nsw i64 %i7.0, 1
|
|
|
|
br label %bb75
|
|
|
|
|
|
|
|
bb86: ; preds = %bb75
|
|
|
|
br label %bb87
|
|
|
|
|
|
|
|
bb87: ; preds = %bb96, %bb86
|
|
|
|
%i9.0 = phi i64 [ 0, %bb86 ], [ %tmp97, %bb96 ]
|
|
|
|
%exitcond17 = icmp ne i64 %i9.0, 1024
|
|
|
|
br i1 %exitcond17, label %bb88, label %bb98
|
|
|
|
|
|
|
|
bb88: ; preds = %bb87
|
|
|
|
br label %bb89
|
|
|
|
|
|
|
|
bb89: ; preds = %bb93, %bb88
|
|
|
|
%j10.0 = phi i64 [ 0, %bb88 ], [ %tmp94, %bb93 ]
|
|
|
|
%exitcond16 = icmp ne i64 %j10.0, 1024
|
|
|
|
br i1 %exitcond16, label %bb90, label %bb95
|
|
|
|
|
|
|
|
bb90: ; preds = %bb89
|
|
|
|
%tmp91 = load i64, i64* %A, align 8
|
|
|
|
%tmp92 = add nsw i64 %tmp91, 42
|
|
|
|
store i64 %tmp92, i64* %A, align 8
|
|
|
|
br label %bb93
|
|
|
|
|
|
|
|
bb93: ; preds = %bb90
|
|
|
|
%tmp94 = add nuw nsw i64 %j10.0, 1
|
|
|
|
br label %bb89
|
|
|
|
|
|
|
|
bb95: ; preds = %bb89
|
|
|
|
br label %bb96
|
|
|
|
|
|
|
|
bb96: ; preds = %bb95
|
|
|
|
%tmp97 = add nuw nsw i64 %i9.0, 1
|
|
|
|
br label %bb87
|
|
|
|
|
|
|
|
bb98: ; preds = %bb87
|
|
|
|
br label %bb99
|
|
|
|
|
|
|
|
bb99: ; preds = %bb108, %bb98
|
|
|
|
%i11.0 = phi i64 [ 0, %bb98 ], [ %tmp109, %bb108 ]
|
|
|
|
%exitcond15 = icmp ne i64 %i11.0, 1024
|
|
|
|
br i1 %exitcond15, label %bb100, label %bb110
|
|
|
|
|
|
|
|
bb100: ; preds = %bb99
|
|
|
|
br label %bb101
|
|
|
|
|
|
|
|
bb101: ; preds = %bb105, %bb100
|
|
|
|
%j12.0 = phi i64 [ 0, %bb100 ], [ %tmp106, %bb105 ]
|
|
|
|
%exitcond14 = icmp ne i64 %j12.0, 1024
|
|
|
|
br i1 %exitcond14, label %bb102, label %bb107
|
|
|
|
|
|
|
|
bb102: ; preds = %bb101
|
|
|
|
%tmp103 = load i64, i64* %A, align 8
|
|
|
|
%tmp104 = add nsw i64 %tmp103, 42
|
|
|
|
store i64 %tmp104, i64* %A, align 8
|
|
|
|
br label %bb105
|
|
|
|
|
|
|
|
bb105: ; preds = %bb102
|
|
|
|
%tmp106 = add nuw nsw i64 %j12.0, 1
|
|
|
|
br label %bb101
|
|
|
|
|
|
|
|
bb107: ; preds = %bb101
|
|
|
|
br label %bb108
|
|
|
|
|
|
|
|
bb108: ; preds = %bb107
|
|
|
|
%tmp109 = add nuw nsw i64 %i11.0, 1
|
|
|
|
br label %bb99
|
|
|
|
|
|
|
|
bb110: ; preds = %bb99
|
|
|
|
br label %bb111
|
|
|
|
|
|
|
|
bb111: ; preds = %bb120, %bb110
|
|
|
|
%i13.0 = phi i64 [ 0, %bb110 ], [ %tmp121, %bb120 ]
|
|
|
|
%exitcond13 = icmp ne i64 %i13.0, 1024
|
|
|
|
br i1 %exitcond13, label %bb112, label %bb122
|
|
|
|
|
|
|
|
bb112: ; preds = %bb111
|
|
|
|
br label %bb113
|
|
|
|
|
|
|
|
bb113: ; preds = %bb117, %bb112
|
|
|
|
%j14.0 = phi i64 [ 0, %bb112 ], [ %tmp118, %bb117 ]
|
|
|
|
%exitcond12 = icmp ne i64 %j14.0, 1024
|
|
|
|
br i1 %exitcond12, label %bb114, label %bb119
|
|
|
|
|
|
|
|
bb114: ; preds = %bb113
|
|
|
|
%tmp115 = load i64, i64* %A, align 8
|
|
|
|
%tmp116 = add nsw i64 %tmp115, 42
|
|
|
|
store i64 %tmp116, i64* %A, align 8
|
|
|
|
br label %bb117
|
|
|
|
|
|
|
|
bb117: ; preds = %bb114
|
|
|
|
%tmp118 = add nuw nsw i64 %j14.0, 1
|
|
|
|
br label %bb113
|
|
|
|
|
|
|
|
bb119: ; preds = %bb113
|
|
|
|
br label %bb120
|
|
|
|
|
|
|
|
bb120: ; preds = %bb119
|
|
|
|
%tmp121 = add nuw nsw i64 %i13.0, 1
|
|
|
|
br label %bb111
|
|
|
|
|
|
|
|
bb122: ; preds = %bb111
|
|
|
|
br label %bb123
|
|
|
|
|
|
|
|
bb123: ; preds = %bb132, %bb122
|
|
|
|
%i15.0 = phi i64 [ 0, %bb122 ], [ %tmp133, %bb132 ]
|
|
|
|
%exitcond11 = icmp ne i64 %i15.0, 1024
|
|
|
|
br i1 %exitcond11, label %bb124, label %bb134
|
|
|
|
|
|
|
|
bb124: ; preds = %bb123
|
|
|
|
br label %bb125
|
|
|
|
|
|
|
|
bb125: ; preds = %bb129, %bb124
|
|
|
|
%j16.0 = phi i64 [ 0, %bb124 ], [ %tmp130, %bb129 ]
|
|
|
|
%exitcond10 = icmp ne i64 %j16.0, 1024
|
|
|
|
br i1 %exitcond10, label %bb126, label %bb131
|
|
|
|
|
|
|
|
bb126: ; preds = %bb125
|
|
|
|
%tmp127 = load i64, i64* %A, align 8
|
|
|
|
%tmp128 = add nsw i64 %tmp127, 42
|
|
|
|
store i64 %tmp128, i64* %A, align 8
|
|
|
|
br label %bb129
|
|
|
|
|
|
|
|
bb129: ; preds = %bb126
|
|
|
|
%tmp130 = add nuw nsw i64 %j16.0, 1
|
|
|
|
br label %bb125
|
|
|
|
|
|
|
|
bb131: ; preds = %bb125
|
|
|
|
br label %bb132
|
|
|
|
|
|
|
|
bb132: ; preds = %bb131
|
|
|
|
%tmp133 = add nuw nsw i64 %i15.0, 1
|
|
|
|
br label %bb123
|
|
|
|
|
|
|
|
bb134: ; preds = %bb123
|
|
|
|
br label %bb135
|
|
|
|
|
|
|
|
bb135: ; preds = %bb144, %bb134
|
|
|
|
%i17.0 = phi i64 [ 0, %bb134 ], [ %tmp145, %bb144 ]
|
|
|
|
%exitcond9 = icmp ne i64 %i17.0, 1024
|
|
|
|
br i1 %exitcond9, label %bb136, label %bb146
|
|
|
|
|
|
|
|
bb136: ; preds = %bb135
|
|
|
|
br label %bb137
|
|
|
|
|
|
|
|
bb137: ; preds = %bb141, %bb136
|
|
|
|
%j18.0 = phi i64 [ 0, %bb136 ], [ %tmp142, %bb141 ]
|
|
|
|
%exitcond8 = icmp ne i64 %j18.0, 1024
|
|
|
|
br i1 %exitcond8, label %bb138, label %bb143
|
|
|
|
|
|
|
|
bb138: ; preds = %bb137
|
|
|
|
%tmp139 = load i64, i64* %A, align 8
|
|
|
|
%tmp140 = add nsw i64 %tmp139, 42
|
|
|
|
store i64 %tmp140, i64* %A, align 8
|
|
|
|
br label %bb141
|
|
|
|
|
|
|
|
bb141: ; preds = %bb138
|
|
|
|
%tmp142 = add nuw nsw i64 %j18.0, 1
|
|
|
|
br label %bb137
|
|
|
|
|
|
|
|
bb143: ; preds = %bb137
|
|
|
|
br label %bb144
|
|
|
|
|
|
|
|
bb144: ; preds = %bb143
|
|
|
|
%tmp145 = add nuw nsw i64 %i17.0, 1
|
|
|
|
br label %bb135
|
|
|
|
|
|
|
|
bb146: ; preds = %bb135
|
|
|
|
br label %bb147
|
|
|
|
|
|
|
|
bb147: ; preds = %bb156, %bb146
|
|
|
|
%i19.0 = phi i64 [ 0, %bb146 ], [ %tmp157, %bb156 ]
|
|
|
|
%exitcond7 = icmp ne i64 %i19.0, 1024
|
|
|
|
br i1 %exitcond7, label %bb148, label %bb158
|
|
|
|
|
|
|
|
bb148: ; preds = %bb147
|
|
|
|
br label %bb149
|
|
|
|
|
|
|
|
bb149: ; preds = %bb153, %bb148
|
|
|
|
%j20.0 = phi i64 [ 0, %bb148 ], [ %tmp154, %bb153 ]
|
|
|
|
%exitcond6 = icmp ne i64 %j20.0, 1024
|
|
|
|
br i1 %exitcond6, label %bb150, label %bb155
|
|
|
|
|
|
|
|
bb150: ; preds = %bb149
|
|
|
|
%tmp151 = load i64, i64* %A, align 8
|
|
|
|
%tmp152 = add nsw i64 %tmp151, 42
|
|
|
|
store i64 %tmp152, i64* %A, align 8
|
|
|
|
br label %bb153
|
|
|
|
|
|
|
|
bb153: ; preds = %bb150
|
|
|
|
%tmp154 = add nuw nsw i64 %j20.0, 1
|
|
|
|
br label %bb149
|
|
|
|
|
|
|
|
bb155: ; preds = %bb149
|
|
|
|
br label %bb156
|
|
|
|
|
|
|
|
bb156: ; preds = %bb155
|
|
|
|
%tmp157 = add nuw nsw i64 %i19.0, 1
|
|
|
|
br label %bb147
|
|
|
|
|
|
|
|
bb158: ; preds = %bb147
|
|
|
|
br label %bb159
|
|
|
|
|
|
|
|
bb159: ; preds = %bb168, %bb158
|
|
|
|
%i21.0 = phi i64 [ 0, %bb158 ], [ %tmp169, %bb168 ]
|
|
|
|
%exitcond5 = icmp ne i64 %i21.0, 1024
|
|
|
|
br i1 %exitcond5, label %bb160, label %bb170
|
|
|
|
|
|
|
|
bb160: ; preds = %bb159
|
|
|
|
br label %bb161
|
|
|
|
|
|
|
|
bb161: ; preds = %bb165, %bb160
|
|
|
|
%j22.0 = phi i64 [ 0, %bb160 ], [ %tmp166, %bb165 ]
|
|
|
|
%exitcond4 = icmp ne i64 %j22.0, 1024
|
|
|
|
br i1 %exitcond4, label %bb162, label %bb167
|
|
|
|
|
|
|
|
bb162: ; preds = %bb161
|
|
|
|
%tmp163 = load i64, i64* %A, align 8
|
|
|
|
%tmp164 = add nsw i64 %tmp163, 42
|
|
|
|
store i64 %tmp164, i64* %A, align 8
|
|
|
|
br label %bb165
|
|
|
|
|
|
|
|
bb165: ; preds = %bb162
|
|
|
|
%tmp166 = add nuw nsw i64 %j22.0, 1
|
|
|
|
br label %bb161
|
|
|
|
|
|
|
|
bb167: ; preds = %bb161
|
|
|
|
br label %bb168
|
|
|
|
|
|
|
|
bb168: ; preds = %bb167
|
|
|
|
%tmp169 = add nuw nsw i64 %i21.0, 1
|
|
|
|
br label %bb159
|
|
|
|
|
|
|
|
bb170: ; preds = %bb159
|
|
|
|
br label %bb171
|
|
|
|
|
|
|
|
bb171: ; preds = %bb180, %bb170
|
|
|
|
%i23.0 = phi i64 [ 0, %bb170 ], [ %tmp181, %bb180 ]
|
|
|
|
%exitcond3 = icmp ne i64 %i23.0, 1024
|
|
|
|
br i1 %exitcond3, label %bb172, label %bb182
|
|
|
|
|
|
|
|
bb172: ; preds = %bb171
|
|
|
|
br label %bb173
|
|
|
|
|
|
|
|
bb173: ; preds = %bb177, %bb172
|
|
|
|
%j24.0 = phi i64 [ 0, %bb172 ], [ %tmp178, %bb177 ]
|
|
|
|
%exitcond2 = icmp ne i64 %j24.0, 1024
|
|
|
|
br i1 %exitcond2, label %bb174, label %bb179
|
|
|
|
|
|
|
|
bb174: ; preds = %bb173
|
|
|
|
%tmp175 = load i64, i64* %A, align 8
|
|
|
|
%tmp176 = add nsw i64 %tmp175, 42
|
|
|
|
store i64 %tmp176, i64* %A, align 8
|
|
|
|
br label %bb177
|
|
|
|
|
|
|
|
bb177: ; preds = %bb174
|
|
|
|
%tmp178 = add nuw nsw i64 %j24.0, 1
|
|
|
|
br label %bb173
|
|
|
|
|
|
|
|
bb179: ; preds = %bb173
|
|
|
|
br label %bb180
|
|
|
|
|
|
|
|
bb180: ; preds = %bb179
|
|
|
|
%tmp181 = add nuw nsw i64 %i23.0, 1
|
|
|
|
br label %bb171
|
|
|
|
|
|
|
|
bb182: ; preds = %bb171
|
|
|
|
br label %bb183
|
|
|
|
|
|
|
|
bb183: ; preds = %bb192, %bb182
|
|
|
|
%i25.0 = phi i64 [ 0, %bb182 ], [ %tmp193, %bb192 ]
|
|
|
|
%exitcond1 = icmp ne i64 %i25.0, 1024
|
|
|
|
br i1 %exitcond1, label %bb184, label %bb194
|
|
|
|
|
|
|
|
bb184: ; preds = %bb183
|
|
|
|
br label %bb185
|
|
|
|
|
|
|
|
bb185: ; preds = %bb189, %bb184
|
|
|
|
%j26.0 = phi i64 [ 0, %bb184 ], [ %tmp190, %bb189 ]
|
|
|
|
%exitcond = icmp ne i64 %j26.0, 1024
|
|
|
|
br i1 %exitcond, label %bb186, label %bb191
|
|
|
|
|
|
|
|
bb186: ; preds = %bb185
|
|
|
|
%tmp187 = load i64, i64* %A, align 8
|
|
|
|
%tmp188 = add nsw i64 %tmp187, 42
|
|
|
|
store i64 %tmp188, i64* %A, align 8
|
|
|
|
br label %bb189
|
|
|
|
|
|
|
|
bb189: ; preds = %bb186
|
|
|
|
%tmp190 = add nuw nsw i64 %j26.0, 1
|
|
|
|
br label %bb185
|
|
|
|
|
|
|
|
bb191: ; preds = %bb185
|
|
|
|
br label %bb192
|
|
|
|
|
|
|
|
bb192: ; preds = %bb191
|
|
|
|
%tmp193 = add nuw nsw i64 %i25.0, 1
|
|
|
|
br label %bb183
|
|
|
|
|
|
|
|
bb194: ; preds = %bb183
|
|
|
|
ret void
|
|
|
|
}
|