brintos

brintos / llvm-project-archived public Read only

0
0
Text · 21.7 KiB · 6fbe0e4 Raw
574 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 32; RUN: opt -passes='print<access-info><allow-partial>' -disable-output  < %s 2>&1 | FileCheck %s3 4%s1 = type { [32000 x double], [32000 x double], [32000 x double] }5 6define i32 @load_with_pointer_phi_no_runtime_checks(ptr %data) {7; CHECK-LABEL: 'load_with_pointer_phi_no_runtime_checks'8; CHECK-NEXT:    loop.header:9; CHECK-NEXT:      Memory dependences are safe10; CHECK-NEXT:      Dependences:11; CHECK-NEXT:      Run-time memory checks:12; CHECK-NEXT:      Grouped accesses:13; CHECK-EMPTY:14; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.15; CHECK-NEXT:      SCEV assumptions:16; CHECK-EMPTY:17; CHECK-NEXT:      Expressions re-written:18;19entry:20  br label %loop.header21 22loop.header:                                        ; preds = %loop.latch, %entry23  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop.latch ]24  %iv.next = add nuw nsw i64 %iv, 125  %cmp5 = icmp ult i64 %iv, 1599926  %arrayidx = getelementptr inbounds %s1, ptr %data, i64 0, i32 0, i64 %iv27  br i1 %cmp5, label %if.then, label %if.else28 29if.then:                                          ; preds = %loop.header30  %gep.1 = getelementptr inbounds %s1, ptr %data, i64 0, i32 1, i64 %iv31  br label %loop.latch32 33if.else:                                          ; preds = %loop.header34  %gep.2 = getelementptr inbounds %s1, ptr %data, i64 0, i32 2, i64 %iv35  br label %loop.latch36 37loop.latch:                                          ; preds = %if.else, %if.then38  %gep.2.sink = phi ptr [ %gep.2, %if.else ], [ %gep.1, %if.then ]39  %v8 = load double, ptr %gep.2.sink, align 840  %mul16 = fmul double 3.0, %v841  store double %mul16, ptr %arrayidx, align 842  %exitcond.not = icmp eq i64 %iv.next, 3200043  br i1 %exitcond.not, label %exit, label %loop.header44 45exit:                                             ; preds = %loop.latch46  ret i32 1047}48 49define i32 @store_with_pointer_phi_no_runtime_checks(ptr %data) {50; CHECK-LABEL: 'store_with_pointer_phi_no_runtime_checks'51; CHECK-NEXT:    loop.header:52; CHECK-NEXT:      Memory dependences are safe53; CHECK-NEXT:      Dependences:54; CHECK-NEXT:      Run-time memory checks:55; CHECK-NEXT:      Grouped accesses:56; CHECK-EMPTY:57; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.58; CHECK-NEXT:      SCEV assumptions:59; CHECK-EMPTY:60; CHECK-NEXT:      Expressions re-written:61;62entry:63  br label %loop.header64 65loop.header:                                        ; preds = %loop.latch, %entry66  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop.latch ]67  %iv.next = add nuw nsw i64 %iv, 168  %cmp5 = icmp ult i64 %iv, 1599969  %arrayidx = getelementptr inbounds %s1, ptr %data, i64 0, i32 0, i64 %iv70  br i1 %cmp5, label %if.then, label %if.else71 72if.then:                                          ; preds = %loop.header73  %gep.1 = getelementptr inbounds %s1, ptr %data, i64 0, i32 1, i64 %iv74  br label %loop.latch75 76if.else:                                          ; preds = %loop.header77  %gep.2 = getelementptr inbounds %s1, ptr %data, i64 0, i32 2, i64 %iv78  br label %loop.latch79 80loop.latch:                                          ; preds = %if.else, %if.then81  %gep.2.sink = phi ptr [ %gep.2, %if.else ], [ %gep.1, %if.then ]82  %v8 = load double, ptr %arrayidx, align 883  %mul16 = fmul double 3.0, %v884  store double %mul16, ptr %gep.2.sink, align 885  %exitcond.not = icmp eq i64 %iv.next, 3200086  br i1 %exitcond.not, label %exit, label %loop.header87 88exit:                                             ; preds = %loop.latch89  ret i32 1090}91 92define i32 @store_with_pointer_phi_runtime_checks(ptr %A, ptr %B, ptr %C) {93; CHECK-LABEL: 'store_with_pointer_phi_runtime_checks'94; CHECK-NEXT:    loop.header:95; CHECK-NEXT:      Memory dependences are safe with run-time checks96; CHECK-NEXT:      Dependences:97; CHECK-NEXT:      Run-time memory checks:98; CHECK-NEXT:      Check 0:99; CHECK-NEXT:        Comparing group GRP0:100; CHECK-NEXT:          %gep.1 = getelementptr inbounds double, ptr %B, i64 %iv101; CHECK-NEXT:        Against group GRP1:102; CHECK-NEXT:          %gep.2 = getelementptr inbounds double, ptr %C, i64 %iv103; CHECK-NEXT:      Check 1:104; CHECK-NEXT:        Comparing group GRP0:105; CHECK-NEXT:          %gep.1 = getelementptr inbounds double, ptr %B, i64 %iv106; CHECK-NEXT:        Against group GRP2:107; CHECK-NEXT:          %arrayidx = getelementptr inbounds double, ptr %A, i64 %iv108; CHECK-NEXT:      Check 2:109; CHECK-NEXT:        Comparing group GRP1:110; CHECK-NEXT:          %gep.2 = getelementptr inbounds double, ptr %C, i64 %iv111; CHECK-NEXT:        Against group GRP2:112; CHECK-NEXT:          %arrayidx = getelementptr inbounds double, ptr %A, i64 %iv113; CHECK-NEXT:      Grouped accesses:114; CHECK-NEXT:        Group GRP0:115; CHECK-NEXT:          (Low: %B High: (256000 + %B))116; CHECK-NEXT:            Member: {%B,+,8}<nw><%loop.header>117; CHECK-NEXT:        Group GRP1:118; CHECK-NEXT:          (Low: %C High: (256000 + %C))119; CHECK-NEXT:            Member: {%C,+,8}<nw><%loop.header>120; CHECK-NEXT:        Group GRP2:121; CHECK-NEXT:          (Low: %A High: (256000 + %A))122; CHECK-NEXT:            Member: {%A,+,8}<nw><%loop.header>123; CHECK-EMPTY:124; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.125; CHECK-NEXT:      SCEV assumptions:126; CHECK-EMPTY:127; CHECK-NEXT:      Expressions re-written:128;129entry:130  br label %loop.header131 132loop.header:                                        ; preds = %loop.latch, %entry133  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop.latch ]134  %iv.next = add nuw nsw i64 %iv, 1135  %cmp5 = icmp ult i64 %iv, 15999136  %arrayidx = getelementptr inbounds double, ptr %A, i64 %iv137  br i1 %cmp5, label %if.then, label %if.else138 139if.then:                                          ; preds = %loop.header140  %gep.1 = getelementptr inbounds double, ptr %B, i64 %iv141  br label %loop.latch142 143if.else:                                          ; preds = %loop.header144  %gep.2 = getelementptr inbounds double, ptr %C, i64 %iv145  br label %loop.latch146 147loop.latch:                                          ; preds = %if.else, %if.then148  %gep.2.sink = phi ptr [ %gep.2, %if.else ], [ %gep.1, %if.then ]149  %v8 = load double, ptr %arrayidx, align 8150  %mul16 = fmul double 3.0, %v8151  store double %mul16, ptr %gep.2.sink, align 8152  %exitcond.not = icmp eq i64 %iv.next, 32000153  br i1 %exitcond.not, label %exit, label %loop.header154 155exit:                                             ; preds = %loop.latch156  ret i32 10157}158 159define i32 @load_with_pointer_phi_outside_loop(ptr %A, ptr %B, ptr %C, i1 %c.0, i1 %c.1) {160; CHECK-LABEL: 'load_with_pointer_phi_outside_loop'161; CHECK-NEXT:    loop.header:162; CHECK-NEXT:      Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop163; CHECK-NEXT:  Unknown data dependence.164; CHECK-NEXT:      Dependences:165; CHECK-NEXT:        Unknown:166; CHECK-NEXT:            %v8 = load double, ptr %ptr, align 8 ->167; CHECK-NEXT:            store double %mul16, ptr %arrayidx, align 8168; CHECK-EMPTY:169; CHECK-NEXT:      Run-time memory checks:170; CHECK-NEXT:      Grouped accesses:171; CHECK-EMPTY:172; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.173; CHECK-NEXT:      SCEV assumptions:174; CHECK-EMPTY:175; CHECK-NEXT:      Expressions re-written:176;177entry:178  br i1 %c.0, label %if.then, label %if.else179 180if.then:181  br label %loop.ph182 183if.else:184  %ptr.select = select i1 %c.1, ptr %C, ptr %B185  br label %loop.ph186 187loop.ph:188  %ptr = phi ptr [ %A, %if.then ], [ %ptr.select, %if.else ]189  br label %loop.header190 191loop.header:                                        ; preds = %loop.latch, %entry192  %iv = phi i64 [ 0, %loop.ph ], [ %iv.next, %loop.header ]193  %iv.next = add nuw nsw i64 %iv, 1194  %arrayidx = getelementptr inbounds double, ptr %A, i64 %iv195  %v8 = load double, ptr %ptr, align 8196  %mul16 = fmul double 3.0, %v8197  store double %mul16, ptr %arrayidx, align 8198  %exitcond.not = icmp eq i64 %iv.next, 32000199  br i1 %exitcond.not, label %exit, label %loop.header200 201exit:                                             ; preds = %loop.latch202  ret i32 10203}204 205define i32 @store_with_pointer_phi_outside_loop(ptr %A, ptr %B, ptr %C, i1 %c.0, i1 %c.1) {206; CHECK-LABEL: 'store_with_pointer_phi_outside_loop'207; CHECK-NEXT:    loop.header:208; CHECK-NEXT:      Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop209; CHECK-NEXT:  Unknown data dependence.210; CHECK-NEXT:      Dependences:211; CHECK-NEXT:        Unknown:212; CHECK-NEXT:            %v8 = load double, ptr %arrayidx, align 8 ->213; CHECK-NEXT:            store double %mul16, ptr %ptr, align 8214; CHECK-EMPTY:215; CHECK-NEXT:      Run-time memory checks:216; CHECK-NEXT:      Grouped accesses:217; CHECK-EMPTY:218; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.219; CHECK-NEXT:      SCEV assumptions:220; CHECK-EMPTY:221; CHECK-NEXT:      Expressions re-written:222;223entry:224  br i1 %c.0, label %if.then, label %if.else225 226if.then:227  br label %loop.ph228 229if.else:230  %ptr.select = select i1 %c.1, ptr %C, ptr %B231  br label %loop.ph232 233loop.ph:234  %ptr = phi ptr [ %A, %if.then ], [ %ptr.select, %if.else ]235  br label %loop.header236 237loop.header:                                        ; preds = %loop.latch, %entry238  %iv = phi i64 [ 0, %loop.ph ], [ %iv.next, %loop.header ]239  %iv.next = add nuw nsw i64 %iv, 1240  %arrayidx = getelementptr inbounds double, ptr %A, i64 %iv241  %v8 = load double, ptr %arrayidx, align 8242  %mul16 = fmul double 3.0, %v8243  store double %mul16, ptr %ptr, align 8244  %exitcond.not = icmp eq i64 %iv.next, 32000245  br i1 %exitcond.not, label %exit, label %loop.header246 247exit:                                             ; preds = %loop.latch248  ret i32 10249}250 251define i32 @store_with_pointer_phi_incoming_phi(ptr %A, ptr %B, ptr %C, i1 %c.0, i1 %c.1) {252; CHECK-LABEL: 'store_with_pointer_phi_incoming_phi'253; CHECK-NEXT:    loop.header:254; CHECK-NEXT:      Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop255; CHECK-NEXT:  Unknown data dependence.256; CHECK-NEXT:      Dependences:257; CHECK-NEXT:        Unknown:258; CHECK-NEXT:            %v8 = load double, ptr %arrayidx, align 8 ->259; CHECK-NEXT:            store double %mul16, ptr %ptr.2, align 8260; CHECK-EMPTY:261; CHECK-NEXT:      Run-time memory checks:262; CHECK-NEXT:      Check 0:263; CHECK-NEXT:        Comparing group GRP0:264; CHECK-NEXT:        ptr %C265; CHECK-NEXT:        Against group GRP1:266; CHECK-NEXT:        ptr %B267; CHECK-NEXT:      Check 1:268; CHECK-NEXT:        Comparing group GRP0:269; CHECK-NEXT:        ptr %C270; CHECK-NEXT:        Against group GRP2:271; CHECK-NEXT:          %arrayidx = getelementptr inbounds double, ptr %A, i64 %iv272; CHECK-NEXT:        ptr %A273; CHECK-NEXT:      Check 2:274; CHECK-NEXT:        Comparing group GRP1:275; CHECK-NEXT:        ptr %B276; CHECK-NEXT:        Against group GRP2:277; CHECK-NEXT:          %arrayidx = getelementptr inbounds double, ptr %A, i64 %iv278; CHECK-NEXT:        ptr %A279; CHECK-NEXT:      Grouped accesses:280; CHECK-NEXT:        Group GRP0:281; CHECK-NEXT:          (Low: %C High: (8 + %C))282; CHECK-NEXT:            Member: %C283; CHECK-NEXT:        Group GRP1:284; CHECK-NEXT:          (Low: %B High: (8 + %B))285; CHECK-NEXT:            Member: %B286; CHECK-NEXT:        Group GRP2:287; CHECK-NEXT:          (Low: %A High: (256000 + %A))288; CHECK-NEXT:            Member: {%A,+,8}<nuw><%loop.header>289; CHECK-NEXT:            Member: %A290; CHECK-EMPTY:291; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.292; CHECK-NEXT:      SCEV assumptions:293; CHECK-EMPTY:294; CHECK-NEXT:      Expressions re-written:295;296; CHECK-EMPTY297entry:298  br label %loop.header299 300loop.header:                                        ; preds = %loop.latch, %entry301  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop.latch ]302  %iv.next = add nuw nsw i64 %iv, 1303  %arrayidx = getelementptr inbounds double, ptr %A, i64 %iv304  %v8 = load double, ptr %arrayidx, align 8305  %mul16 = fmul double 3.0, %v8306  br i1 %c.0, label %loop.then, label %loop.latch307 308loop.then:309  br i1 %c.0, label %loop.then.2, label %loop.else.2310 311loop.then.2:312  br label %merge.2313 314loop.else.2:315  br label %merge.2316 317 318merge.2:319  %ptr = phi ptr [ %A, %loop.then.2 ], [ %B, %loop.else.2 ]320  br label %loop.latch321 322 323loop.latch:324  %ptr.2 = phi ptr [ %ptr, %merge.2], [ %C, %loop.header ]325  store double %mul16, ptr %ptr.2, align 8326  %exitcond.not = icmp eq i64 %iv.next, 32000327  br i1 %exitcond.not, label %exit, label %loop.header328 329exit:                                             ; preds = %loop.latch330  ret i32 10331}332 333; Test cases with pointer phis forming a cycle.334define i32 @store_with_pointer_phi_incoming_phi_irreducible_cycle(ptr %A, ptr %B, ptr %C, i1 %c.0, i1 %c.1) {335; CHECK-LABEL: 'store_with_pointer_phi_incoming_phi_irreducible_cycle'336; CHECK-NEXT:    loop.header:337; CHECK-NEXT:      Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop338; CHECK-NEXT:  Unknown data dependence.339; CHECK-NEXT:      Dependences:340; CHECK-NEXT:        Unknown:341; CHECK-NEXT:            %v8 = load double, ptr %arrayidx, align 8 ->342; CHECK-NEXT:            store double %mul16, ptr %ptr.3, align 8343; CHECK-EMPTY:344; CHECK-NEXT:      Run-time memory checks:345; CHECK-NEXT:      Check 0:346; CHECK-NEXT:        Comparing group GRP0:347; CHECK-NEXT:        ptr %C348; CHECK-NEXT:        Against group GRP1:349; CHECK-NEXT:        ptr %B350; CHECK-NEXT:      Check 1:351; CHECK-NEXT:        Comparing group GRP0:352; CHECK-NEXT:        ptr %C353; CHECK-NEXT:        Against group GRP2:354; CHECK-NEXT:          %arrayidx = getelementptr inbounds double, ptr %A, i64 %iv355; CHECK-NEXT:        ptr %A356; CHECK-NEXT:      Check 2:357; CHECK-NEXT:        Comparing group GRP1:358; CHECK-NEXT:        ptr %B359; CHECK-NEXT:        Against group GRP2:360; CHECK-NEXT:          %arrayidx = getelementptr inbounds double, ptr %A, i64 %iv361; CHECK-NEXT:        ptr %A362; CHECK-NEXT:      Grouped accesses:363; CHECK-NEXT:        Group GRP0:364; CHECK-NEXT:          (Low: %C High: (8 + %C))365; CHECK-NEXT:            Member: %C366; CHECK-NEXT:        Group GRP1:367; CHECK-NEXT:          (Low: %B High: (8 + %B))368; CHECK-NEXT:            Member: %B369; CHECK-NEXT:        Group GRP2:370; CHECK-NEXT:          (Low: %A High: (256000 + %A))371; CHECK-NEXT:            Member: {%A,+,8}<nuw><%loop.header>372; CHECK-NEXT:            Member: %A373; CHECK-EMPTY:374; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.375; CHECK-NEXT:      SCEV assumptions:376; CHECK-EMPTY:377; CHECK-NEXT:      Expressions re-written:378;379; CHECK-EMPTY380entry:381  br label %loop.header382 383loop.header:                                        ; preds = %loop.latch, %entry384  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop.latch ]385  %iv.next = add nuw nsw i64 %iv, 1386  %arrayidx = getelementptr inbounds double, ptr %A, i64 %iv387  %v8 = load double, ptr %arrayidx, align 8388  %mul16 = fmul double 3.0, %v8389  br i1 %c.0, label %loop.then, label %loop.latch390 391loop.then:392  br i1 %c.0, label %BB.A, label %BB.B393 394BB.A:395  %ptr = phi ptr [ %A, %loop.then ], [ %ptr.2, %BB.B ]396  br label %BB.B397 398BB.B:399  %ptr.2 = phi ptr [ %ptr, %BB.A ], [ %B, %loop.then ]400  br i1 %c.1, label %loop.latch, label %BB.A401 402loop.latch:403  %ptr.3 = phi ptr [ %ptr.2, %BB.B ], [ %C, %loop.header ]404  store double %mul16, ptr %ptr.3, align 8405  %exitcond.not = icmp eq i64 %iv.next, 32000406  br i1 %exitcond.not, label %exit, label %loop.header407 408exit:                                             ; preds = %loop.latch409  ret i32 10410}411 412define i32 @store_with_pointer_phi_outside_loop_select(ptr %A, ptr %B, ptr %C, i1 %c.0, i1 %c.1) {413; CHECK-LABEL: 'store_with_pointer_phi_outside_loop_select'414; CHECK-NEXT:    loop.header:415; CHECK-NEXT:      Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop416; CHECK-NEXT:  Unknown data dependence.417; CHECK-NEXT:      Dependences:418; CHECK-NEXT:        Unknown:419; CHECK-NEXT:            %v8 = load double, ptr %arrayidx, align 8 ->420; CHECK-NEXT:            store double %mul16, ptr %ptr, align 8421; CHECK-EMPTY:422; CHECK-NEXT:      Run-time memory checks:423; CHECK-NEXT:      Grouped accesses:424; CHECK-EMPTY:425; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.426; CHECK-NEXT:      SCEV assumptions:427; CHECK-EMPTY:428; CHECK-NEXT:      Expressions re-written:429;430entry:431  br i1 %c.0, label %if.then, label %if.else432 433if.then:434  br label %loop.ph435 436if.else:437  %ptr.select = select i1 %c.1, ptr %C, ptr %B438  br label %loop.ph439 440loop.ph:441  %ptr = phi ptr [ %A, %if.then ], [ %ptr.select, %if.else ]442  br label %loop.header443 444loop.header:                                        ; preds = %loop.latch, %entry445  %iv = phi i64 [ 0, %loop.ph ], [ %iv.next, %loop.header ]446  %iv.next = add nuw nsw i64 %iv, 1447  %arrayidx = getelementptr inbounds double, ptr %A, i64 %iv448  %v8 = load double, ptr %arrayidx, align 8449  %mul16 = fmul double 3.0, %v8450  store double %mul16, ptr %ptr, align 8451  %exitcond.not = icmp eq i64 %iv.next, 32000452  br i1 %exitcond.not, label %exit, label %loop.header453 454exit:                                             ; preds = %loop.latch455  ret i32 10456}457 458define i32 @store_with_pointer_phi_in_same_bb_use_other_phi(ptr %A, ptr %B, ptr %C, ptr %D, i1 %c.0, i1 %c.1) {459; CHECK-LABEL: 'store_with_pointer_phi_in_same_bb_use_other_phi'460; CHECK-NEXT:    loop.header:461; CHECK-NEXT:      Report: cannot identify array bounds462; CHECK-NEXT:      Dependences:463; CHECK-NEXT:      Run-time memory checks:464; CHECK-NEXT:      Grouped accesses:465; CHECK-NEXT:        Group GRP0:466; CHECK-NEXT:          (Low: %A High: (256000 + %A))467; CHECK-NEXT:            Member: {%A,+,8}<nuw><%loop.header>468; CHECK-NEXT:      Generated run-time checks are incomplete469; CHECK-EMPTY:470; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.471; CHECK-NEXT:      SCEV assumptions:472; CHECK-EMPTY:473; CHECK-NEXT:      Expressions re-written:474;475entry:476  br label %loop.header477 478loop.header:                                        ; preds = %loop.latch, %entry479  %ptr.0 = phi ptr [ %C, %entry ], [ %D, %loop.header ]480  %ptr.1 = phi ptr [ %B, %entry ], [ %ptr.0, %loop.header ]481  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop.header ]482  %iv.next = add nuw nsw i64 %iv, 1483  %arrayidx = getelementptr inbounds double, ptr %A, i64 %iv484  %v8 = load double, ptr %arrayidx, align 8485  %mul16 = fmul double 3.0, %v8486  store double %mul16, ptr %ptr.1, align 8487  %exitcond.not = icmp eq i64 %iv.next, 32000488  br i1 %exitcond.not, label %exit, label %loop.header489 490exit:                                             ; preds = %loop.latch491  ret i32 10492}493 494define void @phi_load_store_memdep_check(i1 %c, ptr %A, ptr %B, ptr %C) {495; CHECK-LABEL: 'phi_load_store_memdep_check'496; CHECK-NEXT:    for.body:497; CHECK-NEXT:      Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop498; CHECK-NEXT:  Unknown data dependence.499; CHECK-NEXT:      Dependences:500; CHECK-NEXT:        Unknown:501; CHECK-NEXT:            %lv3 = load i16, ptr %c.sink, align 2 ->502; CHECK-NEXT:            store i16 %add, ptr %c.sink, align 1503; CHECK-EMPTY:504; CHECK-NEXT:        Unknown:505; CHECK-NEXT:            %lv3 = load i16, ptr %c.sink, align 2 ->506; CHECK-NEXT:            store i16 %add, ptr %c.sink, align 1507; CHECK-EMPTY:508; CHECK-NEXT:      Run-time memory checks:509; CHECK-NEXT:      Check 0:510; CHECK-NEXT:        Comparing group GRP0:511; CHECK-NEXT:        ptr %A512; CHECK-NEXT:        ptr %A513; CHECK-NEXT:        Against group GRP1:514; CHECK-NEXT:        ptr %C515; CHECK-NEXT:        ptr %C516; CHECK-NEXT:      Check 1:517; CHECK-NEXT:        Comparing group GRP0:518; CHECK-NEXT:        ptr %A519; CHECK-NEXT:        ptr %A520; CHECK-NEXT:        Against group GRP2:521; CHECK-NEXT:        ptr %B522; CHECK-NEXT:        ptr %B523; CHECK-NEXT:      Check 2:524; CHECK-NEXT:        Comparing group GRP1:525; CHECK-NEXT:        ptr %C526; CHECK-NEXT:        ptr %C527; CHECK-NEXT:        Against group GRP2:528; CHECK-NEXT:        ptr %B529; CHECK-NEXT:        ptr %B530; CHECK-NEXT:      Grouped accesses:531; CHECK-NEXT:        Group GRP0:532; CHECK-NEXT:          (Low: %A High: (2 + %A))533; CHECK-NEXT:            Member: %A534; CHECK-NEXT:            Member: %A535; CHECK-NEXT:        Group GRP1:536; CHECK-NEXT:          (Low: %C High: (2 + %C))537; CHECK-NEXT:            Member: %C538; CHECK-NEXT:            Member: %C539; CHECK-NEXT:        Group GRP2:540; CHECK-NEXT:          (Low: %B High: (2 + %B))541; CHECK-NEXT:            Member: %B542; CHECK-NEXT:            Member: %B543; CHECK-EMPTY:544; CHECK-NEXT:      Non vectorizable stores to invariant address were found in loop.545; CHECK-NEXT:      SCEV assumptions:546; CHECK-EMPTY:547; CHECK-NEXT:      Expressions re-written:548;549entry:550  br label %for.body551 552for.body:                                         ; preds = %if.end, %entry553  %iv = phi i16 [ 0, %entry ], [ %iv.next, %if.end ]554  %lv = load i16, ptr %A, align 1555  store i16 %lv, ptr %A, align 1556  br i1 %c, label %if.then, label %if.end557 558if.then:                                          ; preds = %for.body559  %lv2 = load i16, ptr %A, align 1560  br label %if.end561 562if.end:                                           ; preds = %if.then, %for.body563  %c.sink = phi ptr [ %B, %if.then ], [ %C, %for.body ]564  %lv3 = load i16, ptr %c.sink565  %add = add i16 %lv3, 10566  store i16 %add, ptr %c.sink, align 1567  %iv.next = add nuw nsw i16 %iv, 1568  %tobool.not = icmp eq i16 %iv.next, 1000569  br i1 %tobool.not, label %for.end.loopexit, label %for.body570 571for.end.loopexit:                                 ; preds = %if.end572  ret void573}574