llvm-project

Форк
0
/
SIMDInParallelFor.ll 
65 строк · 2.6 Кб
1
; RUN: opt %loadNPMPolly -polly-parallel -polly-vectorizer=stripmine -passes=polly-codegen-verify '-passes=polly-opt-isl,print<polly-ast>,polly-codegen' -disable-output < %s | FileCheck %s
2
;
3
; Check that there are no nested #pragma omp parallel for inside a
4
; #pragma omp parallel for loop.
5
; See llvm.org/PR38073 and llvm.org/PR33153
6
;
7
; This test unfortunately is very dependent on the result of the schedule
8
; optimizer (-polly-opt-isl).
9
;
10
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
11

12
@b = external dso_local unnamed_addr global [1984 x [1984 x double]], align 16
13
@c = external dso_local unnamed_addr global [1984 x [1984 x double]], align 16
14

15
define dso_local void @main() local_unnamed_addr {
16
entry:
17
  %cond = select i1 undef, i32 undef, i32 1984
18
  %tmp = zext i32 %cond to i64
19
  %cond63 = select i1 undef, i32 undef, i32 1984
20
  %tmp1 = zext i32 %cond63 to i64
21
  br label %for.cond51.preheader
22

23
for.cond51.preheader:
24
  %indvars.iv213 = phi i64 [ 0, %entry ], [ %indvars.iv.next214, %for.inc98 ]
25
  %cond73 = select i1 undef, i32 undef, i32 1984
26
  %tmp2 = zext i32 %cond73 to i64
27
  br label %for.cond56.preheader
28

29
for.cond56.preheader:
30
  %indvars.iv223 = phi i64 [ 0, %for.cond51.preheader ], [ %indvars.iv.next224, %for.inc95 ]
31
  br label %for.cond66.preheader
32

33
for.cond66.preheader:
34
  %indvars.iv219 = phi i64 [ %indvars.iv.next220, %for.inc92 ], [ 0, %for.cond56.preheader ]
35
  br label %for.body75
36

37
for.body75:
38
  %indvars.iv215 = phi i64 [ %indvars.iv213, %for.cond66.preheader ], [ %indvars.iv.next216, %for.body75 ]
39
  %arrayidx83 = getelementptr inbounds [1984 x [1984 x double]], ptr @b, i64 0, i64 %indvars.iv219, i64 %indvars.iv215
40
  %tmp3 = load double, ptr %arrayidx83, align 8
41
  %arrayidx87 = getelementptr inbounds [1984 x [1984 x double]], ptr @c, i64 0, i64 %indvars.iv223, i64 %indvars.iv215
42
  store double undef, ptr %arrayidx87, align 8
43
  %indvars.iv.next216 = add nuw nsw i64 %indvars.iv215, 1
44
  %cmp74 = icmp ult i64 %indvars.iv.next216, %tmp2
45
  br i1 %cmp74, label %for.body75, label %for.inc92
46

47
for.inc92:
48
  %indvars.iv.next220 = add nuw nsw i64 %indvars.iv219, 1
49
  %cmp64 = icmp ult i64 %indvars.iv.next220, %tmp1
50
  br i1 %cmp64, label %for.cond66.preheader, label %for.inc95
51

52
for.inc95:
53
  %indvars.iv.next224 = add nuw nsw i64 %indvars.iv223, 1
54
  %cmp54 = icmp ult i64 %indvars.iv.next224, %tmp
55
  br i1 %cmp54, label %for.cond56.preheader, label %for.inc98
56

57
for.inc98:
58
  %indvars.iv.next214 = add nuw nsw i64 %indvars.iv213, 48
59
  br label %for.cond51.preheader
60
}
61

62
; No parallel loop except the to outermost.
63
; CHECK: #pragma omp parallel for
64
; CHECK: #pragma omp parallel for
65
; CHECK-NOT: #pragma omp parallel for
66

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.