diff options
Diffstat (limited to 'llvm/test/Analysis/LoopAccessAnalysis')
2 files changed, 37 insertions, 15 deletions
diff --git a/llvm/test/Analysis/LoopAccessAnalysis/different-strides-safe-dep-due-to-backedge-taken-count.ll b/llvm/test/Analysis/LoopAccessAnalysis/different-strides-safe-dep-due-to-backedge-taken-count.ll index 0d1b082..311de84 100644 --- a/llvm/test/Analysis/LoopAccessAnalysis/different-strides-safe-dep-due-to-backedge-taken-count.ll +++ b/llvm/test/Analysis/LoopAccessAnalysis/different-strides-safe-dep-due-to-backedge-taken-count.ll @@ -106,10 +106,43 @@ exit: ret void } +define void @backward_dep_known_safe_due_to_backedge_taken_count(ptr %A) { +; CHECK-LABEL: 'backward_dep_known_safe_due_to_backedge_taken_count' +; CHECK-NEXT: loop: +; CHECK-NEXT: Memory dependences are safe +; CHECK-NEXT: Dependences: +; CHECK-NEXT: Run-time memory checks: +; CHECK-NEXT: Grouped accesses: +; CHECK-EMPTY: +; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop. +; CHECK-NEXT: SCEV assumptions: +; CHECK-EMPTY: +; CHECK-NEXT: Expressions re-written: +; +entry: + %A.510 = getelementptr inbounds i32, ptr %A, i64 510 + br label %loop + +loop: + %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ] + %iv.mul.2 = shl nuw nsw i64 %iv, 1 + %gep = getelementptr inbounds i32, ptr %A, i64 %iv + %l = load i32, ptr %gep, align 4 + %add = add nsw i32 %l, 5 + %gep.mul.2 = getelementptr inbounds i32, ptr %A.510, i64 %iv.mul.2 + store i32 %add, ptr %gep.mul.2, align 4 + %iv.next = add nuw nsw i64 %iv, 1 + %exitcond.not = icmp eq i64 %iv.next, 256 + br i1 %exitcond.not, label %exit, label %loop + +exit: + ret void +} + define void @backward_dep_known_distance_less_than_btc(ptr %A) { ; CHECK-LABEL: 'backward_dep_known_distance_less_than_btc' ; CHECK-NEXT: loop: -; CHECK-NEXT: Memory dependences are safe with a maximum safe vector width of 8160 bits +; CHECK-NEXT: Memory dependences are safe with a maximum safe vector width of 4064 bits ; CHECK-NEXT: Dependences: ; CHECK-NEXT: BackwardVectorizable: ; CHECK-NEXT: %l = load i32, ptr %gep, align 4 -> @@ -130,10 +163,10 @@ entry: loop: %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ] %iv.mul.2 = shl nuw nsw i64 %iv, 1 - %gep = getelementptr inbounds i32, ptr %A, i64 %iv + %gep = getelementptr inbounds i32, ptr %A, i64 %iv.mul.2 %l = load i32, ptr %gep, align 4 %add = add nsw i32 %l, 5 - %gep.mul.2 = getelementptr inbounds i32, ptr %A.510, i64 %iv.mul.2 + %gep.mul.2 = getelementptr inbounds i32, ptr %A.510, i64 %iv store i32 %add, ptr %gep.mul.2, align 4 %iv.next = add nuw nsw i64 %iv, 1 %exitcond.not = icmp eq i64 %iv.next, 256 diff --git a/llvm/test/Analysis/LoopAccessAnalysis/positive-dependence-distance-different-access-sizes.ll b/llvm/test/Analysis/LoopAccessAnalysis/positive-dependence-distance-different-access-sizes.ll index 1a6e258..468b225 100644 --- a/llvm/test/Analysis/LoopAccessAnalysis/positive-dependence-distance-different-access-sizes.ll +++ b/llvm/test/Analysis/LoopAccessAnalysis/positive-dependence-distance-different-access-sizes.ll @@ -8,21 +8,10 @@ target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" define void @test_distance_positive_independent_via_trip_count(ptr %A) { ; CHECK-LABEL: 'test_distance_positive_independent_via_trip_count' ; CHECK-NEXT: loop: -; CHECK-NEXT: Memory dependences are safe with run-time checks +; CHECK-NEXT: Memory dependences are safe ; CHECK-NEXT: Dependences: ; CHECK-NEXT: Run-time memory checks: -; CHECK-NEXT: Check 0: -; CHECK-NEXT: Comparing group GRP0: -; CHECK-NEXT: %gep.A.400 = getelementptr inbounds i32, ptr %A.400, i64 %iv -; CHECK-NEXT: Against group GRP1: -; CHECK-NEXT: %gep.A = getelementptr inbounds i8, ptr %A, i64 %iv ; CHECK-NEXT: Grouped accesses: -; CHECK-NEXT: Group GRP0: -; CHECK-NEXT: (Low: (400 + %A)<nuw> High: (804 + %A)) -; CHECK-NEXT: Member: {(400 + %A)<nuw>,+,4}<nuw><%loop> -; CHECK-NEXT: Group GRP1: -; CHECK-NEXT: (Low: %A High: (101 + %A)) -; CHECK-NEXT: Member: {%A,+,1}<nuw><%loop> ; CHECK-EMPTY: ; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop. ; CHECK-NEXT: SCEV assumptions: |