brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.6 KiB · 47cbc0b Raw
258 lines · plain
1; RUN: opt %loadNPMPolly '-passes=polly-custom<scops>' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s2;3;    #define N 4004;5;    void first_higher_dimensional(float A[][N]) {6;      for (long i = 0; i < N; i++)7;        for (long j = 0; j < N; j++)8;          A[i][j] += i + j;9;10;      A[0][0] += A[100][100];11;12;      for (long i = 0; i < N; i++)13;        for (long j = 0; j < N; j++)14;          A[i][j] += i + j;15;    }16 17;    void first_lower_dimensional(float A[][N], float B[][N]) {18;      for (long i = 0; i < N; i++)19;        for (long j = 0; j < N; j++)20;          B[i][j] += i + j;21;22;      A[0][0] += B[100][100];23;24;      for (long i = 0; i < N; i++)25;        for (long j = 0; j < N; j++)26;          A[i][j] += i + j;27;    }28 29; CHECK:      Statements {30; CHECK-NEXT:     Stmt_bb731; CHECK-NEXT:         Domain :=32; CHECK-NEXT:             { Stmt_bb7[i0, i1] : 0 <= i0 <= 399 and 0 <= i1 <= 399 };33; CHECK-NEXT:         Schedule :=34; CHECK-NEXT:             { Stmt_bb7[i0, i1] -> [0, i0, i1] };35; CHECK-NEXT:         ReadAccess :=    [Reduction Type: NONE] [Scalar: 0]36; CHECK-NEXT:             { Stmt_bb7[i0, i1] -> MemRef_A[i0, i1] };37; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]38; CHECK-NEXT:             { Stmt_bb7[i0, i1] -> MemRef_A[i0, i1] };39; CHECK-NEXT:     Stmt_bb1740; CHECK-NEXT:         Domain :=41; CHECK-NEXT:             { Stmt_bb17[] };42; CHECK-NEXT:         Schedule :=43; CHECK-NEXT:             { Stmt_bb17[] -> [1, 0, 0] };44; CHECK-NEXT:         ReadAccess :=    [Reduction Type: NONE] [Scalar: 0]45; CHECK-NEXT:             { Stmt_bb17[] -> MemRef_A[100, 100] };46; CHECK-NEXT:         ReadAccess :=    [Reduction Type: NONE] [Scalar: 0]47; CHECK-NEXT:             { Stmt_bb17[] -> MemRef_A[0, 0] };48; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]49; CHECK-NEXT:             { Stmt_bb17[] -> MemRef_A[0, 0] };50; CHECK-NEXT:     Stmt_bb2651; CHECK-NEXT:         Domain :=52; CHECK-NEXT:             { Stmt_bb26[i0, i1] : 0 <= i0 <= 399 and 0 <= i1 <= 399 };53; CHECK-NEXT:         Schedule :=54; CHECK-NEXT:             { Stmt_bb26[i0, i1] -> [2, i0, i1] };55; CHECK-NEXT:         ReadAccess :=    [Reduction Type: NONE] [Scalar: 0]56; CHECK-NEXT:             { Stmt_bb26[i0, i1] -> MemRef_A[i0, i1] };57; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]58; CHECK-NEXT:             { Stmt_bb26[i0, i1] -> MemRef_A[i0, i1] };59; CHECK-NEXT: }60;61; CHECK:      Statements {62; CHECK-NEXT:     Stmt_bb763; CHECK-NEXT:         Domain :=64; CHECK-NEXT:             { Stmt_bb7[i0, i1] : 0 <= i0 <= 399 and 0 <= i1 <= 399 };65; CHECK-NEXT:         Schedule :=66; CHECK-NEXT:             { Stmt_bb7[i0, i1] -> [0, i0, i1] };67; CHECK-NEXT:         ReadAccess :=    [Reduction Type: NONE] [Scalar: 0]68; CHECK-NEXT:             { Stmt_bb7[i0, i1] -> MemRef_B[i0, i1] };69; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]70; CHECK-NEXT:             { Stmt_bb7[i0, i1] -> MemRef_B[i0, i1] };71; CHECK-NEXT:     Stmt_bb1772; CHECK-NEXT:         Domain :=73; CHECK-NEXT:             { Stmt_bb17[] };74; CHECK-NEXT:         Schedule :=75; CHECK-NEXT:             { Stmt_bb17[] -> [1, 0, 0] };76; CHECK-NEXT:         ReadAccess :=    [Reduction Type: NONE] [Scalar: 0]77; CHECK-NEXT:             { Stmt_bb17[] -> MemRef_B[100, 100] };78; CHECK-NEXT:         ReadAccess :=    [Reduction Type: NONE] [Scalar: 0]79; CHECK-NEXT:             { Stmt_bb17[] -> MemRef_A[0, 0] };80; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]81; CHECK-NEXT:             { Stmt_bb17[] -> MemRef_A[0, 0] };82; CHECK-NEXT:     Stmt_bb2683; CHECK-NEXT:         Domain :=84; CHECK-NEXT:             { Stmt_bb26[i0, i1] : 0 <= i0 <= 399 and 0 <= i1 <= 399 };85; CHECK-NEXT:         Schedule :=86; CHECK-NEXT:             { Stmt_bb26[i0, i1] -> [2, i0, i1] };87; CHECK-NEXT:         ReadAccess :=    [Reduction Type: NONE] [Scalar: 0]88; CHECK-NEXT:             { Stmt_bb26[i0, i1] -> MemRef_A[i0, i1] };89; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]90; CHECK-NEXT:             { Stmt_bb26[i0, i1] -> MemRef_A[i0, i1] };91; CHECK-NEXT: }92 93target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"94 95define void @first_higher_dimensional(ptr %A) {96bb:97  br label %bb498 99bb4:                                              ; preds = %bb15, %bb100  %i.0 = phi i64 [ 0, %bb ], [ %tmp16, %bb15 ]101  %exitcond3 = icmp ne i64 %i.0, 400102  br i1 %exitcond3, label %bb5, label %bb17103 104bb5:                                              ; preds = %bb4105  br label %bb6106 107bb6:                                              ; preds = %bb12, %bb5108  %j.0 = phi i64 [ 0, %bb5 ], [ %tmp13, %bb12 ]109  %exitcond2 = icmp ne i64 %j.0, 400110  br i1 %exitcond2, label %bb7, label %bb14111 112bb7:                                              ; preds = %bb6113  %tmp = add nuw nsw i64 %i.0, %j.0114  %tmp8 = sitofp i64 %tmp to float115  %tmp9 = getelementptr inbounds [400 x float], ptr %A, i64 %i.0, i64 %j.0116  %tmp10 = load float, ptr %tmp9, align 4117  %tmp11 = fadd float %tmp10, %tmp8118  store float %tmp11, ptr %tmp9, align 4119  br label %bb12120 121bb12:                                             ; preds = %bb7122  %tmp13 = add nuw nsw i64 %j.0, 1123  br label %bb6124 125bb14:                                             ; preds = %bb6126  br label %bb15127 128bb15:                                             ; preds = %bb14129  %tmp16 = add nuw nsw i64 %i.0, 1130  br label %bb4131 132bb17:                                             ; preds = %bb4133  %tmp18 = getelementptr inbounds [400 x float], ptr %A, i64 100, i64 100134  %tmp19 = load float, ptr %tmp18, align 4135  %tmp21 = load float, ptr %A, align 4136  %tmp22 = fadd float %tmp21, %tmp19137  store float %tmp22, ptr %A, align 4138  br label %bb23139 140bb23:                                             ; preds = %bb35, %bb17141  %i1.0 = phi i64 [ 0, %bb17 ], [ %tmp36, %bb35 ]142  %exitcond1 = icmp ne i64 %i1.0, 400143  br i1 %exitcond1, label %bb24, label %bb37144 145bb24:                                             ; preds = %bb23146  br label %bb25147 148bb25:                                             ; preds = %bb32, %bb24149  %j2.0 = phi i64 [ 0, %bb24 ], [ %tmp33, %bb32 ]150  %exitcond = icmp ne i64 %j2.0, 400151  br i1 %exitcond, label %bb26, label %bb34152 153bb26:                                             ; preds = %bb25154  %tmp27 = add nuw nsw i64 %i1.0, %j2.0155  %tmp28 = sitofp i64 %tmp27 to float156  %tmp29 = getelementptr inbounds [400 x float], ptr %A, i64 %i1.0, i64 %j2.0157  %tmp30 = load float, ptr %tmp29, align 4158  %tmp31 = fadd float %tmp30, %tmp28159  store float %tmp31, ptr %tmp29, align 4160  br label %bb32161 162bb32:                                             ; preds = %bb26163  %tmp33 = add nuw nsw i64 %j2.0, 1164  br label %bb25165 166bb34:                                             ; preds = %bb25167  br label %bb35168 169bb35:                                             ; preds = %bb34170  %tmp36 = add nuw nsw i64 %i1.0, 1171  br label %bb23172 173bb37:                                             ; preds = %bb23174  ret void175}176 177define void @first_lower_dimensional(ptr %A, ptr %B) {178bb:179  br label %bb4180 181bb4:                                              ; preds = %bb15, %bb182  %i.0 = phi i64 [ 0, %bb ], [ %tmp16, %bb15 ]183  %exitcond3 = icmp ne i64 %i.0, 400184  br i1 %exitcond3, label %bb5, label %bb17185 186bb5:                                              ; preds = %bb4187  br label %bb6188 189bb6:                                              ; preds = %bb12, %bb5190  %j.0 = phi i64 [ 0, %bb5 ], [ %tmp13, %bb12 ]191  %exitcond2 = icmp ne i64 %j.0, 400192  br i1 %exitcond2, label %bb7, label %bb14193 194bb7:                                              ; preds = %bb6195  %tmp = add nuw nsw i64 %i.0, %j.0196  %tmp8 = sitofp i64 %tmp to float197  %tmp9 = getelementptr inbounds [400 x float], ptr %B, i64 %i.0, i64 %j.0198  %tmp10 = load float, ptr %tmp9, align 4199  %tmp11 = fadd float %tmp10, %tmp8200  store float %tmp11, ptr %tmp9, align 4201  br label %bb12202 203bb12:                                             ; preds = %bb7204  %tmp13 = add nuw nsw i64 %j.0, 1205  br label %bb6206 207bb14:                                             ; preds = %bb6208  br label %bb15209 210bb15:                                             ; preds = %bb14211  %tmp16 = add nuw nsw i64 %i.0, 1212  br label %bb4213 214bb17:                                             ; preds = %bb4215  %tmp18 = getelementptr inbounds [400 x float], ptr %B, i64 100, i64 100216  %tmp19 = load float, ptr %tmp18, align 4217  %tmp21 = load float, ptr %A, align 4218  %tmp22 = fadd float %tmp21, %tmp19219  store float %tmp22, ptr %A, align 4220  br label %bb23221 222bb23:                                             ; preds = %bb35, %bb17223  %i1.0 = phi i64 [ 0, %bb17 ], [ %tmp36, %bb35 ]224  %exitcond1 = icmp ne i64 %i1.0, 400225  br i1 %exitcond1, label %bb24, label %bb37226 227bb24:                                             ; preds = %bb23228  br label %bb25229 230bb25:                                             ; preds = %bb32, %bb24231  %j2.0 = phi i64 [ 0, %bb24 ], [ %tmp33, %bb32 ]232  %exitcond = icmp ne i64 %j2.0, 400233  br i1 %exitcond, label %bb26, label %bb34234 235bb26:                                             ; preds = %bb25236  %tmp27 = add nuw nsw i64 %i1.0, %j2.0237  %tmp28 = sitofp i64 %tmp27 to float238  %tmp29 = getelementptr inbounds [400 x float], ptr %A, i64 %i1.0, i64 %j2.0239  %tmp30 = load float, ptr %tmp29, align 4240  %tmp31 = fadd float %tmp30, %tmp28241  store float %tmp31, ptr %tmp29, align 4242  br label %bb32243 244bb32:                                             ; preds = %bb26245  %tmp33 = add nuw nsw i64 %j2.0, 1246  br label %bb25247 248bb34:                                             ; preds = %bb25249  br label %bb35250 251bb35:                                             ; preds = %bb34252  %tmp36 = add nuw nsw i64 %i1.0, 1253  br label %bb23254 255bb37:                                             ; preds = %bb23256  ret void257}258