brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · f02ee1a Raw
96 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=loop-interchange -cache-line-size=64 -pass-remarks-missed='loop-interchange' -pass-remarks-output=%t -S3; RUN: FileCheck --input-file=%t %s4 5@b = external dso_local global [5 x i32], align 166 7;; Not profitable to interchange, because the access is invariant to j loop.8;;9;;  for(int i=0;i<4;i++) {10;;    for(int j=1;j<4;j++) {11;;      b[i] = ....12;;    }13;; }14 15; CHECK: --- !Missed16; CHECK-NEXT: Pass:            loop-interchange17; CHECK-NEXT: Name:            Dependence18; CHECK-NEXT: Function:        test119; CHECK-NEXT: Args:20; CHECK-NEXT:  - String:       Cannot interchange loops due to dependences.21 22define void @test1() {23entry:24  br label %outer.header25 26outer.header:27  %i = phi i32 [ %i.next, %outer.latch ], [ 0, %entry ]28  br label %inner.header29 30inner.header:31  %j = phi i32 [ %j.next, %inner.latch ], [ 1, %outer.header ]32  br label %inner.latch33 34inner.latch:35  %idxprom = sext i32 %i to i6436  %arrayidx = getelementptr inbounds [5 x i32], ptr @b, i64 0, i64 %idxprom37  %0 = load i32, ptr %arrayidx, align 438  store i32 undef, ptr %arrayidx, align 439  %cmp = icmp slt i32 %j, 440  %j.next = add nuw nsw i32 %j, 141  br i1 %cmp, label %inner.header, label %outer.body42 43outer.body:44  br label %outer.latch45 46outer.latch:47  %i.next = add nsw i32 %i, 148  %cmp2 = icmp slt i32 %i, 449  br i1 %cmp2, label %outer.header, label %exit50 51exit:52  ret void53}54 55 56; CHECK: --- !Missed57; CHECK-NEXT: Pass:            loop-interchange58; CHECK-NEXT: Name:            Dependence59; CHECK-NEXT: Function:        test260; CHECK-NEXT: Args:61; CHECK-NEXT:  - String:       Cannot interchange loops due to dependences.62 63define void @test2() {64entry:65  br label %outer.header66 67outer.header:68  %i = phi i32 [ %i.next, %outer.latch ], [ 0, %entry ]69  br label %inner.header70 71inner.header:72  %lsr.iv = phi i32 [ %lsr.iv.next, %inner.latch ], [ 1, %outer.header ]73  br label %inner.latch74 75inner.latch:76  %idxprom = sext i32 %i to i6477  %arrayidx = getelementptr inbounds [5 x i32], ptr @b, i64 0, i64 %idxprom78  %0 = load i32, ptr %arrayidx, align 479  %cmp = icmp slt i32 %lsr.iv, 480  %cmp.zext = zext i1 %cmp to i3281  store i32 %cmp.zext, ptr %arrayidx, align 482  %lsr.iv.next = add nuw nsw i32 %lsr.iv, 183  br i1 %cmp, label %inner.header, label %outer.body84 85outer.body:86  br label %outer.latch87 88outer.latch:89  %i.next = add nsw i32 %i, 190  %cmp2 = icmp slt i32 %i, 491  br i1 %cmp2, label %outer.header, label %exit92 93exit:94  ret void95}96