1 ; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 5
2 ; RUN: opt -passes='print<access-info>' -disable-output %s 2>&1 | FileCheck %s
4 define void @false.equal.predicate(ptr %arg, ptr %arg1, i1 %arg2) {
5 ; CHECK-LABEL: 'false.equal.predicate'
6 ; CHECK-NEXT: loop.body:
7 ; CHECK-NEXT: Memory dependences are safe
8 ; CHECK-NEXT: Dependences:
9 ; CHECK-NEXT: Run-time memory checks:
10 ; CHECK-NEXT: Grouped accesses:
12 ; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop.
13 ; CHECK-NEXT: SCEV assumptions:
14 ; CHECK-NEXT: Equal predicate: %load == 1
16 ; CHECK-NEXT: Expressions re-written:
17 ; CHECK-NEXT: [PSE] %gep10 = getelementptr double, ptr %gep8, i64 %mul:
18 ; CHECK-NEXT: {(8 + %arg1),+,(8 * (sext i32 %load to i64))<nsw>}<%loop.body>
19 ; CHECK-NEXT: --> {(8 + %arg1),+,8}<%loop.body>
22 %load = load i32, ptr %arg, align 4
23 br i1 %arg2, label %noloop.exit, label %loop.ph
25 loop.ph: ; preds = %entry
26 %sext7 = sext i32 %load to i64
27 %gep8 = getelementptr i8, ptr %arg1, i64 8
30 loop.body: ; preds = %loop.body, %loop.ph
31 %phi = phi i64 [ 0, %loop.ph ], [ %add, %loop.body ]
32 %mul = mul i64 %phi, %sext7
33 %gep10 = getelementptr double, ptr %gep8, i64 %mul
34 %load11 = load double, ptr %gep10, align 8
35 store double %load11, ptr %arg1, align 8
36 %add = add i64 %phi, 1
37 %icmp = icmp eq i64 %phi, 0
38 br i1 %icmp, label %loop.exit, label %loop.body
40 noloop.exit: ; preds = %entry
41 %sext = sext i32 %load to i64
42 %gep = getelementptr double, ptr %arg1, i64 %sext
43 %load5 = load double, ptr %gep, align 8
44 store double %load5, ptr %arg, align 8
47 loop.exit: ; preds = %loop.body