brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.3 KiB · a4edc9e Raw
502 lines · plain
1; RUN: opt %loadNPMPolly '-passes=polly-custom<scops>' -polly-print-scops -polly-ignore-aliasing -disable-output < %s 2>&1 | FileCheck %s2; RUN: opt %loadNPMPolly '-passes=polly-custom<scops>' -polly-print-scops -polly-ignore-aliasing -disable-output < %s 2>&1 | FileCheck %s3 4target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"5 6; typedef struct Mat {7;   float* data;8;   long rows;9;   long cols;10;   long deps;11; } Matrix;12;13; #define M(m,r,c,d)  m->data[(r) * m->cols * mt->mdeps + (c) * m->deps + (d)]14;15; void jacobi(long nn, Matrix* a1, ..., Matrix* a19) {16;   long i, j, k, n, imax, jmax, kmax;17;18;   for(n = 0 ; n < nn ; n++)19;     for(i = 1 ; i < a1->rows-1; i++)20;       for(j = 1 ; j < a1->cols-1; j++)21;         for(k = 1 ; k < a1->deps-1; k++)22;           M(a19,i,j,k) = M(a1,i,j,k) + ... + M(a18,i,j,k);23; }24;25; We applied some loop invariant code motion to ensure the loads from m->data,26; m->rows, m->cols and m->deps happen before the scop.27 28; This test case verifies that the construction of the assumed context finishes29; successfully. Depending on how constrained are accumulated in the assumed30; context, this test case can take even for a smaller number of arrays over a31; minute to complete. With the unrolling chosen in this test, an inefficient32; formulation of the assumption tracking cause LLVM to crash due to excessive33; memory usage due to an overly large number of disjuncts being formed.34 35%struct.Mat = type { ptr, i64, i64, i64 }36 37; CHECK: Assumed Context:38; CHECK-DAG: a2_cols >= -1 + a1_cols39; CHECK-DAG: a2_deps >= -1 + a1_deps40; CHECK-DAG: a3_cols >= -1 + a1_cols41; CHECK-DAG: a3_deps >= -1 + a1_deps42; CHECK-DAG: a4_cols >= -1 + a1_cols43; CHECK-DAG: a4_deps >= -1 + a1_deps44; CHECK-DAG: a5_cols >= -1 + a1_cols45; CHECK-DAG: a5_deps >= -1 + a1_deps46; CHECK-DAG: a6_cols >= -1 + a1_cols47; CHECK-DAG: a6_deps >= -1 + a1_deps48; CHECK-DAG: a7_cols >= -1 + a1_cols49; CHECK-DAG: a7_deps >= -1 + a1_deps50; CHECK-DAG: a8_cols >= -1 + a1_cols51; CHECK-DAG: a8_deps >= -1 + a1_deps52; CHECK-DAG: a9_deps >= -1 + a1_deps53; CHECK-DAG: a9_cols >= -1 + a1_cols54; CHECK-DAG: a10_cols >= -1 + a1_cols55; CHECK-DAG: a10_deps >= -1 + a1_deps56; CHECK-DAG: a11_cols >= -1 + a1_cols57; CHECK-DAG: a11_deps >= -1 + a1_deps58; CHECK-DAG: a12_cols >= -1 + a1_cols59; CHECK-DAG: a12_deps >= -1 + a1_deps60; CHECK-DAG: a13_cols >= -1 + a1_cols61; CHECK-DAG: a13_deps >= -1 + a1_deps62; CHECK-DAG: a14_cols >= -1 + a1_cols63; CHECK-DAG: a14_deps >= -1 + a1_deps64; CHECK-DAG: a15_cols >= -1 + a1_cols65; CHECK-DAG: a15_deps >= -1 + a1_deps66; CHECK-DAG: a16_cols >= -1 + a1_cols67; CHECK-DAG: a16_deps >= -1 + a1_deps68; CHECK-DAG: a17_cols >= -1 + a1_cols69; CHECK-DAG: a17_deps >= -1 + a1_deps70; CHECK-DAG: a18_cols >= -1 + a1_cols71; CHECK-DAG: a18_deps >= -1 + a1_deps72; CHECK-DAG: a19_deps >= -1 + a1_deps73; CHECK-DAG: a19_cols >= -1 + a1_cols74 75define void @jacobi(i64 %nn,76  ptr %a1,77  ptr %a2,78  ptr %a3,79  ptr %a4,80  ptr %a5,81  ptr %a6,82  ptr %a7,83  ptr %a8,84  ptr %a9,85  ptr %a10,86  ptr %a11,87  ptr %a12,88  ptr %a13,89  ptr %a14,90  ptr %a15,91  ptr %a16,92  ptr %a17,93  ptr %a18,94  ptr %a1995  )  {96 97entry:98  br label %entry.split99 100entry.split:101  %a1.data = load ptr, ptr %a1, align 8102  %a1.rows.ptr = getelementptr inbounds %struct.Mat, ptr %a1, i32 0, i32 1103  %a1.rows = load i64, ptr %a1.rows.ptr, align 8104  %a1.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a1, i32 0, i32 2105  %a1.cols = load i64, ptr %a1.cols.ptr, align 8106  %a1.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a1, i32 0, i32 3107  %a1.deps = load i64, ptr %a1.deps.ptr, align 8108 109  %a2.data = load ptr, ptr %a2, align 8110  %a2.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a2, i32 0, i32 2111  %a2.cols = load i64, ptr %a2.cols.ptr, align 8112  %a2.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a2, i32 0, i32 3113  %a2.deps = load i64, ptr %a2.deps.ptr, align 8114 115  %a3.data = load ptr, ptr %a3, align 8116  %a3.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a3, i32 0, i32 2117  %a3.cols = load i64, ptr %a3.cols.ptr, align 8118  %a3.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a3, i32 0, i32 3119  %a3.deps = load i64, ptr %a3.deps.ptr, align 8120 121  %a4.data = load ptr, ptr %a4, align 8122  %a4.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a4, i32 0, i32 2123  %a4.cols = load i64, ptr %a4.cols.ptr, align 8124  %a4.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a4, i32 0, i32 3125  %a4.deps = load i64, ptr %a4.deps.ptr, align 8126 127  %a5.data = load ptr, ptr %a5, align 8128  %a5.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a5, i32 0, i32 2129  %a5.cols = load i64, ptr %a5.cols.ptr, align 8130  %a5.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a5, i32 0, i32 3131  %a5.deps = load i64, ptr %a5.deps.ptr, align 8132 133  %a6.data = load ptr, ptr %a6, align 8134  %a6.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a6, i32 0, i32 2135  %a6.cols = load i64, ptr %a6.cols.ptr, align 8136  %a6.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a6, i32 0, i32 3137  %a6.deps = load i64, ptr %a6.deps.ptr, align 8138 139  %a7.data = load ptr, ptr %a7, align 8140  %a7.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a7, i32 0, i32 2141  %a7.cols = load i64, ptr %a7.cols.ptr, align 8142  %a7.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a7, i32 0, i32 3143  %a7.deps = load i64, ptr %a7.deps.ptr, align 8144 145  %a8.data = load ptr, ptr %a8, align 8146  %a8.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a8, i32 0, i32 2147  %a8.cols = load i64, ptr %a8.cols.ptr, align 8148  %a8.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a8, i32 0, i32 3149  %a8.deps = load i64, ptr %a8.deps.ptr, align 8150 151  %a9.data = load ptr, ptr %a9, align 8152  %a9.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a9, i32 0, i32 2153  %a9.cols = load i64, ptr %a9.cols.ptr, align 8154  %a9.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a9, i32 0, i32 3155  %a9.deps = load i64, ptr %a9.deps.ptr, align 8156 157  %a10.data = load ptr, ptr %a10, align 8158  %a10.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a10, i32 0, i32 2159  %a10.cols = load i64, ptr %a10.cols.ptr, align 8160  %a10.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a10, i32 0, i32 3161  %a10.deps = load i64, ptr %a10.deps.ptr, align 8162 163  %a11.data = load ptr, ptr %a11, align 8164  %a11.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a11, i32 0, i32 2165  %a11.cols = load i64, ptr %a11.cols.ptr, align 8166  %a11.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a11, i32 0, i32 3167  %a11.deps = load i64, ptr %a11.deps.ptr, align 8168 169  %a12.data = load ptr, ptr %a12, align 8170  %a12.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a12, i32 0, i32 2171  %a12.cols = load i64, ptr %a12.cols.ptr, align 8172  %a12.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a12, i32 0, i32 3173  %a12.deps = load i64, ptr %a12.deps.ptr, align 8174 175  %a13.data = load ptr, ptr %a13, align 8176  %a13.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a13, i32 0, i32 2177  %a13.cols = load i64, ptr %a13.cols.ptr, align 8178  %a13.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a13, i32 0, i32 3179  %a13.deps = load i64, ptr %a13.deps.ptr, align 8180 181  %a14.data = load ptr, ptr %a14, align 8182  %a14.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a14, i32 0, i32 2183  %a14.cols = load i64, ptr %a14.cols.ptr, align 8184  %a14.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a14, i32 0, i32 3185  %a14.deps = load i64, ptr %a14.deps.ptr, align 8186 187  %a15.data = load ptr, ptr %a15, align 8188  %a15.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a15, i32 0, i32 2189  %a15.cols = load i64, ptr %a15.cols.ptr, align 8190  %a15.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a15, i32 0, i32 3191  %a15.deps = load i64, ptr %a15.deps.ptr, align 8192 193  %a16.data = load ptr, ptr %a16, align 8194  %a16.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a16, i32 0, i32 2195  %a16.cols = load i64, ptr %a16.cols.ptr, align 8196  %a16.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a16, i32 0, i32 3197  %a16.deps = load i64, ptr %a16.deps.ptr, align 8198 199  %a17.data = load ptr, ptr %a17, align 8200  %a17.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a17, i32 0, i32 2201  %a17.cols = load i64, ptr %a17.cols.ptr, align 8202  %a17.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a17, i32 0, i32 3203  %a17.deps = load i64, ptr %a17.deps.ptr, align 8204 205  %a18.data = load ptr, ptr %a18, align 8206  %a18.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a18, i32 0, i32 2207  %a18.cols = load i64, ptr %a18.cols.ptr, align 8208  %a18.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a18, i32 0, i32 3209  %a18.deps = load i64, ptr %a18.deps.ptr, align 8210 211  %a19.data = load ptr, ptr %a19, align 8212  %a19.cols.ptr = getelementptr inbounds %struct.Mat, ptr %a19, i32 0, i32 2213  %a19.cols = load i64, ptr %a19.cols.ptr, align 8214  %a19.deps.ptr = getelementptr inbounds %struct.Mat, ptr %a19, i32 0, i32 3215  %a19.deps = load i64, ptr %a19.deps.ptr, align 8216  br label %for.n217 218for.n:219  %indvar.n = phi i64 [ 0, %entry.split ], [ %indvar.n.next, %for.inc.n ]220  br label %for.i221 222for.i:223  %indvar.i = phi i64 [ 0, %for.n ], [ %indvar.i.next, %for.inc.i ]224  br label %for.j225 226for.j:227  %indvar.j = phi i64 [ 0, %for.i ], [ %indvar.j.next, %for.inc.j ]228  br label %for.body.k229 230for.body.k:231  %indvar.k = phi i64 [ 0, %for.j ], [ %indvar.k.next, %for.body.k ]232  %a1.tmp1 = add i64 %a1.cols, 1233  %a1.tmp2 = mul i64 %a1.deps, %a1.tmp1234  %a1.tmp3 = add i64 %a1.tmp2, 1235  %a1.tmp4 = mul i64 %a1.cols, %a1.deps236  %a1.idx.i = mul i64 %a1.tmp4, %indvar.i237  %a1.tmp5 = add i64 %a1.tmp3, %a1.idx.i238  %a1.idx.j = mul i64 %a1.deps, %indvar.j239  %a1.tmp6 = add i64 %a1.tmp5, %a1.idx.j240  %a1.idx.k = add i64 %a1.tmp6, %indvar.k241  %a1.ptr = getelementptr float, ptr %a1.data, i64 %a1.idx.k242  %sum = load float, ptr %a1.ptr, align 4243 244  %a2.tmp1 = add i64 %a2.cols, 1245  %a2.tmp2 = mul i64 %a2.deps, %a2.tmp1246  %a2.tmp3 = add i64 %a2.tmp2, 1247  %a2.tmp4 = mul i64 %a2.cols, %a2.deps248  %a2.idx.i = mul i64 %a2.tmp4, %indvar.i249  %a2.tmp5 = add i64 %a2.tmp3, %a2.idx.i250  %a2.idx.j = mul i64 %a2.deps, %indvar.j251  %a2.tmp6 = add i64 %a2.tmp5, %a2.idx.j252  %a2.idx.k = add i64 %a2.tmp6, %indvar.k253  %a2.ptr = getelementptr float, ptr %a2.data, i64 %a2.idx.k254  %a2.val = load float, ptr %a2.ptr, align 4255  %sum.a2 = fadd float %sum, %a2.val256 257  %a3.tmp1 = add i64 %a3.cols, 1258  %a3.tmp2 = mul i64 %a3.deps, %a3.tmp1259  %a3.tmp3 = add i64 %a3.tmp2, 1260  %a3.tmp4 = mul i64 %a3.cols, %a3.deps261  %a3.idx.i = mul i64 %a3.tmp4, %indvar.i262  %a3.tmp5 = add i64 %a3.tmp3, %a3.idx.i263  %a3.idx.j = mul i64 %a3.deps, %indvar.j264  %a3.tmp6 = add i64 %a3.tmp5, %a3.idx.j265  %a3.idx.k = add i64 %a3.tmp6, %indvar.k266  %a3.ptr = getelementptr float, ptr %a3.data, i64 %a3.idx.k267  %a3.val = load float, ptr %a3.ptr, align 4268  %sum.a3 = fadd float %sum.a2, %a3.val269 270  %a4.tmp1 = add i64 %a4.cols, 1271  %a4.tmp2 = mul i64 %a4.deps, %a4.tmp1272  %a4.tmp3 = add i64 %a4.tmp2, 1273  %a4.tmp4 = mul i64 %a4.cols, %a4.deps274  %a4.idx.i = mul i64 %a4.tmp4, %indvar.i275  %a4.tmp5 = add i64 %a4.tmp3, %a4.idx.i276  %a4.idx.j = mul i64 %a4.deps, %indvar.j277  %a4.tmp6 = add i64 %a4.tmp5, %a4.idx.j278  %a4.idx.k = add i64 %a4.tmp6, %indvar.k279  %a4.ptr = getelementptr float, ptr %a4.data, i64 %a4.idx.k280  %a4.val = load float, ptr %a4.ptr, align 4281  %sum.a4 = fadd float %sum.a3, %a4.val282 283  %a5.tmp1 = add i64 %a5.cols, 1284  %a5.tmp2 = mul i64 %a5.deps, %a5.tmp1285  %a5.tmp3 = add i64 %a5.tmp2, 1286  %a5.tmp4 = mul i64 %a5.cols, %a5.deps287  %a5.idx.i = mul i64 %a5.tmp4, %indvar.i288  %a5.tmp5 = add i64 %a5.tmp3, %a5.idx.i289  %a5.idx.j = mul i64 %a5.deps, %indvar.j290  %a5.tmp6 = add i64 %a5.tmp5, %a5.idx.j291  %a5.idx.k = add i64 %a5.tmp6, %indvar.k292  %a5.ptr = getelementptr float, ptr %a5.data, i64 %a5.idx.k293  %a5.val = load float, ptr %a5.ptr, align 4294  %sum.a5 = fadd float %sum.a4, %a5.val295 296  %a6.tmp1 = add i64 %a6.cols, 1297  %a6.tmp2 = mul i64 %a6.deps, %a6.tmp1298  %a6.tmp3 = add i64 %a6.tmp2, 1299  %a6.tmp4 = mul i64 %a6.cols, %a6.deps300  %a6.idx.i = mul i64 %a6.tmp4, %indvar.i301  %a6.tmp5 = add i64 %a6.tmp3, %a6.idx.i302  %a6.idx.j = mul i64 %a6.deps, %indvar.j303  %a6.tmp6 = add i64 %a6.tmp5, %a6.idx.j304  %a6.idx.k = add i64 %a6.tmp6, %indvar.k305  %a6.ptr = getelementptr float, ptr %a6.data, i64 %a6.idx.k306  %a6.val = load float, ptr %a6.ptr, align 4307  %sum.a6 = fadd float %sum.a5, %a6.val308 309  %a7.tmp1 = add i64 %a7.cols, 1310  %a7.tmp2 = mul i64 %a7.deps, %a7.tmp1311  %a7.tmp3 = add i64 %a7.tmp2, 1312  %a7.tmp4 = mul i64 %a7.cols, %a7.deps313  %a7.idx.i = mul i64 %a7.tmp4, %indvar.i314  %a7.tmp5 = add i64 %a7.tmp3, %a7.idx.i315  %a7.idx.j = mul i64 %a7.deps, %indvar.j316  %a7.tmp6 = add i64 %a7.tmp5, %a7.idx.j317  %a7.idx.k = add i64 %a7.tmp6, %indvar.k318  %a7.ptr = getelementptr float, ptr %a7.data, i64 %a7.idx.k319  %a7.val = load float, ptr %a7.ptr, align 4320  %sum.a7 = fadd float %sum.a6, %a7.val321 322  %a8.tmp1 = add i64 %a8.cols, 1323  %a8.tmp2 = mul i64 %a8.deps, %a8.tmp1324  %a8.tmp3 = add i64 %a8.tmp2, 1325  %a8.tmp4 = mul i64 %a8.cols, %a8.deps326  %a8.idx.i = mul i64 %a8.tmp4, %indvar.i327  %a8.tmp5 = add i64 %a8.tmp3, %a8.idx.i328  %a8.idx.j = mul i64 %a8.deps, %indvar.j329  %a8.tmp6 = add i64 %a8.tmp5, %a8.idx.j330  %a8.idx.k = add i64 %a8.tmp6, %indvar.k331  %a8.ptr = getelementptr float, ptr %a8.data, i64 %a8.idx.k332  %a8.val = load float, ptr %a8.ptr, align 4333  %sum.a8 = fadd float %sum.a7, %a8.val334 335  %a9.tmp1 = add i64 %a9.cols, 1336  %a9.tmp2 = mul i64 %a9.deps, %a9.tmp1337  %a9.tmp3 = add i64 %a9.tmp2, 1338  %a9.tmp4 = mul i64 %a9.cols, %a9.deps339  %a9.idx.i = mul i64 %a9.tmp4, %indvar.i340  %a9.tmp5 = add i64 %a9.tmp3, %a9.idx.i341  %a9.idx.j = mul i64 %a9.deps, %indvar.j342  %a9.tmp6  = add i64 %a9.tmp5, %a9.idx.j343  %a9.idx.k = add i64 %a9.tmp6, %indvar.k344  %a9.ptr = getelementptr float, ptr %a9.data, i64 %a9.idx.k345  %a9.val = load float, ptr %a9.ptr, align 4346  %sum.a9 = fadd float %sum.a8, %a9.val347 348  %a10.tmp1 = add i64 %a10.cols, 1349  %a10.tmp2 = mul i64 %a10.deps, %a10.tmp1350  %a10.tmp3 = add i64 %a10.tmp2, 1351  %a10.tmp4 = mul i64 %a10.cols, %a10.deps352  %a10.idx.i = mul i64 %a10.tmp4, %indvar.i353  %a10.tmp5 = add i64 %a10.tmp3, %a10.idx.i354  %a10.idx.j = mul i64 %a10.deps, %indvar.j355  %a10.tmp6 = add i64 %a10.tmp5, %a10.idx.j356  %a10.idx.k = add i64 %a10.tmp6, %indvar.k357  %a10.ptr = getelementptr float, ptr %a10.data, i64 %a10.idx.k358  %a10.val = load float, ptr %a10.ptr, align 4359  %sum.a10 = fadd float %sum.a9, %a10.val360 361  %a11.tmp1 = add i64 %a11.cols, 1362  %a11.tmp2 = mul i64 %a11.deps, %a11.tmp1363  %a11.tmp3 = add i64 %a11.tmp2, 1364  %a11.tmp4 = mul i64 %a11.cols, %a11.deps365  %a11.idx.i = mul i64 %a11.tmp4, %indvar.i366  %a11.tmp5 = add i64 %a11.tmp3, %a11.idx.i367  %a11.idx.j = mul i64 %a11.deps, %indvar.j368  %a11.tmp6 = add i64 %a11.tmp5, %a11.idx.j369  %a11.idx.k = add i64 %a11.tmp6, %indvar.k370  %a11.ptr = getelementptr float, ptr %a11.data, i64 %a11.idx.k371  %a11.val = load float, ptr %a11.ptr, align 4372  %sum.a11 = fadd float %sum.a10, %a11.val373 374  %a12.tmp1 = add i64 %a12.cols, 1375  %a12.tmp2 = mul i64 %a12.deps, %a12.tmp1376  %a12.tmp3 = add i64 %a12.tmp2, 1377  %a12.tmp4 = mul i64 %a12.cols, %a12.deps378  %a12.idx.i = mul i64 %a12.tmp4, %indvar.i379  %a12.tmp5 = add i64 %a12.tmp3, %a12.idx.i380  %a12.idx.j = mul i64 %a12.deps, %indvar.j381  %a12.tmp6 = add i64 %a12.tmp5, %a12.idx.j382  %a12.idx.k = add i64 %a12.tmp6, %indvar.k383  %a12.ptr = getelementptr float, ptr %a12.data, i64 %a12.idx.k384  %a12.val = load float, ptr %a12.ptr, align 4385  %sum.a12 = fadd float %sum.a11, %a12.val386 387  %a13.tmp1 = add i64 %a13.cols, 1388  %a13.tmp2 = mul i64 %a13.deps, %a13.tmp1389  %a13.tmp3 = add i64 %a13.tmp2, 1390  %a13.tmp4 = mul i64 %a13.cols, %a13.deps391  %a13.idx.i = mul i64 %a13.tmp4, %indvar.i392  %a13.tmp5 = add i64 %a13.tmp3, %a13.idx.i393  %a13.idx.j = mul i64 %a13.deps, %indvar.j394  %a13.tmp6 = add i64 %a13.tmp5, %a13.idx.j395  %a13.idx.k = add i64 %a13.tmp6, %indvar.k396  %a13.ptr = getelementptr float, ptr %a13.data, i64 %a13.idx.k397  %a13.val = load float, ptr %a13.ptr, align 4398  %sum.a13 = fadd float %sum.a12, %a13.val399 400  %a14.tmp1 = add i64 %a14.cols, 1401  %a14.tmp2 = mul i64 %a14.deps, %a14.tmp1402  %a14.tmp3 = add i64 %a14.tmp2, 1403  %a14.tmp4 = mul i64 %a14.cols, %a14.deps404  %a14.idx.i = mul i64 %a14.tmp4, %indvar.i405  %a14.tmp5 = add i64 %a14.tmp3, %a14.idx.i406  %a14.idx.j = mul i64 %a14.deps, %indvar.j407  %a14.tmp6 = add i64 %a14.tmp5, %a14.idx.j408  %a14.idx.k = add i64 %a14.tmp6, %indvar.k409  %a14.ptr = getelementptr float, ptr %a14.data, i64 %a14.idx.k410  %a14.val = load float, ptr %a14.ptr, align 4411  %sum.a14 = fadd float %sum.a13, %a14.val412 413  %a15.tmp1 = add i64 %a15.cols, 1414  %a15.tmp2 = mul i64 %a15.deps, %a15.tmp1415  %a15.tmp3 = add i64 %a15.tmp2, 1416  %a15.tmp4 = mul i64 %a15.cols, %a15.deps417  %a15.idx.i = mul i64 %a15.tmp4, %indvar.i418  %a15.tmp5 = add i64 %a15.tmp3, %a15.idx.i419  %a15.idx.j = mul i64 %a15.deps, %indvar.j420  %a15.tmp6 = add i64 %a15.tmp5, %a15.idx.j421  %a15.idx.k = add i64 %a15.tmp6, %indvar.k422  %a15.ptr = getelementptr float, ptr %a15.data, i64 %a15.idx.k423  %a15.val = load float, ptr %a15.ptr, align 4424  %sum.a15 = fadd float %sum.a14, %a15.val425 426  %a16.tmp1 = add i64 %a16.cols, 1427  %a16.tmp2 = mul i64 %a16.deps, %a16.tmp1428  %a16.tmp3 = add i64 %a16.tmp2, 1429  %a16.tmp4 = mul i64 %a16.cols, %a16.deps430  %a16.idx.i = mul i64 %a16.tmp4, %indvar.i431  %a16.tmp5 = add i64 %a16.tmp3, %a16.idx.i432  %a16.idx.j = mul i64 %a16.deps, %indvar.j433  %a16.tmp6 = add i64 %a16.tmp5, %a16.idx.j434  %a16.idx.k = add i64 %a16.tmp6, %indvar.k435  %a16.ptr = getelementptr float, ptr %a16.data, i64 %a16.idx.k436  %a16.val = load float, ptr %a16.ptr, align 4437  %sum.a16 = fadd float %sum.a15, %a16.val438 439  %a17.tmp1 = add i64 %a17.cols, 1440  %a17.tmp2 = mul i64 %a17.deps, %a17.tmp1441  %a17.tmp3 = add i64 %a17.tmp2, 1442  %a17.tmp4 = mul i64 %a17.cols, %a17.deps443  %a17.idx.i = mul i64 %a17.tmp4, %indvar.i444  %a17.tmp5 = add i64 %a17.tmp3, %a17.idx.i445  %a17.idx.j = mul i64 %a17.deps, %indvar.j446  %a17.tmp6 = add i64 %a17.tmp5, %a17.idx.j447  %a17.idx.k = add i64 %a17.tmp6, %indvar.k448  %a17.ptr = getelementptr float, ptr %a17.data, i64 %a17.idx.k449  %a17.val = load float, ptr %a17.ptr, align 4450  %sum.a17 = fadd float %sum.a16, %a17.val451 452  %a18.tmp1 = add i64 %a18.cols, 1453  %a18.tmp2 = mul i64 %a18.deps, %a18.tmp1454  %a18.tmp3 = add i64 %a18.tmp2, 1455  %a18.tmp4 = mul i64 %a18.cols, %a18.deps456  %a18.idx.i = mul i64 %a18.tmp4, %indvar.i457  %a18.tmp5 = add i64 %a18.tmp3, %a18.idx.i458  %a18.idx.j = mul i64 %a18.deps, %indvar.j459  %a18.tmp6 = add i64 %a18.tmp5, %a18.idx.j460  %a18.idx.k = add i64 %a18.tmp6, %indvar.k461  %a18.ptr = getelementptr float, ptr %a18.data, i64 %a18.idx.k462  %a18.val = load float, ptr %a18.ptr, align 4463  %sum.a18 = fadd float %sum.a17, %a18.val464 465  %a19.tmp1 = add i64 %a19.cols, 1466  %a19.tmp2 = mul i64 %a19.deps, %a19.tmp1467  %a19.tmp3 = add i64 %a19.tmp2, 1468  %a19.tmp4 = mul i64 %a19.cols, %a19.deps469  %a19.idx.i = mul i64 %a19.tmp4, %indvar.i470  %a19.tmp5 = add i64 %a19.tmp3, %a19.idx.i471  %a19.idx.j = mul i64 %a19.deps, %indvar.j472  %a19.tmp6  = add i64 %a19.tmp5, %a19.idx.j473  %a19.idx.k = add i64 %a19.tmp6, %indvar.k474  %a19.ptr = getelementptr float, ptr %a19.data, i64 %a19.idx.k475  store float %sum.a18, ptr %a19.ptr, align 4476 477  %indvar.k.next = add i64 %indvar.k, 1478  %a1.deps.sub = add i64 %a1.deps, -2479  %exitcond = icmp ne i64 %indvar.k.next, %a1.deps.sub480  br i1 %exitcond, label %for.body.k, label %for.inc.j481 482for.inc.j:483  %indvar.j.next = add i64 %indvar.j, 1484  %a1.cols.sub = add i64 %a1.cols, -2485  %exitcond.j = icmp ne i64 %indvar.j.next, %a1.cols.sub486  br i1 %exitcond.j, label %for.j, label %for.inc.i487 488for.inc.i:489  %indvar.i.next = add i64 %indvar.i, 1490  %a1.rows.sub = add i64 %a1.rows, -2491  %exitcond.i = icmp ne i64 %indvar.i.next, %a1.rows.sub492  br i1 %exitcond.i, label %for.i, label %for.inc.n493 494for.inc.n:495  %indvar.n.next = add nsw i64 %indvar.n, 1496  %exitcond.n = icmp ne i64 %indvar.n.next, %nn497  br i1 %exitcond.n, label %for.n, label %exit498 499exit:500  ret void501}502