xref: /llvm-project/polly/test/ScopDetect/profitability-two-nested-loops.ll (revision e1f056f692d869708c1898d9d65a69ac5584a0ed)
1; RUN: opt %loadNPMPolly '-passes=print<polly-detect>' -disable-output < %s 2>&1 | FileCheck %s
2
3; CHECK: Valid Region for Scop: next => bb3
4;
5;    void foo(float A[], long p) {
6;      for (long x = 0; x < 1024; x++) {
7;        __sync_synchronize();
8;        if (p >= 0) {
9;          for (long i = 0; i < 1024; i++)
10;            for (long j = 0; j < 1024; j++)
11;              A[i + j] += j;
12;        }
13;      }
14;    }
15;
16target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
17target triple = "x86_64-pc-linux-gnu"
18
19define void @foo(ptr %A, i64 %p) {
20bb:
21  br label %bb3
22
23bb3:                                              ; preds = %bb25, %bb
24  %x.0 = phi i64 [ 0, %bb ], [ %tmp26, %bb25 ]
25  %exitcond2 = icmp ne i64 %x.0, 1024
26  br i1 %exitcond2, label %bb5, label %bb4
27
28bb4:                                              ; preds = %bb3
29  br label %bb27
30
31bb5:                                              ; preds = %bb3
32  fence seq_cst
33  br label %next
34
35next:
36  %tmp = icmp sgt i64 %p, -1
37  br i1 %tmp, label %bb6, label %bb24
38
39bb6:                                              ; preds = %bb5
40  br label %bb7
41
42bb7:                                              ; preds = %bb21, %bb6
43  %i.0 = phi i64 [ 0, %bb6 ], [ %tmp22, %bb21 ]
44  %exitcond1 = icmp ne i64 %i.0, 1024
45  br i1 %exitcond1, label %bb9, label %bb8
46
47bb8:                                              ; preds = %bb7
48  br label %bb23
49
50bb9:                                              ; preds = %bb7
51  br label %bb10
52
53bb10:                                             ; preds = %bb18, %bb9
54  %j.0 = phi i64 [ 0, %bb9 ], [ %tmp19, %bb18 ]
55  %exitcond = icmp ne i64 %j.0, 1024
56  br i1 %exitcond, label %bb12, label %bb11
57
58bb11:                                             ; preds = %bb10
59  br label %bb20
60
61bb12:                                             ; preds = %bb10
62  %tmp13 = sitofp i64 %j.0 to float
63  %tmp14 = add nuw nsw i64 %i.0, %j.0
64  %tmp15 = getelementptr inbounds float, ptr %A, i64 %tmp14
65  %tmp16 = load float, ptr %tmp15, align 4
66  %tmp17 = fadd float %tmp16, %tmp13
67  store float %tmp17, ptr %tmp15, align 4
68  br label %bb18
69
70bb18:                                             ; preds = %bb12
71  %tmp19 = add nuw nsw i64 %j.0, 1
72  br label %bb10
73
74bb20:                                             ; preds = %bb11
75  br label %bb21
76
77bb21:                                             ; preds = %bb20
78  %tmp22 = add nuw nsw i64 %i.0, 1
79  br label %bb7
80
81bb23:                                             ; preds = %bb8
82  br label %bb24
83
84bb24:                                             ; preds = %bb23, %bb5
85  br label %bb25
86
87bb25:                                             ; preds = %bb24
88  %tmp26 = add nuw nsw i64 %x.0, 1
89  br label %bb3
90
91bb27:                                             ; preds = %bb4
92  ret void
93}
94