brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.8 KiB · d1d1ecb Raw
259 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><allow-partial>' -disable-output %s 2>&1 | FileCheck %s3 4 5define void @dependency_check_and_runtime_checks_needed_select_of_invariant_ptrs(ptr %a, ptr %b, ptr %c, i64 %offset, i64 %n) {6; CHECK-LABEL: 'dependency_check_and_runtime_checks_needed_select_of_invariant_ptrs'7; CHECK-NEXT:    loop:8; CHECK-NEXT:      Memory dependences are safe with run-time checks9; CHECK-NEXT:      Dependences:10; CHECK-NEXT:      Run-time memory checks:11; CHECK-NEXT:      Check 0:12; CHECK-NEXT:        Comparing group GRP0:13; CHECK-NEXT:          %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv14; CHECK-NEXT:        Against group GRP1:15; CHECK-NEXT:          %select = select i1 %cmp, ptr %b, ptr %c16; CHECK-NEXT:      Check 1:17; CHECK-NEXT:        Comparing group GRP0:18; CHECK-NEXT:          %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv19; CHECK-NEXT:        Against group GRP2:20; CHECK-NEXT:          %select = select i1 %cmp, ptr %b, ptr %c21; CHECK-NEXT:      Check 2:22; CHECK-NEXT:        Comparing group GRP0:23; CHECK-NEXT:          %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv24; CHECK-NEXT:        Against group GRP3:25; CHECK-NEXT:          %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset26; CHECK-NEXT:      Check 3:27; CHECK-NEXT:        Comparing group GRP1:28; CHECK-NEXT:          %select = select i1 %cmp, ptr %b, ptr %c29; CHECK-NEXT:        Against group GRP2:30; CHECK-NEXT:          %select = select i1 %cmp, ptr %b, ptr %c31; CHECK-NEXT:      Check 4:32; CHECK-NEXT:        Comparing group GRP1:33; CHECK-NEXT:          %select = select i1 %cmp, ptr %b, ptr %c34; CHECK-NEXT:        Against group GRP3:35; CHECK-NEXT:          %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset36; CHECK-NEXT:      Check 5:37; CHECK-NEXT:        Comparing group GRP2:38; CHECK-NEXT:          %select = select i1 %cmp, ptr %b, ptr %c39; CHECK-NEXT:        Against group GRP3:40; CHECK-NEXT:          %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset41; CHECK-NEXT:      Grouped accesses:42; CHECK-NEXT:        Group GRP0:43; CHECK-NEXT:          (Low: %a High: ((4 * %n) + %a))44; CHECK-NEXT:            Member: {%a,+,4}<nuw><%loop>45; CHECK-NEXT:        Group GRP1:46; CHECK-NEXT:          (Low: %b High: (4 + %b))47; CHECK-NEXT:            Member: %b48; CHECK-NEXT:        Group GRP2:49; CHECK-NEXT:          (Low: %c High: (4 + %c))50; CHECK-NEXT:            Member: %c51; CHECK-NEXT:        Group GRP3:52; CHECK-NEXT:          (Low: ((4 * %offset) + %a) High: ((4 * %offset) + (4 * %n) + %a))53; CHECK-NEXT:            Member: {((4 * %offset) + %a),+,4}<%loop>54; CHECK-EMPTY:55; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.56; CHECK-NEXT:      SCEV assumptions:57; CHECK-EMPTY:58; CHECK-NEXT:      Expressions re-written:59;60entry:61  br label %loop62 63loop:64  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]65  %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv66  %l1 = load float, ptr %gep.a.iv, align 467  %iv.offset = add i64 %iv, %offset68  %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset69  %l2 = load float, ptr %gep.a.iv.off, align 470  %ad = fadd fast float %l1, %l271  store float %ad, ptr %gep.a.iv, align 472  %cmp = fcmp ult float %l1, 10.073  %select = select i1 %cmp, ptr %b, ptr %c74  store float 0.0, ptr %select75  %iv.next = add nuw nsw i64 %iv, 176  %exitcond = icmp eq i64 %iv.next, %n77  br i1 %exitcond, label %exit, label %loop78 79exit:80  ret void81}82 83define void @dependency_check_and_runtime_checks_needed_select_of_ptr_add_recs(ptr %a, ptr %b, ptr %c, i64 %offset, i64 %n) {84; CHECK-LABEL: 'dependency_check_and_runtime_checks_needed_select_of_ptr_add_recs'85; CHECK-NEXT:    loop:86; CHECK-NEXT:      Memory dependences are safe with run-time checks87; CHECK-NEXT:      Dependences:88; CHECK-NEXT:      Run-time memory checks:89; CHECK-NEXT:      Check 0:90; CHECK-NEXT:        Comparing group GRP0:91; CHECK-NEXT:          %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv92; CHECK-NEXT:        Against group GRP1:93; CHECK-NEXT:          %select = select i1 %cmp, ptr %gep.b, ptr %gep.c94; CHECK-NEXT:      Check 1:95; CHECK-NEXT:        Comparing group GRP0:96; CHECK-NEXT:          %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv97; CHECK-NEXT:        Against group GRP2:98; CHECK-NEXT:          %select = select i1 %cmp, ptr %gep.b, ptr %gep.c99; CHECK-NEXT:      Check 2:100; CHECK-NEXT:        Comparing group GRP0:101; CHECK-NEXT:          %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv102; CHECK-NEXT:        Against group GRP3:103; CHECK-NEXT:          %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset104; CHECK-NEXT:      Check 3:105; CHECK-NEXT:        Comparing group GRP1:106; CHECK-NEXT:          %select = select i1 %cmp, ptr %gep.b, ptr %gep.c107; CHECK-NEXT:        Against group GRP2:108; CHECK-NEXT:          %select = select i1 %cmp, ptr %gep.b, ptr %gep.c109; CHECK-NEXT:      Check 4:110; CHECK-NEXT:        Comparing group GRP1:111; CHECK-NEXT:          %select = select i1 %cmp, ptr %gep.b, ptr %gep.c112; CHECK-NEXT:        Against group GRP3:113; CHECK-NEXT:          %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset114; CHECK-NEXT:      Check 5:115; CHECK-NEXT:        Comparing group GRP2:116; CHECK-NEXT:          %select = select i1 %cmp, ptr %gep.b, ptr %gep.c117; CHECK-NEXT:        Against group GRP3:118; CHECK-NEXT:          %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset119; CHECK-NEXT:      Grouped accesses:120; CHECK-NEXT:        Group GRP0:121; CHECK-NEXT:          (Low: %a High: ((4 * %n) + %a))122; CHECK-NEXT:            Member: {%a,+,4}<nuw><%loop>123; CHECK-NEXT:        Group GRP1:124; CHECK-NEXT:          (Low: %b High: ((4 * %n) + %b))125; CHECK-NEXT:            Member: {%b,+,4}<%loop>126; CHECK-NEXT:        Group GRP2:127; CHECK-NEXT:          (Low: %c High: ((4 * %n) + %c))128; CHECK-NEXT:            Member: {%c,+,4}<%loop>129; CHECK-NEXT:        Group GRP3:130; CHECK-NEXT:          (Low: ((4 * %offset) + %a) High: ((4 * %offset) + (4 * %n) + %a))131; CHECK-NEXT:            Member: {((4 * %offset) + %a),+,4}<%loop>132; CHECK-EMPTY:133; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.134; CHECK-NEXT:      SCEV assumptions:135; CHECK-EMPTY:136; CHECK-NEXT:      Expressions re-written:137;138entry:139  br label %loop140 141loop:142  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]143  %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv144  %l1 = load float, ptr %gep.a.iv, align 4145  %iv.offset = add i64 %iv, %offset146  %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset147  %l2 = load float, ptr %gep.a.iv.off, align 4148  %ad = fadd fast float %l1, %l2149  store float %ad, ptr %gep.a.iv, align 4150  %gep.b = getelementptr inbounds float, ptr %b, i64 %iv151  %gep.c = getelementptr inbounds float, ptr %c, i64 %iv152  %cmp = fcmp ult float %l1, 10.0153  %select = select i1 %cmp, ptr %gep.b, ptr %gep.c154  store float 0.0, ptr %select155  %iv.next = add nuw nsw i64 %iv, 1156  %exitcond = icmp eq i64 %iv.next, %n157  br i1 %exitcond, label %exit, label %loop158 159exit:160  ret void161}162 163define void @dependency_check_and_runtime_checks_needed_select_of_ptr_add_recs_may_wrap_1(ptr %a, ptr %b, ptr %c, i64 %offset, i64 %n) {164; CHECK-LABEL: 'dependency_check_and_runtime_checks_needed_select_of_ptr_add_recs_may_wrap_1'165; CHECK-NEXT:    loop:166; CHECK-NEXT:      Report: cannot identify array bounds167; CHECK-NEXT:      Dependences:168; CHECK-NEXT:      Run-time memory checks:169; CHECK-NEXT:      Grouped accesses:170; CHECK-NEXT:        Group GRP0:171; CHECK-NEXT:          (Low: ((4 * %offset) + %a) High: ((4 * %offset) + (4 * %n) + %a))172; CHECK-NEXT:            Member: {((4 * %offset) + %a),+,4}<%loop>173; CHECK-NEXT:        Group GRP1:174; CHECK-NEXT:          (Low: %a High: ((4 * %n) + %a))175; CHECK-NEXT:            Member: {%a,+,4}<nuw><%loop>176; CHECK-NEXT:            Member: {%a,+,4}<nuw><%loop>177; CHECK-NEXT:      Generated run-time checks are incomplete178; CHECK-EMPTY:179; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.180; CHECK-NEXT:      SCEV assumptions:181; CHECK-EMPTY:182; CHECK-NEXT:      Expressions re-written:183;184entry:185  br label %loop186 187loop:188  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]189  %iv2 = phi i64 [ 0, %entry ], [ %iv2.next, %loop ]190  %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv191  %l1 = load float, ptr %gep.a.iv, align 4192  %iv.offset = add i64 %iv, %offset193  %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset194  %l2 = load float, ptr %gep.a.iv.off, align 4195  %ad = fadd fast float %l1, %l2196  store float %ad, ptr %gep.a.iv, align 4197  %gep.b = getelementptr float, ptr %b, i64 %iv2198  %gep.c = getelementptr inbounds float, ptr %c, i64 %iv199  %cmp = fcmp ult float %l1, 10.0200  %select = select i1 %cmp, ptr %gep.b, ptr %gep.c201  store float 0.0, ptr %select202  %iv.next = add nuw nsw i64 %iv, 1203  %iv2.next = add i64 %iv2, 2204  %exitcond = icmp eq i64 %iv.next, %n205  br i1 %exitcond, label %exit, label %loop206 207exit:208  ret void209}210 211 212define void @dependency_check_and_runtime_checks_needed_select_of_ptr_add_recs_may_wrap_2(ptr %a, ptr %b, ptr %c, i64 %offset, i64 %n) {213; CHECK-LABEL: 'dependency_check_and_runtime_checks_needed_select_of_ptr_add_recs_may_wrap_2'214; CHECK-NEXT:    loop:215; CHECK-NEXT:      Report: cannot identify array bounds216; CHECK-NEXT:      Dependences:217; CHECK-NEXT:      Run-time memory checks:218; CHECK-NEXT:      Grouped accesses:219; CHECK-NEXT:        Group GRP0:220; CHECK-NEXT:          (Low: ((4 * %offset) + %a) High: ((4 * %offset) + (4 * %n) + %a))221; CHECK-NEXT:            Member: {((4 * %offset) + %a),+,4}<%loop>222; CHECK-NEXT:        Group GRP1:223; CHECK-NEXT:          (Low: %a High: ((4 * %n) + %a))224; CHECK-NEXT:            Member: {%a,+,4}<nuw><%loop>225; CHECK-NEXT:            Member: {%a,+,4}<nuw><%loop>226; CHECK-NEXT:      Generated run-time checks are incomplete227; CHECK-EMPTY:228; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.229; CHECK-NEXT:      SCEV assumptions:230; CHECK-EMPTY:231; CHECK-NEXT:      Expressions re-written:232;233entry:234  br label %loop235 236loop:237  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]238  %iv2 = phi i64 [ 0, %entry ], [ %iv2.next, %loop ]239  %gep.a.iv = getelementptr inbounds float, ptr %a, i64 %iv240  %l1 = load float, ptr %gep.a.iv, align 4241  %iv.offset = add i64 %iv, %offset242  %gep.a.iv.off = getelementptr inbounds float, ptr %a, i64 %iv.offset243  %l2 = load float, ptr %gep.a.iv.off, align 4244  %ad = fadd fast float %l1, %l2245  store float %ad, ptr %gep.a.iv, align 4246  %gep.b = getelementptr inbounds float, ptr %b, i64 %iv247  %gep.c = getelementptr inbounds float, ptr %c, i64 %iv2248  %cmp = fcmp ult float %l1, 10.0249  %select = select i1 %cmp, ptr %gep.b, ptr %gep.c250  store float 0.0, ptr %select251  %iv.next = add nuw nsw i64 %iv, 1252  %iv2.next = add i64 %iv2, 2253  %exitcond = icmp eq i64 %iv.next, %n254  br i1 %exitcond, label %exit, label %loop255 256exit:257  ret void258}259