brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · 3096d54 Raw
100 lines · plain
1; RUN: opt -disable-output -passes='print<access-info><allow-partial>,print<access-info>' %s 2>&1 | FileCheck %s --check-prefixes=ALLOW-BEFORE2; RUN: opt -disable-output -passes='print<access-info>,print<access-info><allow-partial>' %s 2>&1 | FileCheck %s --check-prefixes=ALLOW-AFTER3 4; Check that we get the right results when loop access analysis is run twice,5; once without partial results and once with.6 7target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"8 9define void @gep_loaded_offset(ptr %p, ptr %q, ptr %r, i32 %n) {10; ALLOW-BEFORE-LABEL: 'gep_loaded_offset'11; ALLOW-BEFORE-NEXT:    while.body:12; ALLOW-BEFORE-NEXT:      Report: cannot identify array bounds13; ALLOW-BEFORE-NEXT:      Dependences:14; ALLOW-BEFORE-NEXT:      Run-time memory checks:15; ALLOW-BEFORE-NEXT:      Check 0:16; ALLOW-BEFORE-NEXT:        Comparing group GRP0:17; ALLOW-BEFORE-NEXT:          %p.addr = phi ptr [ %incdec.ptr, %while.body ], [ %p, %entry ]18; ALLOW-BEFORE-NEXT:        Against group GRP1:19; ALLOW-BEFORE-NEXT:        ptr %r20; ALLOW-BEFORE-NEXT:      Grouped accesses:21; ALLOW-BEFORE-NEXT:        Group GRP0:22; ALLOW-BEFORE-NEXT:          (Low: %p High: (4 + (4 * (zext i32 (-1 + %n)<nsw> to i64))<nuw><nsw> + %p))23; ALLOW-BEFORE-NEXT:            Member: {%p,+,4}<nuw><%while.body>24; ALLOW-BEFORE-NEXT:        Group GRP1:25; ALLOW-BEFORE-NEXT:          (Low: %r High: (8 + %r))26; ALLOW-BEFORE-NEXT:            Member: %r27; ALLOW-BEFORE-NEXT:      Generated run-time checks are incomplete28; ALLOW-BEFORE-EMPTY:29; ALLOW-BEFORE-NEXT:      Non vectorizable stores to invariant address were not found in loop.30; ALLOW-BEFORE-NEXT:      SCEV assumptions:31; ALLOW-BEFORE-EMPTY:32; ALLOW-BEFORE-NEXT:      Expressions re-written:33;34; ALLOW-BEFORE-LABEL: 'gep_loaded_offset'35; ALLOW-BEFORE-NEXT:    while.body:36; ALLOW-BEFORE-NEXT:      Report: cannot identify array bounds37; ALLOW-BEFORE-NEXT:      Dependences:38; ALLOW-BEFORE-NEXT:      Run-time memory checks:39; ALLOW-BEFORE-NEXT:      Grouped accesses:40; ALLOW-BEFORE-EMPTY:41; ALLOW-BEFORE-NEXT:      Non vectorizable stores to invariant address were not found in loop.42; ALLOW-BEFORE-NEXT:      SCEV assumptions:43; ALLOW-BEFORE-EMPTY:44; ALLOW-BEFORE-NEXT:      Expressions re-written:45;46; ALLOW-AFTER-LABEL: 'gep_loaded_offset'47; ALLOW-AFTER-NEXT:    while.body:48; ALLOW-AFTER-NEXT:      Report: cannot identify array bounds49; ALLOW-AFTER-NEXT:      Dependences:50; ALLOW-AFTER-NEXT:      Run-time memory checks:51; ALLOW-AFTER-NEXT:      Grouped accesses:52; ALLOW-AFTER-EMPTY:53; ALLOW-AFTER-NEXT:      Non vectorizable stores to invariant address were not found in loop.54; ALLOW-AFTER-NEXT:      SCEV assumptions:55; ALLOW-AFTER-EMPTY:56; ALLOW-AFTER-NEXT:      Expressions re-written:57;58; ALLOW-AFTER-LABEL: 'gep_loaded_offset'59; ALLOW-AFTER-NEXT:    while.body:60; ALLOW-AFTER-NEXT:      Report: cannot identify array bounds61; ALLOW-AFTER-NEXT:      Dependences:62; ALLOW-AFTER-NEXT:      Run-time memory checks:63; ALLOW-AFTER-NEXT:      Check 0:64; ALLOW-AFTER-NEXT:        Comparing group GRP0:65; ALLOW-AFTER-NEXT:          %p.addr = phi ptr [ %incdec.ptr, %while.body ], [ %p, %entry ]66; ALLOW-AFTER-NEXT:        Against group GRP1:67; ALLOW-AFTER-NEXT:        ptr %r68; ALLOW-AFTER-NEXT:      Grouped accesses:69; ALLOW-AFTER-NEXT:        Group GRP0:70; ALLOW-AFTER-NEXT:          (Low: %p High: (4 + (4 * (zext i32 (-1 + %n)<nsw> to i64))<nuw><nsw> + %p))71; ALLOW-AFTER-NEXT:            Member: {%p,+,4}<nuw><%while.body>72; ALLOW-AFTER-NEXT:        Group GRP1:73; ALLOW-AFTER-NEXT:          (Low: %r High: (8 + %r))74; ALLOW-AFTER-NEXT:            Member: %r75; ALLOW-AFTER-NEXT:      Generated run-time checks are incomplete76; ALLOW-AFTER-EMPTY:77; ALLOW-AFTER-NEXT:      Non vectorizable stores to invariant address were not found in loop.78; ALLOW-AFTER-NEXT:      SCEV assumptions:79; ALLOW-AFTER-EMPTY:80; ALLOW-AFTER-NEXT:      Expressions re-written:81;82entry:83  br label %while.body84 85while.body:86  %n.addr = phi i32 [ %dec, %while.body ], [ %n, %entry ]87  %p.addr = phi ptr [ %incdec.ptr, %while.body ], [ %p, %entry ]88  %dec = add nsw i32 %n.addr, -189  %rval = load i64, ptr %r, align 490  %arrayidx = getelementptr inbounds i32, ptr %q, i64 %rval91  %val = load i32, ptr %arrayidx, align 492  %incdec.ptr = getelementptr inbounds nuw i8, ptr %p.addr, i64 493  store i32 %val, ptr %p.addr, align 494  %tobool.not = icmp eq i32 %dec, 095  br i1 %tobool.not, label %while.end, label %while.body96 97while.end:98  ret void99}100