brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · f2703e8 Raw
110 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py2; RUN: opt -disable-output -passes='print<access-info>' %s 2>&1 | FileCheck %s --check-prefixes=CHECK,FULLDEPTH3; RUN: opt -disable-output -passes='print<access-info>' -max-forked-scev-depth=2 %s 2>&1 | FileCheck %s --check-prefixes=CHECK,DEPTH24 5define void @laa_common_output(ptr %Base, ptr %Dest, ptr %Preds) {6; CHECK-LABEL: 'laa_common_output'7; CHECK-NEXT:    for.body:8; CHECK-NEXT:      Report: cannot identify array bounds9; CHECK-NEXT:      Dependences:10; CHECK-NEXT:      Run-time memory checks:11; CHECK-NEXT:      Grouped accesses:12; CHECK-EMPTY:13; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.14; CHECK-NEXT:      SCEV assumptions:15; CHECK-EMPTY:16; CHECK-NEXT:      Expressions re-written:17;18entry:19  br label %for.body20 21for.cond.cleanup:                                 ; preds = %for.body22  ret void23 24for.body:                                         ; preds = %entry, %for.body25  %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]26  %i.014 = phi i32 [ 0, %entry ], [ %add, %for.body ]27  %arrayidx = getelementptr inbounds i32, ptr %Preds, i64 %indvars.iv28  %0 = load i32, ptr %arrayidx, align 429  %cmp1.not = icmp eq i32 %0, 030  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 131  %add = add nuw nsw i32 %i.014, 132  %1 = trunc i64 %indvars.iv to i3233  %offset.0 = select i1 %cmp1.not, i32 %add, i32 %134  %idxprom213 = zext i32 %offset.0 to i6435  %arrayidx3 = getelementptr inbounds float, ptr %Base, i64 %idxprom21336  %2 = load float, ptr %arrayidx3, align 437  %arrayidx5 = getelementptr inbounds float, ptr %Dest, i64 %indvars.iv38  store float %2, ptr %arrayidx5, align 439  %exitcond.not = icmp eq i64 %indvars.iv.next, 10040  br i1 %exitcond.not, label %for.cond.cleanup, label %for.body41}42 43define void @laa_divergent_output(ptr %Base, ptr %Dest, ptr %Preds, i64 %extra_offset) {44; FULLDEPTH-LABEL: 'laa_divergent_output'45; FULLDEPTH-NEXT:    for.body:46; FULLDEPTH-NEXT:      Memory dependences are safe with run-time checks47; FULLDEPTH-NEXT:      Dependences:48; FULLDEPTH-NEXT:      Run-time memory checks:49; FULLDEPTH-NEXT:      Check 0:50; FULLDEPTH-NEXT:        Comparing group GRP0:51; FULLDEPTH-NEXT:          %arrayidx5 = getelementptr inbounds float, ptr %Dest, i64 %indvars.iv52; FULLDEPTH-NEXT:        Against group GRP1:53; FULLDEPTH-NEXT:          %arrayidx = getelementptr inbounds i32, ptr %Preds, i64 %indvars.iv54; FULLDEPTH-NEXT:      Check 1:55; FULLDEPTH-NEXT:        Comparing group GRP0:56; FULLDEPTH-NEXT:          %arrayidx5 = getelementptr inbounds float, ptr %Dest, i64 %indvars.iv57; FULLDEPTH-NEXT:        Against group GRP2:58; FULLDEPTH-NEXT:          %arrayidx3 = getelementptr inbounds float, ptr %Base, i64 %offset59; FULLDEPTH-NEXT:          %arrayidx3 = getelementptr inbounds float, ptr %Base, i64 %offset60; FULLDEPTH-NEXT:      Grouped accesses:61; FULLDEPTH-NEXT:        Group GRP0:62; FULLDEPTH-NEXT:          (Low: %Dest High: (400 + %Dest))63; FULLDEPTH-NEXT:            Member: {%Dest,+,4}<nuw><%for.body>64; FULLDEPTH-NEXT:        Group GRP1:65; FULLDEPTH-NEXT:          (Low: %Preds High: (400 + %Preds))66; FULLDEPTH-NEXT:            Member: {%Preds,+,4}<nuw><%for.body>67; FULLDEPTH-NEXT:        Group GRP2:68; FULLDEPTH-NEXT:          (Low: ((4 * %extra_offset) + %Base) High: (404 + (4 * %extra_offset) + %Base))69; FULLDEPTH-NEXT:            Member: {(4 + (4 * %extra_offset) + %Base),+,4}<%for.body>70; FULLDEPTH-NEXT:            Member: {((4 * %extra_offset) + %Base),+,4}<%for.body>71; FULLDEPTH-EMPTY:72; FULLDEPTH-NEXT:      Non vectorizable stores to invariant address were not found in loop.73; FULLDEPTH-NEXT:      SCEV assumptions:74; FULLDEPTH-EMPTY:75; FULLDEPTH-NEXT:      Expressions re-written:76;77; DEPTH2-LABEL: 'laa_divergent_output'78; DEPTH2-NEXT:    for.body:79; DEPTH2-NEXT:      Report: cannot identify array bounds80; DEPTH2-NEXT:      Dependences:81; DEPTH2-NEXT:      Run-time memory checks:82; DEPTH2-NEXT:      Grouped accesses:83; DEPTH2-EMPTY:84; DEPTH2-NEXT:      Non vectorizable stores to invariant address were not found in loop.85; DEPTH2-NEXT:      SCEV assumptions:86; DEPTH2-EMPTY:87; DEPTH2-NEXT:      Expressions re-written:88;89entry:90  br label %for.body91 92for.cond.cleanup:                                 ; preds = %for.body93  ret void94 95for.body:                                         ; preds = %entry, %for.body96  %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]97  %arrayidx = getelementptr inbounds i32, ptr %Preds, i64 %indvars.iv98  %0 = load i32, ptr %arrayidx, align 499  %cmp.not = icmp eq i32 %0, 0100  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1101  %sel = select i1 %cmp.not, i64 %indvars.iv.next, i64 %indvars.iv102  %offset = add nuw nsw i64 %sel, %extra_offset103  %arrayidx3 = getelementptr inbounds float, ptr %Base, i64 %offset104  %1 = load float, ptr %arrayidx3, align 4105  %arrayidx5 = getelementptr inbounds float, ptr %Dest, i64 %indvars.iv106  store float %1, ptr %arrayidx5, align 4107  %exitcond.not = icmp eq i64 %indvars.iv.next, 100108  br i1 %exitcond.not, label %for.cond.cleanup, label %for.body109}110