1; RUN: opt %loadPolly -polly-codegen < %s
2target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
3
4@win193 = external global [4 x [36 x double]], align 32 ; <[4 x [36 x double]]*> [#uses=3]
5@sb_sample = external global [2 x [2 x [18 x [32 x double]]]], align 32 ; <[2 x [2 x [18 x [32 x double]]]]*> [#uses=2]
6
7define void @mdct_sub48() nounwind {
8entry:
9  br i1 undef, label %bb, label %bb54
10
11bb:                                               ; preds = %entry
12  br label %bb54
13
14bb3:                                              ; preds = %bb50
15  br label %bb8
16
17bb4:                                              ; preds = %bb8
18  br label %bb8
19
20bb8:                                              ; preds = %bb4, %bb3
21  br i1 undef, label %bb4, label %bb9
22
23bb9:                                              ; preds = %bb8
24  br label %bb48
25
26bb25:                                             ; preds = %bb48
27  br i1 false, label %bb26, label %bb27
28
29bb26:                                             ; preds = %bb48, %bb25
30  br label %bb37
31
32bb27:                                             ; preds = %bb25
33  br i1 undef, label %bb32, label %bb35
34
35bb32:                                             ; preds = %bb27
36  br label %bb37
37
38bb34:                                             ; preds = %bb35
39  %0 = getelementptr inbounds [36 x double], [36 x double]* undef, i64 0, i64 0 ; <double*> [#uses=0]
40  %1 = getelementptr inbounds [18 x [32 x double]], [18 x [32 x double]]* undef, i64 0, i64 0 ; <[32 x double]*> [#uses=1]
41  %2 = getelementptr inbounds [32 x double], [32 x double]* %1, i64 0, i64 0 ; <double*> [#uses=0]
42  %3 = getelementptr inbounds [36 x double], [36 x double]* undef, i64 0, i64 0 ; <double*> [#uses=0]
43  %4 = sub nsw i32 17, %k.4                       ; <i32> [#uses=1]
44  %5 = getelementptr inbounds [2 x [2 x [18 x [32 x double]]]], [2 x [2 x [18 x [32 x double]]]]* @sb_sample, i64 0, i64 0 ; <[2 x [18 x [32 x double]]]*> [#uses=1]
45  %6 = getelementptr inbounds [2 x [18 x [32 x double]]], [2 x [18 x [32 x double]]]* %5, i64 0, i64 0 ; <[18 x [32 x double]]*> [#uses=1]
46  %7 = sext i32 %4 to i64                         ; <i64> [#uses=1]
47  %8 = getelementptr inbounds [18 x [32 x double]], [18 x [32 x double]]* %6, i64 0, i64 %7 ; <[32 x double]*> [#uses=1]
48  %9 = getelementptr inbounds [32 x double], [32 x double]* %8, i64 0, i64 0 ; <double*> [#uses=1]
49  %10 = load double, double* %9, align 8                  ; <double> [#uses=0]
50  %11 = fsub double 0.000000e+00, undef           ; <double> [#uses=1]
51  %12 = getelementptr inbounds double, double* getelementptr inbounds ([4 x [36 x double]], [4 x [36 x double]]* @win193, i64 0, i64 2, i64 4), i64 0 ; <double*> [#uses=1]
52  store double %11, double* %12, align 8
53  %13 = add nsw i32 %k.4, 9                       ; <i32> [#uses=1]
54  %14 = add nsw i32 %k.4, 18                      ; <i32> [#uses=1]
55  %15 = getelementptr inbounds [4 x [36 x double]], [4 x [36 x double]]* @win193, i64 0, i64 0 ; <[36 x double]*> [#uses=1]
56  %16 = sext i32 %14 to i64                       ; <i64> [#uses=1]
57  %17 = getelementptr inbounds [36 x double], [36 x double]* %15, i64 0, i64 %16 ; <double*> [#uses=1]
58  %18 = load double, double* %17, align 8                 ; <double> [#uses=0]
59  %19 = sext i32 %k.4 to i64                      ; <i64> [#uses=1]
60  %20 = getelementptr inbounds [18 x [32 x double]], [18 x [32 x double]]* undef, i64 0, i64 %19 ; <[32 x double]*> [#uses=1]
61  %21 = sext i32 %band.2 to i64                   ; <i64> [#uses=1]
62  %22 = getelementptr inbounds [32 x double], [32 x double]* %20, i64 0, i64 %21 ; <double*> [#uses=1]
63  %23 = load double, double* %22, align 8                 ; <double> [#uses=0]
64  %24 = sext i32 %39 to i64                       ; <i64> [#uses=1]
65  %25 = getelementptr inbounds [4 x [36 x double]], [4 x [36 x double]]* @win193, i64 0, i64 %24 ; <[36 x double]*> [#uses=1]
66  %26 = getelementptr inbounds [36 x double], [36 x double]* %25, i64 0, i64 0 ; <double*> [#uses=1]
67  %27 = load double, double* %26, align 8                 ; <double> [#uses=0]
68  %28 = sub nsw i32 17, %k.4                      ; <i32> [#uses=1]
69  %29 = getelementptr inbounds [2 x [2 x [18 x [32 x double]]]], [2 x [2 x [18 x [32 x double]]]]* @sb_sample, i64 0, i64 0 ; <[2 x [18 x [32 x double]]]*> [#uses=1]
70  %30 = getelementptr inbounds [2 x [18 x [32 x double]]], [2 x [18 x [32 x double]]]* %29, i64 0, i64 0 ; <[18 x [32 x double]]*> [#uses=1]
71  %31 = sext i32 %28 to i64                       ; <i64> [#uses=1]
72  %32 = getelementptr inbounds [18 x [32 x double]], [18 x [32 x double]]* %30, i64 0, i64 %31 ; <[32 x double]*> [#uses=1]
73  %33 = getelementptr inbounds [32 x double], [32 x double]* %32, i64 0, i64 0 ; <double*> [#uses=1]
74  %34 = load double, double* %33, align 8                 ; <double> [#uses=0]
75  %35 = sext i32 %13 to i64                       ; <i64> [#uses=1]
76  %36 = getelementptr inbounds double, double* getelementptr inbounds ([4 x [36 x double]], [4 x [36 x double]]* @win193, i64 0, i64 2, i64 4), i64 %35 ; <double*> [#uses=1]
77  store double 0.000000e+00, double* %36, align 8
78  %37 = sub nsw i32 %k.4, 1                       ; <i32> [#uses=1]
79  br label %bb35
80
81bb35:                                             ; preds = %bb34, %bb27
82  %k.4 = phi i32 [ %37, %bb34 ], [ 8, %bb27 ]     ; <i32> [#uses=6]
83  br i1 undef, label %bb34, label %bb36
84
85bb36:                                             ; preds = %bb35
86  unreachable
87
88bb37:                                             ; preds = %bb32, %bb26
89  %38 = add nsw i32 %band.2, 1                    ; <i32> [#uses=1]
90  br label %bb48
91
92bb48:                                             ; preds = %bb37, %bb9
93  %band.2 = phi i32 [ %38, %bb37 ], [ 0, %bb9 ]   ; <i32> [#uses=2]
94  %39 = load i32, i32* null, align 8                   ; <i32> [#uses=1]
95  br i1 undef, label %bb26, label %bb25
96
97bb50:                                             ; preds = %bb54
98  br i1 undef, label %bb3, label %bb51
99
100bb51:                                             ; preds = %bb50
101  br i1 undef, label %bb52, label %bb53
102
103bb52:                                             ; preds = %bb51
104  unreachable
105
106bb53:                                             ; preds = %bb51
107  br label %bb54
108
109bb54:                                             ; preds = %bb53, %bb, %entry
110  br i1 undef, label %bb50, label %return
111
112return:                                           ; preds = %bb54
113  ret void
114}
115