64 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt -passes='print<access-info>' < %s -disable-output 2>&1 | FileCheck %s3 4define dso_local void @dotvariable_laa(ptr nocapture readonly nonnull %Base1, ptr nocapture readonly %Base2, ptr nocapture %Dest, ptr nocapture readonly %Preds) {5; CHECK-LABEL: 'dotvariable_laa'6; CHECK-NEXT: for.body:7; CHECK-NEXT: Memory dependences are safe with run-time checks8; CHECK-NEXT: Dependences:9; CHECK-NEXT: Run-time memory checks:10; CHECK-NEXT: Check 0:11; CHECK-NEXT: Comparing group GRP0:12; CHECK-NEXT: %1 = getelementptr inbounds double, ptr %Dest, i64 %indvars.iv13; CHECK-NEXT: Against group GRP1:14; CHECK-NEXT: %arrayidx = getelementptr inbounds i32, ptr %Preds, i64 %indvars.iv15; CHECK-NEXT: Check 1:16; CHECK-NEXT: Comparing group GRP0:17; CHECK-NEXT: %1 = getelementptr inbounds double, ptr %Dest, i64 %indvars.iv18; CHECK-NEXT: Against group GRP2:19; CHECK-NEXT: %.sink.in = getelementptr inbounds double, ptr %spec.select, i64 %indvars.iv20; CHECK-NEXT: Check 2:21; CHECK-NEXT: Comparing group GRP0:22; CHECK-NEXT: %1 = getelementptr inbounds double, ptr %Dest, i64 %indvars.iv23; CHECK-NEXT: Against group GRP3:24; CHECK-NEXT: %.sink.in = getelementptr inbounds double, ptr %spec.select, i64 %indvars.iv25; CHECK-NEXT: Grouped accesses:26; CHECK-NEXT: Group GRP0:27; CHECK-NEXT: (Low: %Dest High: (800 + %Dest))28; CHECK-NEXT: Member: {%Dest,+,8}<nuw><%for.body>29; CHECK-NEXT: Group GRP1:30; CHECK-NEXT: (Low: %Preds High: (400 + %Preds))31; CHECK-NEXT: Member: {%Preds,+,4}<nuw><%for.body>32; CHECK-NEXT: Group GRP2:33; CHECK-NEXT: (Low: %Base2 High: (800 + %Base2))34; CHECK-NEXT: Member: {%Base2,+,8}<nw><%for.body>35; CHECK-NEXT: Group GRP3:36; CHECK-NEXT: (Low: %Base1 High: (800 + %Base1))37; CHECK-NEXT: Member: {%Base1,+,8}<nw><%for.body>38; CHECK-EMPTY:39; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.40; CHECK-NEXT: SCEV assumptions:41; CHECK-EMPTY:42; CHECK-NEXT: Expressions re-written:43;44entry:45 br label %for.body46 47for.cond.cleanup:48 ret void49 50for.body:51 %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]52 %arrayidx = getelementptr inbounds i32, ptr %Preds, i64 %indvars.iv53 %0 = load i32, ptr %arrayidx, align 454 %cmp1.not = icmp eq i32 %0, 055 %spec.select = select i1 %cmp1.not, ptr %Base2, ptr %Base156 %.sink.in = getelementptr inbounds double, ptr %spec.select, i64 %indvars.iv57 %.sink = load double, ptr %.sink.in, align 858 %1 = getelementptr inbounds double, ptr %Dest, i64 %indvars.iv59 store double %.sink, ptr %1, align 860 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 161 %exitcond.not = icmp eq i64 %indvars.iv.next, 10062 br i1 %exitcond.not, label %for.cond.cleanup, label %for.body63}64