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