97 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 52; RUN: opt -passes='print<access-info>' -disable-output %s 2>&1 | FileCheck --check-prefix=DEFAULT %s3; RUN: opt -passes='print<access-info>' -disable-output -max-dependences=5 %s 2>&1 | FileCheck --check-prefix=MAXDEP5 %s4 5define void @dependences_with_strides(ptr %dst, i64 %stride) {6; DEFAULT-LABEL: 'dependences_with_strides'7; DEFAULT-NEXT: loop:8; DEFAULT-NEXT: Memory dependences are safe with run-time checks9; DEFAULT-NEXT: Dependences:10; DEFAULT-NEXT: Run-time memory checks:11; DEFAULT-NEXT: Check 0:12; DEFAULT-NEXT: Comparing group GRP0:13; DEFAULT-NEXT: %ptr.iv = phi ptr [ %dst, %entry ], [ %ptr.iv.next, %loop ]14; DEFAULT-NEXT: Against group GRP1:15; DEFAULT-NEXT: %gep.stride = getelementptr i16, ptr %ptr.iv, i64 %stride16; DEFAULT-NEXT: Check 1:17; DEFAULT-NEXT: Comparing group GRP0:18; DEFAULT-NEXT: %ptr.iv = phi ptr [ %dst, %entry ], [ %ptr.iv.next, %loop ]19; DEFAULT-NEXT: Against group GRP2:20; DEFAULT-NEXT: ptr %dst21; DEFAULT-NEXT: Check 2:22; DEFAULT-NEXT: Comparing group GRP1:23; DEFAULT-NEXT: %gep.stride = getelementptr i16, ptr %ptr.iv, i64 %stride24; DEFAULT-NEXT: Against group GRP2:25; DEFAULT-NEXT: ptr %dst26; DEFAULT-NEXT: Grouped accesses:27; DEFAULT-NEXT: Group GRP0:28; DEFAULT-NEXT: (Low: %dst High: (4 + %dst))29; DEFAULT-NEXT: Member: {%dst,+,2}<nw><%loop>30; DEFAULT-NEXT: Group GRP1:31; DEFAULT-NEXT: (Low: ((2 * %stride) + %dst) High: (4 + (2 * %stride) + %dst))32; DEFAULT-NEXT: Member: {((2 * %stride) + %dst),+,2}<nw><%loop>33; DEFAULT-NEXT: Group GRP2:34; DEFAULT-NEXT: (Low: %dst High: (2 + %dst))35; DEFAULT-NEXT: Member: %dst36; DEFAULT-EMPTY:37; DEFAULT-NEXT: Non vectorizable stores to invariant address were not found in loop.38; DEFAULT-NEXT: SCEV assumptions:39; DEFAULT-EMPTY:40; DEFAULT-NEXT: Expressions re-written:41;42; MAXDEP5-LABEL: 'dependences_with_strides'43; MAXDEP5-NEXT: loop:44; MAXDEP5-NEXT: Memory dependences are safe with run-time checks45; MAXDEP5-NEXT: Too many dependences, not recorded46; MAXDEP5-NEXT: Run-time memory checks:47; MAXDEP5-NEXT: Check 0:48; MAXDEP5-NEXT: Comparing group GRP0:49; MAXDEP5-NEXT: %ptr.iv = phi ptr [ %dst, %entry ], [ %ptr.iv.next, %loop ]50; MAXDEP5-NEXT: Against group GRP1:51; MAXDEP5-NEXT: %gep.stride = getelementptr i16, ptr %ptr.iv, i64 %stride52; MAXDEP5-NEXT: Check 1:53; MAXDEP5-NEXT: Comparing group GRP0:54; MAXDEP5-NEXT: %ptr.iv = phi ptr [ %dst, %entry ], [ %ptr.iv.next, %loop ]55; MAXDEP5-NEXT: Against group GRP2:56; MAXDEP5-NEXT: ptr %dst57; MAXDEP5-NEXT: Check 2:58; MAXDEP5-NEXT: Comparing group GRP1:59; MAXDEP5-NEXT: %gep.stride = getelementptr i16, ptr %ptr.iv, i64 %stride60; MAXDEP5-NEXT: Against group GRP2:61; MAXDEP5-NEXT: ptr %dst62; MAXDEP5-NEXT: Grouped accesses:63; MAXDEP5-NEXT: Group GRP0:64; MAXDEP5-NEXT: (Low: %dst High: (4 + %dst))65; MAXDEP5-NEXT: Member: {%dst,+,2}<nw><%loop>66; MAXDEP5-NEXT: Group GRP1:67; MAXDEP5-NEXT: (Low: ((2 * %stride) + %dst) High: (4 + (2 * %stride) + %dst))68; MAXDEP5-NEXT: Member: {((2 * %stride) + %dst),+,2}<nw><%loop>69; MAXDEP5-NEXT: Group GRP2:70; MAXDEP5-NEXT: (Low: %dst High: (2 + %dst))71; MAXDEP5-NEXT: Member: %dst72; MAXDEP5-EMPTY:73; MAXDEP5-NEXT: Non vectorizable stores to invariant address were not found in loop.74; MAXDEP5-NEXT: SCEV assumptions:75; MAXDEP5-EMPTY:76; MAXDEP5-NEXT: Expressions re-written:77;78entry:79 br label %loop80 81loop:82 %iv = phi i32 [ 0, %entry ], [ %iv.next, %loop ]83 %ptr.iv = phi ptr [ %dst, %entry ], [ %ptr.iv.next, %loop ]84 store i16 0, ptr %ptr.iv, align 285 %gep.stride = getelementptr i16, ptr %ptr.iv, i64 %stride86 store i16 0, ptr %gep.stride, align 287 store i16 0, ptr %dst, align 288 store i16 0, ptr %ptr.iv, align 289 %ptr.iv.next = getelementptr i8, ptr %ptr.iv, i64 290 %iv.next = add i32 %iv, 191 %exitcond.not = icmp eq i32 %iv, 192 br i1 %exitcond.not, label %exit, label %loop93 94exit:95 ret void96}97