96 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 52; RUN: opt < %s -disable-output -aa-pipeline=default -passes='print<da>' \3; RUN: -da-miv-max-level-threshold=2 2>&1 | FileCheck %s4 5;; Check to make sure when MIV tests reach a maximum depth level6;; threshold, the resulting dependence is conservatively correct.7 8;; for (int i = 0; i < n; i++)9;; for (int j = 0; j < m; j++)10;; for (int k = 0; k < o; k++)11;; A[i+j+k] = A[i-j+k] + B[i+j+k];12 13 14define void @foo(ptr noalias %A, ptr noalias %B, i32 signext %m, i32 signext %n, i32 signext %o) {15; CHECK-LABEL: 'foo'16; CHECK-NEXT: Src: %2 = load float, ptr %arrayidx, align 4 --> Dst: %2 = load float, ptr %arrayidx, align 417; CHECK-NEXT: da analyze - input [* * *]!18; CHECK-NEXT: Src: %2 = load float, ptr %arrayidx, align 4 --> Dst: %5 = load float, ptr %arrayidx12, align 419; CHECK-NEXT: da analyze - none!20; CHECK-NEXT: Src: %2 = load float, ptr %arrayidx, align 4 --> Dst: store float %add13, ptr %arrayidx17, align 421; CHECK-NEXT: da analyze - anti [* * *|<]!22; CHECK-NEXT: Src: %5 = load float, ptr %arrayidx12, align 4 --> Dst: %5 = load float, ptr %arrayidx12, align 423; CHECK-NEXT: da analyze - input [* * *]!24; CHECK-NEXT: Src: %5 = load float, ptr %arrayidx12, align 4 --> Dst: store float %add13, ptr %arrayidx17, align 425; CHECK-NEXT: da analyze - none!26; CHECK-NEXT: Src: store float %add13, ptr %arrayidx17, align 4 --> Dst: store float %add13, ptr %arrayidx17, align 427; CHECK-NEXT: da analyze - output [* * *]!28;29entry:30 %cmp5 = icmp sgt i32 %n, 031 br i1 %cmp5, label %for.body.preheader, label %for.end2332 33for.body.preheader: ; preds = %entry34 %wide.trip.count21 = zext i32 %n to i6435 br label %for.body36 37for.body: ; preds = %for.body.preheader, %for.inc2138 %indvars.iv19 = phi i64 [ 0, %for.body.preheader ], [ %indvars.iv.next20, %for.inc21 ]39 %cmp23 = icmp sgt i32 %m, 040 br i1 %cmp23, label %for.body4.preheader, label %for.inc2141 42for.body4.preheader: ; preds = %for.body43 %wide.trip.count17 = zext i32 %m to i6444 br label %for.body445 46for.body4: ; preds = %for.body4.preheader, %for.inc1847 %indvars.iv12 = phi i64 [ 0, %for.body4.preheader ], [ %indvars.iv.next13, %for.inc18 ]48 %cmp61 = icmp sgt i32 %o, 049 br i1 %cmp61, label %for.body8.preheader, label %for.inc1850 51for.body8.preheader: ; preds = %for.body452 %wide.trip.count = zext i32 %o to i6453 br label %for.body854 55for.body8: ; preds = %for.body8.preheader, %for.body856 %indvars.iv = phi i64 [ 0, %for.body8.preheader ], [ %indvars.iv.next, %for.body8 ]57 %0 = sub nsw i64 %indvars.iv19, %indvars.iv1258 %1 = add nsw i64 %0, %indvars.iv59 %arrayidx = getelementptr inbounds float, ptr %A, i64 %160 %2 = load float, ptr %arrayidx, align 461 %3 = add nuw nsw i64 %indvars.iv19, %indvars.iv1262 %4 = add nuw nsw i64 %3, %indvars.iv63 %arrayidx12 = getelementptr inbounds float, ptr %B, i64 %464 %5 = load float, ptr %arrayidx12, align 465 %add13 = fadd fast float %2, %566 %6 = add nuw nsw i64 %indvars.iv19, %indvars.iv1267 %7 = add nuw nsw i64 %6, %indvars.iv68 %arrayidx17 = getelementptr inbounds float, ptr %A, i64 %769 store float %add13, ptr %arrayidx17, align 470 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 171 %exitcond = icmp ne i64 %indvars.iv.next, %wide.trip.count72 br i1 %exitcond, label %for.body8, label %for.inc18.loopexit73 74for.inc18.loopexit: ; preds = %for.body875 br label %for.inc1876 77for.inc18: ; preds = %for.inc18.loopexit, %for.body478 %indvars.iv.next13 = add nuw nsw i64 %indvars.iv12, 179 %exitcond18 = icmp ne i64 %indvars.iv.next13, %wide.trip.count1780 br i1 %exitcond18, label %for.body4, label %for.inc21.loopexit81 82for.inc21.loopexit: ; preds = %for.inc1883 br label %for.inc2184 85for.inc21: ; preds = %for.inc21.loopexit, %for.body86 %indvars.iv.next20 = add nuw nsw i64 %indvars.iv19, 187 %exitcond22 = icmp ne i64 %indvars.iv.next20, %wide.trip.count2188 br i1 %exitcond22, label %for.body, label %for.end23.loopexit89 90for.end23.loopexit: ; preds = %for.inc2191 br label %for.end2392 93for.end23: ; preds = %for.end23.loopexit, %entry94 ret void95}96