brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.0 KiB · bb705ac Raw
280 lines · plain
1; RUN: opt %loadNPMPolly '-passes=polly-custom<opt-isl>' -stats -disable-output < %s 2>&1 | FileCheck %s -match-full-lines2 3; REQUIRES: asserts4 5;    void foo_1d(float *A) {6;      for (long i = 0; i < 1024; i++)7;        A[i] += i;8;    }9;10;    void foo_2d(float *A) {11;      for (long i = 0; i < 1024; i++)12;        for (long j = 0; j < 1024; j++)13;          A[i + j] += i + j;14;    }15;16;    void foo_3d(float *A) {17;      for (long i = 0; i < 1024; i++)18;        for (long j = 0; j < 1024; j++)19;          for (long k = 0; k < 1024; k++)20;            A[i + j + k] += i + j + k;21;    }22;23;    void foo_4d(float *A) {24;      for (long i = 0; i < 1024; i++)25;        for (long j = 0; j < 1024; j++)26;          for (long k = 0; k < 1024; k++)27;            for (long l = 0; l < 1024; l++)28;              A[i + j + k + l] += i + j + k + l;29;    }30;31;    void foo_zero_iterations(float *S) {32;      for (long i = 0; i < 0; i++)33;        A[i] += i;34;    }35target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"36 37define void @foo_1d(ptr %A) {38bb:39  br label %bb140 41bb1:                                              ; preds = %bb6, %bb42  %i.0 = phi i64 [ 0, %bb ], [ %tmp7, %bb6 ]43  %exitcond = icmp ne i64 %i.0, 102444  br i1 %exitcond, label %bb2, label %bb845 46bb2:                                              ; preds = %bb147  %tmp = sitofp i64 %i.0 to float48  %tmp3 = getelementptr inbounds float, ptr %A, i64 %i.049  %tmp4 = load float, ptr %tmp3, align 450  %tmp5 = fadd float %tmp4, %tmp51  store float %tmp5, ptr %tmp3, align 452  br label %bb653 54bb6:                                              ; preds = %bb255  %tmp7 = add nuw nsw i64 %i.0, 156  br label %bb157 58bb8:                                              ; preds = %bb159  ret void60}61 62define void @foo_2d(ptr %A) {63bb:64  br label %bb265 66bb2:                                              ; preds = %bb14, %bb67  %i.0 = phi i64 [ 0, %bb ], [ %tmp15, %bb14 ]68  %exitcond1 = icmp ne i64 %i.0, 102469  br i1 %exitcond1, label %bb3, label %bb1670 71bb3:                                              ; preds = %bb272  br label %bb473 74bb4:                                              ; preds = %bb11, %bb375  %j.0 = phi i64 [ 0, %bb3 ], [ %tmp12, %bb11 ]76  %exitcond = icmp ne i64 %j.0, 102477  br i1 %exitcond, label %bb5, label %bb1378 79bb5:                                              ; preds = %bb480  %tmp = add nuw nsw i64 %i.0, %j.081  %tmp6 = sitofp i64 %tmp to float82  %tmp7 = add nuw nsw i64 %i.0, %j.083  %tmp8 = getelementptr inbounds float, ptr %A, i64 %tmp784  %tmp9 = load float, ptr %tmp8, align 485  %tmp10 = fadd float %tmp9, %tmp686  store float %tmp10, ptr %tmp8, align 487  br label %bb1188 89bb11:                                             ; preds = %bb590  %tmp12 = add nuw nsw i64 %j.0, 191  br label %bb492 93bb13:                                             ; preds = %bb494  br label %bb1495 96bb14:                                             ; preds = %bb1397  %tmp15 = add nuw nsw i64 %i.0, 198  br label %bb299 100bb16:                                             ; preds = %bb2101  ret void102}103 104define void @foo_3d(ptr %A) {105bb:106  br label %bb3107 108bb3:                                              ; preds = %bb22, %bb109  %i.0 = phi i64 [ 0, %bb ], [ %tmp23, %bb22 ]110  %exitcond2 = icmp ne i64 %i.0, 1024111  br i1 %exitcond2, label %bb4, label %bb24112 113bb4:                                              ; preds = %bb3114  br label %bb5115 116bb5:                                              ; preds = %bb19, %bb4117  %j.0 = phi i64 [ 0, %bb4 ], [ %tmp20, %bb19 ]118  %exitcond1 = icmp ne i64 %j.0, 1024119  br i1 %exitcond1, label %bb6, label %bb21120 121bb6:                                              ; preds = %bb5122  br label %bb7123 124bb7:                                              ; preds = %bb16, %bb6125  %k.0 = phi i64 [ 0, %bb6 ], [ %tmp17, %bb16 ]126  %exitcond = icmp ne i64 %k.0, 1024127  br i1 %exitcond, label %bb8, label %bb18128 129bb8:                                              ; preds = %bb7130  %tmp = add nuw nsw i64 %i.0, %j.0131  %tmp9 = add nuw nsw i64 %tmp, %k.0132  %tmp10 = sitofp i64 %tmp9 to float133  %tmp11 = add nuw nsw i64 %i.0, %j.0134  %tmp12 = add nuw nsw i64 %tmp11, %k.0135  %tmp13 = getelementptr inbounds float, ptr %A, i64 %tmp12136  %tmp14 = load float, ptr %tmp13, align 4137  %tmp15 = fadd float %tmp14, %tmp10138  store float %tmp15, ptr %tmp13, align 4139  br label %bb16140 141bb16:                                             ; preds = %bb8142  %tmp17 = add nuw nsw i64 %k.0, 1143  br label %bb7144 145bb18:                                             ; preds = %bb7146  br label %bb19147 148bb19:                                             ; preds = %bb18149  %tmp20 = add nuw nsw i64 %j.0, 1150  br label %bb5151 152bb21:                                             ; preds = %bb5153  br label %bb22154 155bb22:                                             ; preds = %bb21156  %tmp23 = add nuw nsw i64 %i.0, 1157  br label %bb3158 159bb24:                                             ; preds = %bb3160  ret void161}162 163define void @foo_4d(ptr %A) {164bb:165  br label %bb4166 167bb4:                                              ; preds = %bb30, %bb168  %i.0 = phi i64 [ 0, %bb ], [ %tmp31, %bb30 ]169  %exitcond3 = icmp ne i64 %i.0, 1024170  br i1 %exitcond3, label %bb5, label %bb32171 172bb5:                                              ; preds = %bb4173  br label %bb6174 175bb6:                                              ; preds = %bb27, %bb5176  %j.0 = phi i64 [ 0, %bb5 ], [ %tmp28, %bb27 ]177  %exitcond2 = icmp ne i64 %j.0, 1024178  br i1 %exitcond2, label %bb7, label %bb29179 180bb7:                                              ; preds = %bb6181  br label %bb8182 183bb8:                                              ; preds = %bb24, %bb7184  %k.0 = phi i64 [ 0, %bb7 ], [ %tmp25, %bb24 ]185  %exitcond1 = icmp ne i64 %k.0, 1024186  br i1 %exitcond1, label %bb9, label %bb26187 188bb9:                                              ; preds = %bb8189  br label %bb10190 191bb10:                                             ; preds = %bb21, %bb9192  %l.0 = phi i64 [ 0, %bb9 ], [ %tmp22, %bb21 ]193  %exitcond = icmp ne i64 %l.0, 1024194  br i1 %exitcond, label %bb11, label %bb23195 196bb11:                                             ; preds = %bb10197  %tmp = add nuw nsw i64 %i.0, %j.0198  %tmp12 = add nuw nsw i64 %tmp, %k.0199  %tmp13 = add nuw nsw i64 %tmp12, %l.0200  %tmp14 = sitofp i64 %tmp13 to float201  %tmp15 = add nuw nsw i64 %i.0, %j.0202  %tmp16 = add nuw nsw i64 %tmp15, %k.0203  %tmp17 = add nuw nsw i64 %tmp16, %l.0204  %tmp18 = getelementptr inbounds float, ptr %A, i64 %tmp17205  %tmp19 = load float, ptr %tmp18, align 4206  %tmp20 = fadd float %tmp19, %tmp14207  store float %tmp20, ptr %tmp18, align 4208  br label %bb21209 210bb21:                                             ; preds = %bb11211  %tmp22 = add nuw nsw i64 %l.0, 1212  br label %bb10213 214bb23:                                             ; preds = %bb10215  br label %bb24216 217bb24:                                             ; preds = %bb23218  %tmp25 = add nuw nsw i64 %k.0, 1219  br label %bb8220 221bb26:                                             ; preds = %bb8222  br label %bb27223 224bb27:                                             ; preds = %bb26225  %tmp28 = add nuw nsw i64 %j.0, 1226  br label %bb6227 228bb29:                                             ; preds = %bb6229  br label %bb30230 231bb30:                                             ; preds = %bb29232  %tmp31 = add nuw nsw i64 %i.0, 1233  br label %bb4234 235bb32:                                             ; preds = %bb4236  ret void237}238 239define void @foo_zero_iterations(ptr %A) {240bb:241  br label %bb1242 243bb1:                                              ; preds = %bb6, %bb244  %i.0 = phi i64 [ 0, %bb ], [ %tmp7, %bb6 ]245  %exitcond = icmp ne i64 %i.0, 0246  br i1 %exitcond, label %bb2, label %bb8247 248bb2:                                              ; preds = %bb1249  %tmp = sitofp i64 %i.0 to float250  %tmp3 = getelementptr inbounds float, ptr %A, i64 %i.0251  %tmp4 = load float, ptr %tmp3, align 4252  %tmp5 = fadd float %tmp4, %tmp253  store float %tmp5, ptr %tmp3, align 4254  br label %bb6255 256bb6:                                              ; preds = %bb2257  %tmp7 = add nuw nsw i64 %i.0, 1258  br label %bb1259 260bb8:                                              ; preds = %bb1261  ret void262}263 264 265; CHECK-DAG:  1 polly-opt-isl    - Number of first level tiling applied266; CHECK-DAG:  9 polly-opt-isl    - Number of affine loops optimized267; CHECK-DAG: 10 polly-opt-isl    - Number of band members (original)268; CHECK-DAG: 10 polly-opt-isl    - Number of band members (after scheduler)269; CHECK-DAG: 12 polly-opt-isl    - Number of band members (after optimizer)270; CHECK-DAG: 10 polly-opt-isl    - Number of bands (original)271; CHECK-DAG:  7 polly-opt-isl    - Number of bands (after scheduler)272; CHECK-DAG:  8 polly-opt-isl    - Number of bands (after optimizer)273; CHECK-DAG:  4 polly-opt-isl    - Number of coincident band members (after scheduler)274; CHECK-DAG:  5 polly-opt-isl    - Number of coincident band members (after optimizer)275; CHECK-DAG:  7 polly-opt-isl    - Number of permutable bands (after scheduler)276; CHECK-DAG:  8 polly-opt-isl    - Number of permutable bands (after optimizer)277; CHECK-DAG:  3 polly-opt-isl    - Number of scops optimized278; CHECK-DAG:  4 polly-opt-isl    - Number of scops processed279; CHECK-DAG:  4 polly-opt-isl    - Number of scops rescheduled280