xref: /llvm-project/llvm/test/Transforms/LoopInterchange/deep-loop-nest.ll (revision d15f3e828d3d3335aa9b92b9013a590b71e56b92)
1*d15f3e82SMadhur Amilkanthwar; RUN: opt < %s -passes=loop-interchange -pass-remarks-missed='loop-interchange' \
2*d15f3e82SMadhur Amilkanthwar; RUN:          -disable-output 2>&1 | FileCheck %s
3*d15f3e82SMadhur Amilkanthwar
4*d15f3e82SMadhur Amilkanthwar; RUN: opt < %s -passes=loop-interchange -pass-remarks-missed='loop-interchange' \
5*d15f3e82SMadhur Amilkanthwar; RUN:          -loop-interchange-max-loop-nest-depth=12 -disable-output 2>&1 | \
6*d15f3e82SMadhur Amilkanthwar; RUN:          FileCheck --allow-empty -check-prefix=CHECK-MAX %s
7*d15f3e82SMadhur Amilkanthwar
8*d15f3e82SMadhur Amilkanthwartarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
9*d15f3e82SMadhur Amilkanthwar
10*d15f3e82SMadhur Amilkanthwar; CHECK: Unsupported depth of loop nest, the supported range is [2, 10].
11*d15f3e82SMadhur Amilkanthwar; CHECK-MAX-NOT: Unsupported depth of loop nest, the supported range is [2, 10].
12*d15f3e82SMadhur Amilkanthwardefine void @big_loop_nest() {
13*d15f3e82SMadhur Amilkanthwarentry:
14*d15f3e82SMadhur Amilkanthwar  br label %for1.header
15*d15f3e82SMadhur Amilkanthwar
16*d15f3e82SMadhur Amilkanthwarfor1.header:
17*d15f3e82SMadhur Amilkanthwar  %j = phi i64 [ 0, %entry ], [ %j.next, %for1.inc ]
18*d15f3e82SMadhur Amilkanthwar  br label %for2.header
19*d15f3e82SMadhur Amilkanthwarfor2.header:
20*d15f3e82SMadhur Amilkanthwar  %k = phi i64 [ 0, %for1.header ], [ %k.next, %for2.inc ]
21*d15f3e82SMadhur Amilkanthwar  br label %for3.header
22*d15f3e82SMadhur Amilkanthwarfor3.header:
23*d15f3e82SMadhur Amilkanthwar  %l = phi i64 [ 0, %for2.header ], [ %l.next, %for3.inc ]
24*d15f3e82SMadhur Amilkanthwar  br label %for4.header
25*d15f3e82SMadhur Amilkanthwarfor4.header:
26*d15f3e82SMadhur Amilkanthwar  %m = phi i64 [ 0, %for3.header ], [ %m.next, %for4.inc ]
27*d15f3e82SMadhur Amilkanthwar  br label %for5.header
28*d15f3e82SMadhur Amilkanthwarfor5.header:
29*d15f3e82SMadhur Amilkanthwar  %n = phi i64 [ 0, %for4.header ], [ %n.next, %for5.inc ]
30*d15f3e82SMadhur Amilkanthwar  br label %for6.header
31*d15f3e82SMadhur Amilkanthwarfor6.header:
32*d15f3e82SMadhur Amilkanthwar  %o = phi i64 [ 0, %for5.header ], [ %o.next, %for6.inc ]
33*d15f3e82SMadhur Amilkanthwar  br label %for7.header
34*d15f3e82SMadhur Amilkanthwarfor7.header:
35*d15f3e82SMadhur Amilkanthwar  %p = phi i64 [ 0, %for6.header ], [ %p.next, %for7.inc ]
36*d15f3e82SMadhur Amilkanthwar  br label %for8.header
37*d15f3e82SMadhur Amilkanthwarfor8.header:
38*d15f3e82SMadhur Amilkanthwar  %q = phi i64 [ 0, %for7.header ], [ %q.next, %for8.inc ]
39*d15f3e82SMadhur Amilkanthwar  br label %for9.header
40*d15f3e82SMadhur Amilkanthwarfor9.header:
41*d15f3e82SMadhur Amilkanthwar  %r = phi i64 [ 0, %for8.header ], [ %r.next, %for9.inc ]
42*d15f3e82SMadhur Amilkanthwar  br label %for10.header
43*d15f3e82SMadhur Amilkanthwarfor10.header:
44*d15f3e82SMadhur Amilkanthwar  %s = phi i64 [ 0, %for9.header ], [ %s.next, %for10.inc ]
45*d15f3e82SMadhur Amilkanthwar  br label %for11
46*d15f3e82SMadhur Amilkanthwarfor11:
47*d15f3e82SMadhur Amilkanthwar  %t = phi i64 [ %t.next, %for11 ], [ 0, %for10.header ]
48*d15f3e82SMadhur Amilkanthwar  %t.next = add nuw nsw i64 %t, 1
49*d15f3e82SMadhur Amilkanthwar  %exitcond = icmp eq i64 %t.next, 99
50*d15f3e82SMadhur Amilkanthwar  br i1 %exitcond, label %for1.inc, label %for11
51*d15f3e82SMadhur Amilkanthwar
52*d15f3e82SMadhur Amilkanthwarfor1.inc:
53*d15f3e82SMadhur Amilkanthwar  %j.next = add nuw nsw i64 %j, 1
54*d15f3e82SMadhur Amilkanthwar  %exitcond26 = icmp eq i64 %j.next, 99
55*d15f3e82SMadhur Amilkanthwar  br i1 %exitcond26, label %for2.inc, label %for1.header
56*d15f3e82SMadhur Amilkanthwarfor2.inc:
57*d15f3e82SMadhur Amilkanthwar  %k.next = add nuw nsw i64 %k, 1
58*d15f3e82SMadhur Amilkanthwar  %exitcond27 = icmp eq i64 %j.next, 99
59*d15f3e82SMadhur Amilkanthwar  br i1 %exitcond27, label %for3.inc, label %for2.header
60*d15f3e82SMadhur Amilkanthwarfor3.inc:
61*d15f3e82SMadhur Amilkanthwar  %l.next = add nuw nsw i64 %l, 1
62*d15f3e82SMadhur Amilkanthwar  %exitcond28 = icmp eq i64 %l.next, 99
63*d15f3e82SMadhur Amilkanthwar  br i1 %exitcond28, label %for4.inc, label %for3.header
64*d15f3e82SMadhur Amilkanthwarfor4.inc:
65*d15f3e82SMadhur Amilkanthwar  %m.next = add nuw nsw i64 %m, 1
66*d15f3e82SMadhur Amilkanthwar  %exitcond29 = icmp eq i64 %m.next, 99
67*d15f3e82SMadhur Amilkanthwar  br i1 %exitcond29, label %for5.inc, label %for4.header
68*d15f3e82SMadhur Amilkanthwarfor5.inc:
69*d15f3e82SMadhur Amilkanthwar  %n.next = add nuw nsw i64 %n, 1
70*d15f3e82SMadhur Amilkanthwar  %exitcond30 = icmp eq i64 %n.next, 99
71*d15f3e82SMadhur Amilkanthwar  br i1 %exitcond30, label %for6.inc, label %for5.header
72*d15f3e82SMadhur Amilkanthwarfor6.inc:
73*d15f3e82SMadhur Amilkanthwar  %o.next = add nuw nsw i64 %o, 1
74*d15f3e82SMadhur Amilkanthwar  %exitcond31 = icmp eq i64 %o.next, 99
75*d15f3e82SMadhur Amilkanthwar  br i1 %exitcond31, label %for7.inc, label %for6.header
76*d15f3e82SMadhur Amilkanthwarfor7.inc:
77*d15f3e82SMadhur Amilkanthwar  %p.next = add nuw nsw i64 %p, 1
78*d15f3e82SMadhur Amilkanthwar  %exitcond32 = icmp eq i64 %p.next, 99
79*d15f3e82SMadhur Amilkanthwar  br i1 %exitcond32, label %for8.inc, label %for7.header
80*d15f3e82SMadhur Amilkanthwarfor8.inc:
81*d15f3e82SMadhur Amilkanthwar  %q.next = add nuw nsw i64 %q, 1
82*d15f3e82SMadhur Amilkanthwar  %exitcond33 = icmp eq i64 %q.next, 99
83*d15f3e82SMadhur Amilkanthwar  br i1 %exitcond33, label %for9.inc, label %for8.header
84*d15f3e82SMadhur Amilkanthwarfor9.inc:
85*d15f3e82SMadhur Amilkanthwar  %r.next = add nuw nsw i64 %r, 1
86*d15f3e82SMadhur Amilkanthwar  %exitcond34 = icmp eq i64 %q.next, 99
87*d15f3e82SMadhur Amilkanthwar  br i1 %exitcond34, label %for10.inc, label %for9.header
88*d15f3e82SMadhur Amilkanthwarfor10.inc:
89*d15f3e82SMadhur Amilkanthwar  %s.next = add nuw nsw i64 %s, 1
90*d15f3e82SMadhur Amilkanthwar  %exitcond35 = icmp eq i64 %s.next, 99
91*d15f3e82SMadhur Amilkanthwar  br i1 %exitcond35, label %for.end, label %for10.header
92*d15f3e82SMadhur Amilkanthwar
93*d15f3e82SMadhur Amilkanthwarfor.end:
94*d15f3e82SMadhur Amilkanthwar  ret void
95*d15f3e82SMadhur Amilkanthwar}
96