xref: /llvm-project/polly/test/DependenceInfo/reduction_sequence.ll (revision e1f056f692d869708c1898d9d65a69ac5584a0ed)
1; RUN: opt %loadNPMPolly '-passes=print<polly-dependences>' -disable-output < %s | FileCheck %s
2
3;    void manyreductions(long *A) {
4;      for (long i = 0; i < 1024; i++)
5;        for (long j = 0; j < 1024; j++)
6;          *A += 42;
7;
8;      for (long i = 0; i < 1024; i++)
9;        for (long j = 0; j < 1024; j++)
10;          *A += 42;
11;
12;      for (long i = 0; i < 1024; i++)
13;        for (long j = 0; j < 1024; j++)
14;          *A += 42;
15;
16;      for (long i = 0; i < 1024; i++)
17;        for (long j = 0; j < 1024; j++)
18;          *A += 42;
19;
20;      for (long i = 0; i < 1024; i++)
21;        for (long j = 0; j < 1024; j++)
22;          *A += 42;
23;
24;      for (long i = 0; i < 1024; i++)
25;        for (long j = 0; j < 1024; j++)
26;          *A += 42;
27;
28;      for (long i = 0; i < 1024; i++)
29;        for (long j = 0; j < 1024; j++)
30;          *A += 42;
31;
32;      for (long i = 0; i < 1024; i++)
33;        for (long j = 0; j < 1024; j++)
34;          *A += 42;
35;
36;      for (long i = 0; i < 1024; i++)
37;        for (long j = 0; j < 1024; j++)
38;          *A += 42;
39;
40;      for (long i = 0; i < 1024; i++)
41;        for (long j = 0; j < 1024; j++)
42;          *A += 42;
43;
44;      for (long i = 0; i < 1024; i++)
45;        for (long j = 0; j < 1024; j++)
46;          *A += 42;
47;
48;      for (long i = 0; i < 1024; i++)
49;        for (long j = 0; j < 1024; j++)
50;          *A += 42;
51;
52;      for (long i = 0; i < 1024; i++)
53;        for (long j = 0; j < 1024; j++)
54;          *A += 42;
55;
56;      for (long i = 0; i < 1024; i++)
57;        for (long j = 0; j < 1024; j++)
58;          *A += 42;
59;    }
60
61; CHECK: 	RAW dependences:
62; CHECK-NEXT: 		{ 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_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_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_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_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_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_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]; 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_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_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_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_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_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] }
63; CHECK-NEXT: 	WAR dependences:
64; CHECK-NEXT:     { 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_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_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_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_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_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_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]; 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_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_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_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_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_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] }
65; CHECK-NEXT: 	WAW dependences:
66; CHECK-NEXT: 		{ 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_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_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_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_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_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_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]; 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_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_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_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_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_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] }
67; CHECK-NEXT: 	Reduction dependences:
68; CHECK-NEXT: 		{ 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_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_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_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_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_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_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_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; 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_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_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_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_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 }
69
70; CHECK-NEXT: 	Transitive closure of reduction dependences:
71; CHECK-NEXT:  { 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_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_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_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_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_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_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_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)); 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_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_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_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_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)) }
72
73;
74target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
75
76define void @manyreductions(ptr %A) {
77bb:
78  br label %bb28
79
80bb28:                                             ; preds = %bb36, %bb
81  %i.0 = phi i64 [ 0, %bb ], [ %tmp37, %bb36 ]
82  %exitcond27 = icmp ne i64 %i.0, 1024
83  br i1 %exitcond27, label %bb29, label %bb38
84
85bb29:                                             ; preds = %bb28
86  br label %bb30
87
88bb30:                                             ; preds = %bb33, %bb29
89  %j.0 = phi i64 [ 0, %bb29 ], [ %tmp34, %bb33 ]
90  %exitcond26 = icmp ne i64 %j.0, 1024
91  br i1 %exitcond26, label %bb31, label %bb35
92
93bb31:                                             ; preds = %bb30
94  %tmp = load i64, ptr %A, align 8
95  %tmp32 = add nsw i64 %tmp, 42
96  store i64 %tmp32, ptr %A, align 8
97  br label %bb33
98
99bb33:                                             ; preds = %bb31
100  %tmp34 = add nuw nsw i64 %j.0, 1
101  br label %bb30
102
103bb35:                                             ; preds = %bb30
104  br label %bb36
105
106bb36:                                             ; preds = %bb35
107  %tmp37 = add nuw nsw i64 %i.0, 1
108  br label %bb28
109
110bb38:                                             ; preds = %bb28
111  br label %bb39
112
113bb39:                                             ; preds = %bb48, %bb38
114  %i1.0 = phi i64 [ 0, %bb38 ], [ %tmp49, %bb48 ]
115  %exitcond25 = icmp ne i64 %i1.0, 1024
116  br i1 %exitcond25, label %bb40, label %bb50
117
118bb40:                                             ; preds = %bb39
119  br label %bb41
120
121bb41:                                             ; preds = %bb45, %bb40
122  %j2.0 = phi i64 [ 0, %bb40 ], [ %tmp46, %bb45 ]
123  %exitcond24 = icmp ne i64 %j2.0, 1024
124  br i1 %exitcond24, label %bb42, label %bb47
125
126bb42:                                             ; preds = %bb41
127  %tmp43 = load i64, ptr %A, align 8
128  %tmp44 = add nsw i64 %tmp43, 42
129  store i64 %tmp44, ptr %A, align 8
130  br label %bb45
131
132bb45:                                             ; preds = %bb42
133  %tmp46 = add nuw nsw i64 %j2.0, 1
134  br label %bb41
135
136bb47:                                             ; preds = %bb41
137  br label %bb48
138
139bb48:                                             ; preds = %bb47
140  %tmp49 = add nuw nsw i64 %i1.0, 1
141  br label %bb39
142
143bb50:                                             ; preds = %bb39
144  br label %bb51
145
146bb51:                                             ; preds = %bb60, %bb50
147  %i3.0 = phi i64 [ 0, %bb50 ], [ %tmp61, %bb60 ]
148  %exitcond23 = icmp ne i64 %i3.0, 1024
149  br i1 %exitcond23, label %bb52, label %bb62
150
151bb52:                                             ; preds = %bb51
152  br label %bb53
153
154bb53:                                             ; preds = %bb57, %bb52
155  %j4.0 = phi i64 [ 0, %bb52 ], [ %tmp58, %bb57 ]
156  %exitcond22 = icmp ne i64 %j4.0, 1024
157  br i1 %exitcond22, label %bb54, label %bb59
158
159bb54:                                             ; preds = %bb53
160  %tmp55 = load i64, ptr %A, align 8
161  %tmp56 = add nsw i64 %tmp55, 42
162  store i64 %tmp56, ptr %A, align 8
163  br label %bb57
164
165bb57:                                             ; preds = %bb54
166  %tmp58 = add nuw nsw i64 %j4.0, 1
167  br label %bb53
168
169bb59:                                             ; preds = %bb53
170  br label %bb60
171
172bb60:                                             ; preds = %bb59
173  %tmp61 = add nuw nsw i64 %i3.0, 1
174  br label %bb51
175
176bb62:                                             ; preds = %bb51
177  br label %bb63
178
179bb63:                                             ; preds = %bb72, %bb62
180  %i5.0 = phi i64 [ 0, %bb62 ], [ %tmp73, %bb72 ]
181  %exitcond21 = icmp ne i64 %i5.0, 1024
182  br i1 %exitcond21, label %bb64, label %bb74
183
184bb64:                                             ; preds = %bb63
185  br label %bb65
186
187bb65:                                             ; preds = %bb69, %bb64
188  %j6.0 = phi i64 [ 0, %bb64 ], [ %tmp70, %bb69 ]
189  %exitcond20 = icmp ne i64 %j6.0, 1024
190  br i1 %exitcond20, label %bb66, label %bb71
191
192bb66:                                             ; preds = %bb65
193  %tmp67 = load i64, ptr %A, align 8
194  %tmp68 = add nsw i64 %tmp67, 42
195  store i64 %tmp68, ptr %A, align 8
196  br label %bb69
197
198bb69:                                             ; preds = %bb66
199  %tmp70 = add nuw nsw i64 %j6.0, 1
200  br label %bb65
201
202bb71:                                             ; preds = %bb65
203  br label %bb72
204
205bb72:                                             ; preds = %bb71
206  %tmp73 = add nuw nsw i64 %i5.0, 1
207  br label %bb63
208
209bb74:                                             ; preds = %bb63
210  br label %bb75
211
212bb75:                                             ; preds = %bb84, %bb74
213  %i7.0 = phi i64 [ 0, %bb74 ], [ %tmp85, %bb84 ]
214  %exitcond19 = icmp ne i64 %i7.0, 1024
215  br i1 %exitcond19, label %bb76, label %bb86
216
217bb76:                                             ; preds = %bb75
218  br label %bb77
219
220bb77:                                             ; preds = %bb81, %bb76
221  %j8.0 = phi i64 [ 0, %bb76 ], [ %tmp82, %bb81 ]
222  %exitcond18 = icmp ne i64 %j8.0, 1024
223  br i1 %exitcond18, label %bb78, label %bb83
224
225bb78:                                             ; preds = %bb77
226  %tmp79 = load i64, ptr %A, align 8
227  %tmp80 = add nsw i64 %tmp79, 42
228  store i64 %tmp80, ptr %A, align 8
229  br label %bb81
230
231bb81:                                             ; preds = %bb78
232  %tmp82 = add nuw nsw i64 %j8.0, 1
233  br label %bb77
234
235bb83:                                             ; preds = %bb77
236  br label %bb84
237
238bb84:                                             ; preds = %bb83
239  %tmp85 = add nuw nsw i64 %i7.0, 1
240  br label %bb75
241
242bb86:                                             ; preds = %bb75
243  br label %bb87
244
245bb87:                                             ; preds = %bb96, %bb86
246  %i9.0 = phi i64 [ 0, %bb86 ], [ %tmp97, %bb96 ]
247  %exitcond17 = icmp ne i64 %i9.0, 1024
248  br i1 %exitcond17, label %bb88, label %bb98
249
250bb88:                                             ; preds = %bb87
251  br label %bb89
252
253bb89:                                             ; preds = %bb93, %bb88
254  %j10.0 = phi i64 [ 0, %bb88 ], [ %tmp94, %bb93 ]
255  %exitcond16 = icmp ne i64 %j10.0, 1024
256  br i1 %exitcond16, label %bb90, label %bb95
257
258bb90:                                             ; preds = %bb89
259  %tmp91 = load i64, ptr %A, align 8
260  %tmp92 = add nsw i64 %tmp91, 42
261  store i64 %tmp92, ptr %A, align 8
262  br label %bb93
263
264bb93:                                             ; preds = %bb90
265  %tmp94 = add nuw nsw i64 %j10.0, 1
266  br label %bb89
267
268bb95:                                             ; preds = %bb89
269  br label %bb96
270
271bb96:                                             ; preds = %bb95
272  %tmp97 = add nuw nsw i64 %i9.0, 1
273  br label %bb87
274
275bb98:                                             ; preds = %bb87
276  br label %bb99
277
278bb99:                                             ; preds = %bb108, %bb98
279  %i11.0 = phi i64 [ 0, %bb98 ], [ %tmp109, %bb108 ]
280  %exitcond15 = icmp ne i64 %i11.0, 1024
281  br i1 %exitcond15, label %bb100, label %bb110
282
283bb100:                                            ; preds = %bb99
284  br label %bb101
285
286bb101:                                            ; preds = %bb105, %bb100
287  %j12.0 = phi i64 [ 0, %bb100 ], [ %tmp106, %bb105 ]
288  %exitcond14 = icmp ne i64 %j12.0, 1024
289  br i1 %exitcond14, label %bb102, label %bb107
290
291bb102:                                            ; preds = %bb101
292  %tmp103 = load i64, ptr %A, align 8
293  %tmp104 = add nsw i64 %tmp103, 42
294  store i64 %tmp104, ptr %A, align 8
295  br label %bb105
296
297bb105:                                            ; preds = %bb102
298  %tmp106 = add nuw nsw i64 %j12.0, 1
299  br label %bb101
300
301bb107:                                            ; preds = %bb101
302  br label %bb108
303
304bb108:                                            ; preds = %bb107
305  %tmp109 = add nuw nsw i64 %i11.0, 1
306  br label %bb99
307
308bb110:                                            ; preds = %bb99
309  br label %bb111
310
311bb111:                                            ; preds = %bb120, %bb110
312  %i13.0 = phi i64 [ 0, %bb110 ], [ %tmp121, %bb120 ]
313  %exitcond13 = icmp ne i64 %i13.0, 1024
314  br i1 %exitcond13, label %bb112, label %bb122
315
316bb112:                                            ; preds = %bb111
317  br label %bb113
318
319bb113:                                            ; preds = %bb117, %bb112
320  %j14.0 = phi i64 [ 0, %bb112 ], [ %tmp118, %bb117 ]
321  %exitcond12 = icmp ne i64 %j14.0, 1024
322  br i1 %exitcond12, label %bb114, label %bb119
323
324bb114:                                            ; preds = %bb113
325  %tmp115 = load i64, ptr %A, align 8
326  %tmp116 = add nsw i64 %tmp115, 42
327  store i64 %tmp116, ptr %A, align 8
328  br label %bb117
329
330bb117:                                            ; preds = %bb114
331  %tmp118 = add nuw nsw i64 %j14.0, 1
332  br label %bb113
333
334bb119:                                            ; preds = %bb113
335  br label %bb120
336
337bb120:                                            ; preds = %bb119
338  %tmp121 = add nuw nsw i64 %i13.0, 1
339  br label %bb111
340
341bb122:                                            ; preds = %bb111
342  br label %bb123
343
344bb123:                                            ; preds = %bb132, %bb122
345  %i15.0 = phi i64 [ 0, %bb122 ], [ %tmp133, %bb132 ]
346  %exitcond11 = icmp ne i64 %i15.0, 1024
347  br i1 %exitcond11, label %bb124, label %bb134
348
349bb124:                                            ; preds = %bb123
350  br label %bb125
351
352bb125:                                            ; preds = %bb129, %bb124
353  %j16.0 = phi i64 [ 0, %bb124 ], [ %tmp130, %bb129 ]
354  %exitcond10 = icmp ne i64 %j16.0, 1024
355  br i1 %exitcond10, label %bb126, label %bb131
356
357bb126:                                            ; preds = %bb125
358  %tmp127 = load i64, ptr %A, align 8
359  %tmp128 = add nsw i64 %tmp127, 42
360  store i64 %tmp128, ptr %A, align 8
361  br label %bb129
362
363bb129:                                            ; preds = %bb126
364  %tmp130 = add nuw nsw i64 %j16.0, 1
365  br label %bb125
366
367bb131:                                            ; preds = %bb125
368  br label %bb132
369
370bb132:                                            ; preds = %bb131
371  %tmp133 = add nuw nsw i64 %i15.0, 1
372  br label %bb123
373
374bb134:                                            ; preds = %bb123
375  br label %bb135
376
377bb135:                                            ; preds = %bb144, %bb134
378  %i17.0 = phi i64 [ 0, %bb134 ], [ %tmp145, %bb144 ]
379  %exitcond9 = icmp ne i64 %i17.0, 1024
380  br i1 %exitcond9, label %bb136, label %bb146
381
382bb136:                                            ; preds = %bb135
383  br label %bb137
384
385bb137:                                            ; preds = %bb141, %bb136
386  %j18.0 = phi i64 [ 0, %bb136 ], [ %tmp142, %bb141 ]
387  %exitcond8 = icmp ne i64 %j18.0, 1024
388  br i1 %exitcond8, label %bb138, label %bb143
389
390bb138:                                            ; preds = %bb137
391  %tmp139 = load i64, ptr %A, align 8
392  %tmp140 = add nsw i64 %tmp139, 42
393  store i64 %tmp140, ptr %A, align 8
394  br label %bb141
395
396bb141:                                            ; preds = %bb138
397  %tmp142 = add nuw nsw i64 %j18.0, 1
398  br label %bb137
399
400bb143:                                            ; preds = %bb137
401  br label %bb144
402
403bb144:                                            ; preds = %bb143
404  %tmp145 = add nuw nsw i64 %i17.0, 1
405  br label %bb135
406
407bb146:                                            ; preds = %bb135
408  br label %bb147
409
410bb147:                                            ; preds = %bb156, %bb146
411  %i19.0 = phi i64 [ 0, %bb146 ], [ %tmp157, %bb156 ]
412  %exitcond7 = icmp ne i64 %i19.0, 1024
413  br i1 %exitcond7, label %bb148, label %bb158
414
415bb148:                                            ; preds = %bb147
416  br label %bb149
417
418bb149:                                            ; preds = %bb153, %bb148
419  %j20.0 = phi i64 [ 0, %bb148 ], [ %tmp154, %bb153 ]
420  %exitcond6 = icmp ne i64 %j20.0, 1024
421  br i1 %exitcond6, label %bb150, label %bb155
422
423bb150:                                            ; preds = %bb149
424  %tmp151 = load i64, ptr %A, align 8
425  %tmp152 = add nsw i64 %tmp151, 42
426  store i64 %tmp152, ptr %A, align 8
427  br label %bb153
428
429bb153:                                            ; preds = %bb150
430  %tmp154 = add nuw nsw i64 %j20.0, 1
431  br label %bb149
432
433bb155:                                            ; preds = %bb149
434  br label %bb156
435
436bb156:                                            ; preds = %bb155
437  %tmp157 = add nuw nsw i64 %i19.0, 1
438  br label %bb147
439
440bb158:                                            ; preds = %bb147
441  br label %bb159
442
443bb159:                                            ; preds = %bb168, %bb158
444  %i21.0 = phi i64 [ 0, %bb158 ], [ %tmp169, %bb168 ]
445  %exitcond5 = icmp ne i64 %i21.0, 1024
446  br i1 %exitcond5, label %bb160, label %bb170
447
448bb160:                                            ; preds = %bb159
449  br label %bb161
450
451bb161:                                            ; preds = %bb165, %bb160
452  %j22.0 = phi i64 [ 0, %bb160 ], [ %tmp166, %bb165 ]
453  %exitcond4 = icmp ne i64 %j22.0, 1024
454  br i1 %exitcond4, label %bb162, label %bb167
455
456bb162:                                            ; preds = %bb161
457  %tmp163 = load i64, ptr %A, align 8
458  %tmp164 = add nsw i64 %tmp163, 42
459  store i64 %tmp164, ptr %A, align 8
460  br label %bb165
461
462bb165:                                            ; preds = %bb162
463  %tmp166 = add nuw nsw i64 %j22.0, 1
464  br label %bb161
465
466bb167:                                            ; preds = %bb161
467  br label %bb168
468
469bb168:                                            ; preds = %bb167
470  %tmp169 = add nuw nsw i64 %i21.0, 1
471  br label %bb159
472
473bb170:                                            ; preds = %bb159
474  br label %bb171
475
476bb171:                                            ; preds = %bb180, %bb170
477  %i23.0 = phi i64 [ 0, %bb170 ], [ %tmp181, %bb180 ]
478  %exitcond3 = icmp ne i64 %i23.0, 1024
479  br i1 %exitcond3, label %bb172, label %bb182
480
481bb172:                                            ; preds = %bb171
482  br label %bb173
483
484bb173:                                            ; preds = %bb177, %bb172
485  %j24.0 = phi i64 [ 0, %bb172 ], [ %tmp178, %bb177 ]
486  %exitcond2 = icmp ne i64 %j24.0, 1024
487  br i1 %exitcond2, label %bb174, label %bb179
488
489bb174:                                            ; preds = %bb173
490  %tmp175 = load i64, ptr %A, align 8
491  %tmp176 = add nsw i64 %tmp175, 42
492  store i64 %tmp176, ptr %A, align 8
493  br label %bb177
494
495bb177:                                            ; preds = %bb174
496  %tmp178 = add nuw nsw i64 %j24.0, 1
497  br label %bb173
498
499bb179:                                            ; preds = %bb173
500  br label %bb180
501
502bb180:                                            ; preds = %bb179
503  %tmp181 = add nuw nsw i64 %i23.0, 1
504  br label %bb171
505
506bb182:                                            ; preds = %bb171
507  br label %bb183
508
509bb183:                                            ; preds = %bb192, %bb182
510  %i25.0 = phi i64 [ 0, %bb182 ], [ %tmp193, %bb192 ]
511  %exitcond1 = icmp ne i64 %i25.0, 1024
512  br i1 %exitcond1, label %bb184, label %bb194
513
514bb184:                                            ; preds = %bb183
515  br label %bb185
516
517bb185:                                            ; preds = %bb189, %bb184
518  %j26.0 = phi i64 [ 0, %bb184 ], [ %tmp190, %bb189 ]
519  %exitcond = icmp ne i64 %j26.0, 1024
520  br i1 %exitcond, label %bb186, label %bb191
521
522bb186:                                            ; preds = %bb185
523  %tmp187 = load i64, ptr %A, align 8
524  %tmp188 = add nsw i64 %tmp187, 42
525  store i64 %tmp188, ptr %A, align 8
526  br label %bb189
527
528bb189:                                            ; preds = %bb186
529  %tmp190 = add nuw nsw i64 %j26.0, 1
530  br label %bb185
531
532bb191:                                            ; preds = %bb185
533  br label %bb192
534
535bb192:                                            ; preds = %bb191
536  %tmp193 = add nuw nsw i64 %i25.0, 1
537  br label %bb183
538
539bb194:                                            ; preds = %bb183
540  ret void
541}
542