Follow up to d0858bffa11, add missing REQUIRES x86
[llvm-project.git] / llvm / test / tools / UpdateTestChecks / update_analyze_test_checks / Inputs / loop-access-analysis.ll
blob8a02d34bf6e04538423b7668644a3e71e78f2da5
1 ; RUN: opt -passes='print<access-info>' < %s -disable-output 2>&1 | FileCheck %s
3 define void @laa(ptr nocapture readonly %Base1, ptr nocapture readonly %Base2, ptr %Dest) {
4 entry:
5   br label %loop
7 loop:
8   %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
9   %gep.Dest = getelementptr inbounds float, ptr %Dest, i64 %iv
10   %l.Dest = load float, ptr %gep.Dest
11   %cmp = fcmp une float %l.Dest, 0.0
12   %gep.1 = getelementptr inbounds float, ptr %Base1, i64 %iv
13   %gep.2 = getelementptr inbounds float, ptr %Base2, i64 %iv
14   %select = select i1 %cmp, ptr %gep.1, ptr %gep.2
15   %sink = load float, ptr %select, align 4
16   store float %sink, ptr %gep.Dest, align 4
17   %iv.next = add nuw nsw i64 %iv, 1
18   %exitcond.not = icmp eq i64 %iv.next, 100
19   br i1 %exitcond.not, label %exit, label %loop
21 exit:
22   ret void
25 define void @test_brace_escapes(ptr noundef %arr) {
26 entry:
27   br label %loop.1
29 loop.1:
30   %iv = phi i64 [ %iv.next, %loop.1 ], [ 8, %entry ]
31   %arr.addr.0.i = phi ptr [ %incdec.ptr.i, %loop.1 ], [ %arr, %entry ]
32   %incdec.ptr.i = getelementptr inbounds ptr, ptr %arr.addr.0.i, i64 1
33   %0 = load ptr, ptr %arr.addr.0.i, align 8
34   %tobool.not.i = icmp eq ptr %0, null
35   %iv.next = add i64 %iv, 8
36   br i1 %tobool.not.i, label %loop.1.exit, label %loop.1
38 loop.1.exit:
39   %iv.lcssa = phi i64 [ %iv, %loop.1 ]
40   br label %loop.2
42 loop.2:
43   %iv.1 = phi i64 [ 0, %loop.1.exit ], [ %iv.1.next, %loop.2 ]
44   %iv.2 = phi i64 [ %iv.lcssa, %loop.1.exit ], [ %iv.2.next, %loop.2 ]
45   %gep.iv.1 = getelementptr inbounds ptr, ptr %arr, i64 %iv.1
46   %l.1 = load ptr, ptr %gep.iv.1, align 8
47   %iv.2.next = add nsw i64 %iv.2, 1
48   %gep.iv.2 = getelementptr inbounds ptr, ptr %arr, i64 %iv.2
49   store ptr %l.1, ptr %gep.iv.2, align 8
50   %iv.1.next = add nuw nsw i64 %iv.1, 1
51   %cmp = icmp ult i64 %iv.1.next, 1000
52   br i1 %cmp, label %loop.2, label %exit
54 exit:
55   ret void