blob: 9201203ee52b48b231aea3d1937f1f108d8cbe5f [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes='print<access-info>' -S -disable-output %s 2>&1 | FileCheck %s
define void @int64_min_stride(ptr %A, i64 %n) {
; CHECK-LABEL: 'int64_min_stride'
; CHECK-NEXT: loop:
; CHECK-NEXT: Memory dependences are safe
; CHECK-NEXT: Dependences:
; CHECK-NEXT: Run-time memory checks:
; CHECK-NEXT: Grouped accesses:
; CHECK-NEXT: Group GRP0:
; CHECK-NEXT: (Low: (-9223372036854775808 + (-9223372036854775808 * %n) + %A) High: (5 + %A))
; CHECK-NEXT: Member: {(4 + %A),+,-9223372036854775808}<%loop>
; CHECK-NEXT: Member: {%A,+,-9223372036854775808}<%loop>
; CHECK-EMPTY:
; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.
; CHECK-NEXT: SCEV assumptions:
; CHECK-NEXT: {%A,+,-9223372036854775808}<%loop> Added Flags: <nusw>
; CHECK-NEXT: {(4 + %A),+,-9223372036854775808}<%loop> Added Flags: <nusw>
; CHECK-EMPTY:
; CHECK-NEXT: Expressions re-written:
;
entry:
br label %loop
loop:
%iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
%off = mul i64 %iv, -9223372036854775808
%off2 = add i64 %off, 4
%a = getelementptr i8, ptr %A, i64 %off
%a2 = getelementptr i8, ptr %A, i64 %off2
%v = load i8, ptr %a2
store i8 %v, ptr %a
%iv.next = add i64 %iv, 1
%ec = icmp eq i64 %iv.next, %n
br i1 %ec, label %exit, label %loop
exit:
ret void
}