• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: opt %loadPolly -polly-ast -polly-ast-detect-parallel -analyze < %s | FileCheck %s
2; RUN: opt %loadPolly -polyhedral-info -polly-check-parallel -analyze < %s | FileCheck %s -check-prefix=PINFO
3;
4;        void f(int *A, int N, int c) {
5; CHECK:   #pragma minimal dependence distance: 1
6; PINFO:   for.cond: Loop is not parallel.
7;          for (int j = 0; j < N; j++)
8; CHECK:      #pragma minimal dependence distance: max(-c, c)
9; PINFO-NEXT: for.cond1: Loop is not parallel.
10;             for (int i = 0; i < N; i++)
11;               A[i + c] = A[i] + 1;
12;        }
13;
14target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
15
16define void @f(i32* %A, i32 %N, i32 %c) {
17entry:
18  br label %for.cond
19
20for.cond:                                         ; preds = %for.inc6, %entry
21  %j.0 = phi i32 [ 0, %entry ], [ %inc7, %for.inc6 ]
22  %cmp = icmp slt i32 %j.0, %N
23  br i1 %cmp, label %for.body, label %for.end8
24
25for.body:                                         ; preds = %for.cond
26  br label %for.cond1
27
28for.cond1:                                        ; preds = %for.inc, %for.body
29  %i.0 = phi i32 [ 0, %for.body ], [ %inc, %for.inc ]
30  %exitcond = icmp ne i32 %i.0, %N
31  br i1 %exitcond, label %for.body3, label %for.end
32
33for.body3:                                        ; preds = %for.cond1
34  %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.0
35  %tmp = load i32, i32* %arrayidx, align 4
36  %add = add nsw i32 %tmp, 1
37  %add4 = add nsw i32 %i.0, %c
38  %arrayidx5 = getelementptr inbounds i32, i32* %A, i32 %add4
39  store i32 %add, i32* %arrayidx5, align 4
40  br label %for.inc
41
42for.inc:                                          ; preds = %for.body3
43  %inc = add nsw i32 %i.0, 1
44  br label %for.cond1
45
46for.end:                                          ; preds = %for.cond1
47  br label %for.inc6
48
49for.inc6:                                         ; preds = %for.end
50  %inc7 = add nsw i32 %j.0, 1
51  br label %for.cond
52
53for.end8:                                         ; preds = %for.cond
54  ret void
55}
56