[Samples] add baseline and opt c++ files for all computation kernels and dnn models shown in the paper

This commit is contained in:
Hanchen Ye 2021-04-08 17:59:36 -05:00
parent 4a37ed13de
commit debc934b1b
22 changed files with 104847 additions and 32 deletions

View File

@ -6,10 +6,10 @@ output_num=1
max_init_parallel=32
# Positive number: the maximum parallelism of exploration.
max_expl_parallel=1024
max_expl_parallel=128
# Positive number: the maximum parallelism of each loop.
max_loop_parallel=128
max_loop_parallel=16
# Positive number: the maximum DSE iteration number.
max_iter_num=30

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,877 @@
//===------------------------------------------------------------*- C++ -*-===//
//
// Automatically generated file for High-level Synthesis (HLS).
//
//===----------------------------------------------------------------------===//
#include <algorithm>
#include <ap_axi_sdata.h>
#include <ap_fixed.h>
#include <ap_int.h>
#include <hls_math.h>
#include <hls_stream.h>
#include <math.h>
#include <stdint.h>
using namespace std;
/// This is top function.
void main_graph(
int8_t v0[1][3][32][32],
int8_t v1[64][3][3][3],
int8_t v2[64][64][3][3],
int8_t v3[128][64][3][3],
int8_t v4[128][128][3][3],
int8_t v5[256][128][3][3],
int8_t v6[256][256][3][3],
int8_t v7[256][256][3][3],
int8_t v8[512][256][3][3],
int8_t v9[512][512][3][3],
int8_t v10[512][512][3][3],
int8_t v11[512][512][3][3],
int8_t v12[512][512][3][3],
int8_t v13[512][512][3][3],
int8_t v14[10][512],
int8_t v15[1][10]
) { // L2
#pragma HLS interface s_axilite port=return bundle=ctrl
#pragma HLS interface bram port=v0
#pragma HLS interface bram port=v1
#pragma HLS interface bram port=v2
#pragma HLS interface bram port=v3
#pragma HLS interface bram port=v4
#pragma HLS interface bram port=v5
#pragma HLS interface bram port=v6
#pragma HLS interface bram port=v7
#pragma HLS interface bram port=v8
#pragma HLS interface bram port=v9
#pragma HLS interface bram port=v10
#pragma HLS interface bram port=v11
#pragma HLS interface bram port=v12
#pragma HLS interface bram port=v13
#pragma HLS interface bram port=v14
#pragma HLS interface bram port=v15
#pragma HLS resource variable=v0 core=ram_s2p_bram
#pragma HLS resource variable=v1 core=ram_s2p_bram
#pragma HLS resource variable=v2 core=ram_s2p_bram
#pragma HLS resource variable=v3 core=ram_s2p_bram
#pragma HLS resource variable=v4 core=ram_s2p_bram
#pragma HLS resource variable=v5 core=ram_s2p_bram
#pragma HLS resource variable=v6 core=ram_s2p_bram
#pragma HLS resource variable=v7 core=ram_s2p_bram
#pragma HLS resource variable=v8 core=ram_s2p_bram
#pragma HLS resource variable=v9 core=ram_s2p_bram
#pragma HLS resource variable=v10 core=ram_s2p_bram
#pragma HLS resource variable=v11 core=ram_s2p_bram
#pragma HLS resource variable=v12 core=ram_s2p_bram
#pragma HLS resource variable=v13 core=ram_s2p_bram
#pragma HLS resource variable=v14 core=ram_s2p_bram
#pragma HLS resource variable=v15 core=ram_s2p_bram
int8_t v16[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // L5
int8_t v17[1][512]; // L7
#pragma HLS resource variable=v17 core=ram_s2p_bram
int8_t v18[1][512][1][1]; // L8
#pragma HLS resource variable=v18 core=ram_s2p_bram
int8_t v19[1][512][1][1]; // L9
#pragma HLS resource variable=v19 core=ram_s2p_bram
int8_t v20[1][512][1][1]; // L10
#pragma HLS resource variable=v20 core=ram_s2p_bram
int8_t v21[1][512][4][4]; // L11
#pragma HLS resource variable=v21 core=ram_s2p_bram
int8_t v22[1][512][2][2]; // L12
#pragma HLS resource variable=v22 core=ram_s2p_bram
int8_t v23[1][512][2][2]; // L13
#pragma HLS resource variable=v23 core=ram_s2p_bram
int8_t v24[1][512][4][4]; // L14
#pragma HLS resource variable=v24 core=ram_s2p_bram
int8_t v25[1][512][2][2]; // L15
#pragma HLS resource variable=v25 core=ram_s2p_bram
int8_t v26[1][512][2][2]; // L16
#pragma HLS resource variable=v26 core=ram_s2p_bram
int8_t v27[1][512][4][4]; // L17
#pragma HLS resource variable=v27 core=ram_s2p_bram
int8_t v28[1][512][2][2]; // L18
#pragma HLS resource variable=v28 core=ram_s2p_bram
int8_t v29[1][512][2][2]; // L19
#pragma HLS resource variable=v29 core=ram_s2p_bram
int8_t v30[1][512][6][6]; // L20
#pragma HLS resource variable=v30 core=ram_s2p_bram
int8_t v31[1][512][4][4]; // L21
#pragma HLS resource variable=v31 core=ram_s2p_bram
int8_t v32[1][512][4][4]; // L22
#pragma HLS resource variable=v32 core=ram_s2p_bram
int8_t v33[1][512][6][6]; // L23
#pragma HLS resource variable=v33 core=ram_s2p_bram
int8_t v34[1][512][4][4]; // L24
#pragma HLS resource variable=v34 core=ram_s2p_bram
int8_t v35[1][512][4][4]; // L25
#pragma HLS resource variable=v35 core=ram_s2p_bram
int8_t v36[1][256][6][6]; // L26
#pragma HLS resource variable=v36 core=ram_s2p_bram
int8_t v37[1][256][4][4]; // L27
#pragma HLS resource variable=v37 core=ram_s2p_bram
int8_t v38[1][256][4][4]; // L28
#pragma HLS resource variable=v38 core=ram_s2p_bram
int8_t v39[1][256][10][10]; // L29
#pragma HLS resource variable=v39 core=ram_s2p_bram
int8_t v40[1][256][8][8]; // L30
#pragma HLS resource variable=v40 core=ram_s2p_bram
int8_t v41[1][256][8][8]; // L31
#pragma HLS resource variable=v41 core=ram_s2p_bram
int8_t v42[1][256][10][10]; // L32
#pragma HLS resource variable=v42 core=ram_s2p_bram
int8_t v43[1][256][8][8]; // L33
#pragma HLS resource variable=v43 core=ram_s2p_bram
int8_t v44[1][256][8][8]; // L34
#pragma HLS resource variable=v44 core=ram_s2p_bram
int8_t v45[1][128][10][10]; // L35
#pragma HLS resource variable=v45 core=ram_s2p_bram
int8_t v46[1][128][8][8]; // L36
#pragma HLS resource variable=v46 core=ram_s2p_bram
int8_t v47[1][128][8][8]; // L37
#pragma HLS resource variable=v47 core=ram_s2p_bram
int8_t v48[1][128][18][18]; // L38
#pragma HLS resource variable=v48 core=ram_s2p_bram
int8_t v49[1][128][16][16]; // L39
#pragma HLS resource variable=v49 core=ram_s2p_bram
int8_t v50[1][128][16][16]; // L40
#pragma HLS resource variable=v50 core=ram_s2p_bram
int8_t v51[1][64][18][18]; // L41
#pragma HLS resource variable=v51 core=ram_s2p_bram
int8_t v52[1][64][16][16]; // L42
#pragma HLS resource variable=v52 core=ram_s2p_bram
int8_t v53[1][64][16][16]; // L43
#pragma HLS resource variable=v53 core=ram_s2p_bram
int8_t v54[1][64][34][34]; // L44
#pragma HLS resource variable=v54 core=ram_s2p_bram
int8_t v55[1][64][32][32]; // L45
#pragma HLS resource variable=v55 core=ram_s2p_bram
int8_t v56[1][64][32][32]; // L46
#pragma HLS resource variable=v56 core=ram_s2p_bram
int8_t v57[1][3][34][34]; // L47
#pragma HLS resource variable=v57 core=ram_s2p_bram
for (int v58 = 0; v58 < 3; v58 += 1) { // L48
for (int v59 = 0; v59 < 34; v59 += 1) { // L49
for (int v60 = 0; v60 < 34; v60 += 1) { // L50
v57[0][v58][v59][v60] = 0; // L51
}
}
}
for (int v61 = 0; v61 < 3; v61 += 1) { // L55
for (int v62 = 0; v62 < 32; v62 += 1) { // L56
for (int v63 = 0; v63 < 32; v63 += 1) { // L57
int8_t v64 = v0[0][v61][v62][v63]; // L58
v57[0][v61][(v62 + 1)][(v63 + 1)] = v64; // L59
}
}
}
for (int v65 = 0; v65 < 64; v65 += 1) { // L63
for (int v66 = 0; v66 < 32; v66 += 1) { // L64
for (int v67 = 0; v67 < 32; v67 += 1) { // L65
v56[0][v65][v66][v67] = 0; // L66
for (int v68 = 0; v68 < 3; v68 += 1) { // L67
for (int v69 = 0; v69 < 3; v69 += 1) { // L68
for (int v70 = 0; v70 < 3; v70 += 1) { // L69
int8_t v71 = v57[0][v68][(v66 + v69)][(v67 + v70)]; // L70
int8_t v72 = v1[v65][v68][v69][v70]; // L71
int8_t v73 = v56[0][v65][v66][v67]; // L72
int16_t v74 = v71; // L73
int16_t v75 = v72; // L74
int32_t v76 = v74 * v75; // L75
int32_t v77 = v73; // L76
int32_t v78 = v77 + v76; // L77
int8_t v79 = v78; // L78
v56[0][v65][v66][v67] = v79; // L79
}
}
}
}
}
}
for (int v80 = 0; v80 < 64; v80 += 1) { // L86
for (int v81 = 0; v81 < 32; v81 += 1) { // L87
for (int v82 = 0; v82 < 32; v82 += 1) { // L88
int8_t v83 = v56[0][v80][v81][v82]; // L89
bool v84 = v83 < 0; // L90
int8_t v85 = v84 ? (int8_t)0 : (int8_t)v83; // L91
v55[0][v80][v81][v82] = v85; // L92
}
}
}
for (int v86 = 0; v86 < 64; v86 += 1) { // L96
for (int v87 = 0; v87 < 34; v87 += 1) { // L97
for (int v88 = 0; v88 < 34; v88 += 1) { // L98
v54[0][v86][v87][v88] = 0; // L99
}
}
}
for (int v89 = 0; v89 < 64; v89 += 1) { // L103
for (int v90 = 0; v90 < 32; v90 += 1) { // L104
for (int v91 = 0; v91 < 32; v91 += 1) { // L105
int8_t v92 = v55[0][v89][v90][v91]; // L106
v54[0][v89][(v90 + 1)][(v91 + 1)] = v92; // L107
}
}
}
for (int v93 = 0; v93 < 64; v93 += 1) { // L111
for (int v94 = 0; v94 < 16; v94 += 1) { // L112
for (int v95 = 0; v95 < 16; v95 += 1) { // L113
v53[0][v93][v94][v95] = 0; // L114
for (int v96 = 0; v96 < 64; v96 += 1) { // L115
for (int v97 = 0; v97 < 3; v97 += 1) { // L116
for (int v98 = 0; v98 < 3; v98 += 1) { // L117
int8_t v99 = v54[0][v96][((v94 * 2) + v97)][((v95 * 2) + v98)]; // L118
int8_t v100 = v2[v93][v96][v97][v98]; // L119
int8_t v101 = v53[0][v93][v94][v95]; // L120
int16_t v102 = v99; // L121
int16_t v103 = v100; // L122
int32_t v104 = v102 * v103; // L123
int32_t v105 = v101; // L124
int32_t v106 = v105 + v104; // L125
int8_t v107 = v106; // L126
v53[0][v93][v94][v95] = v107; // L127
}
}
}
}
}
}
for (int v108 = 0; v108 < 64; v108 += 1) { // L134
for (int v109 = 0; v109 < 16; v109 += 1) { // L135
for (int v110 = 0; v110 < 16; v110 += 1) { // L136
int8_t v111 = v53[0][v108][v109][v110]; // L137
bool v112 = v111 < 0; // L138
int8_t v113 = v112 ? (int8_t)0 : (int8_t)v111; // L139
v52[0][v108][v109][v110] = v113; // L140
}
}
}
for (int v114 = 0; v114 < 64; v114 += 1) { // L144
for (int v115 = 0; v115 < 18; v115 += 1) { // L145
for (int v116 = 0; v116 < 18; v116 += 1) { // L146
v51[0][v114][v115][v116] = 0; // L147
}
}
}
for (int v117 = 0; v117 < 64; v117 += 1) { // L151
for (int v118 = 0; v118 < 16; v118 += 1) { // L152
for (int v119 = 0; v119 < 16; v119 += 1) { // L153
int8_t v120 = v52[0][v117][v118][v119]; // L154
v51[0][v117][(v118 + 1)][(v119 + 1)] = v120; // L155
}
}
}
for (int v121 = 0; v121 < 128; v121 += 1) { // L159
for (int v122 = 0; v122 < 16; v122 += 1) { // L160
for (int v123 = 0; v123 < 16; v123 += 1) { // L161
v50[0][v121][v122][v123] = 0; // L162
for (int v124 = 0; v124 < 64; v124 += 1) { // L163
for (int v125 = 0; v125 < 3; v125 += 1) { // L164
for (int v126 = 0; v126 < 3; v126 += 1) { // L165
int8_t v127 = v51[0][v124][(v122 + v125)][(v123 + v126)]; // L166
int8_t v128 = v3[v121][v124][v125][v126]; // L167
int8_t v129 = v50[0][v121][v122][v123]; // L168
int16_t v130 = v127; // L169
int16_t v131 = v128; // L170
int32_t v132 = v130 * v131; // L171
int32_t v133 = v129; // L172
int32_t v134 = v133 + v132; // L173
int8_t v135 = v134; // L174
v50[0][v121][v122][v123] = v135; // L175
}
}
}
}
}
}
for (int v136 = 0; v136 < 128; v136 += 1) { // L182
for (int v137 = 0; v137 < 16; v137 += 1) { // L183
for (int v138 = 0; v138 < 16; v138 += 1) { // L184
int8_t v139 = v50[0][v136][v137][v138]; // L185
bool v140 = v139 < 0; // L186
int8_t v141 = v140 ? (int8_t)0 : (int8_t)v139; // L187
v49[0][v136][v137][v138] = v141; // L188
}
}
}
for (int v142 = 0; v142 < 128; v142 += 1) { // L192
for (int v143 = 0; v143 < 18; v143 += 1) { // L193
for (int v144 = 0; v144 < 18; v144 += 1) { // L194
v48[0][v142][v143][v144] = 0; // L195
}
}
}
for (int v145 = 0; v145 < 128; v145 += 1) { // L199
for (int v146 = 0; v146 < 16; v146 += 1) { // L200
for (int v147 = 0; v147 < 16; v147 += 1) { // L201
int8_t v148 = v49[0][v145][v146][v147]; // L202
v48[0][v145][(v146 + 1)][(v147 + 1)] = v148; // L203
}
}
}
for (int v149 = 0; v149 < 128; v149 += 1) { // L207
for (int v150 = 0; v150 < 8; v150 += 1) { // L208
for (int v151 = 0; v151 < 8; v151 += 1) { // L209
v47[0][v149][v150][v151] = 0; // L210
for (int v152 = 0; v152 < 128; v152 += 1) { // L211
for (int v153 = 0; v153 < 3; v153 += 1) { // L212
for (int v154 = 0; v154 < 3; v154 += 1) { // L213
int8_t v155 = v48[0][v152][((v150 * 2) + v153)][((v151 * 2) + v154)]; // L214
int8_t v156 = v4[v149][v152][v153][v154]; // L215
int8_t v157 = v47[0][v149][v150][v151]; // L216
int16_t v158 = v155; // L217
int16_t v159 = v156; // L218
int32_t v160 = v158 * v159; // L219
int32_t v161 = v157; // L220
int32_t v162 = v161 + v160; // L221
int8_t v163 = v162; // L222
v47[0][v149][v150][v151] = v163; // L223
}
}
}
}
}
}
for (int v164 = 0; v164 < 128; v164 += 1) { // L230
for (int v165 = 0; v165 < 8; v165 += 1) { // L231
for (int v166 = 0; v166 < 8; v166 += 1) { // L232
int8_t v167 = v47[0][v164][v165][v166]; // L233
bool v168 = v167 < 0; // L234
int8_t v169 = v168 ? (int8_t)0 : (int8_t)v167; // L235
v46[0][v164][v165][v166] = v169; // L236
}
}
}
for (int v170 = 0; v170 < 128; v170 += 1) { // L240
for (int v171 = 0; v171 < 10; v171 += 1) { // L241
for (int v172 = 0; v172 < 10; v172 += 1) { // L242
v45[0][v170][v171][v172] = 0; // L243
}
}
}
for (int v173 = 0; v173 < 128; v173 += 1) { // L247
for (int v174 = 0; v174 < 8; v174 += 1) { // L248
for (int v175 = 0; v175 < 8; v175 += 1) { // L249
int8_t v176 = v46[0][v173][v174][v175]; // L250
v45[0][v173][(v174 + 1)][(v175 + 1)] = v176; // L251
}
}
}
for (int v177 = 0; v177 < 256; v177 += 1) { // L255
for (int v178 = 0; v178 < 8; v178 += 1) { // L256
for (int v179 = 0; v179 < 8; v179 += 1) { // L257
v44[0][v177][v178][v179] = 0; // L258
for (int v180 = 0; v180 < 128; v180 += 1) { // L259
for (int v181 = 0; v181 < 3; v181 += 1) { // L260
for (int v182 = 0; v182 < 3; v182 += 1) { // L261
int8_t v183 = v45[0][v180][(v178 + v181)][(v179 + v182)]; // L262
int8_t v184 = v5[v177][v180][v181][v182]; // L263
int8_t v185 = v44[0][v177][v178][v179]; // L264
int16_t v186 = v183; // L265
int16_t v187 = v184; // L266
int32_t v188 = v186 * v187; // L267
int32_t v189 = v185; // L268
int32_t v190 = v189 + v188; // L269
int8_t v191 = v190; // L270
v44[0][v177][v178][v179] = v191; // L271
}
}
}
}
}
}
for (int v192 = 0; v192 < 256; v192 += 1) { // L278
for (int v193 = 0; v193 < 8; v193 += 1) { // L279
for (int v194 = 0; v194 < 8; v194 += 1) { // L280
int8_t v195 = v44[0][v192][v193][v194]; // L281
bool v196 = v195 < 0; // L282
int8_t v197 = v196 ? (int8_t)0 : (int8_t)v195; // L283
v43[0][v192][v193][v194] = v197; // L284
}
}
}
for (int v198 = 0; v198 < 256; v198 += 1) { // L288
for (int v199 = 0; v199 < 10; v199 += 1) { // L289
for (int v200 = 0; v200 < 10; v200 += 1) { // L290
v42[0][v198][v199][v200] = 0; // L291
}
}
}
for (int v201 = 0; v201 < 256; v201 += 1) { // L295
for (int v202 = 0; v202 < 8; v202 += 1) { // L296
for (int v203 = 0; v203 < 8; v203 += 1) { // L297
int8_t v204 = v43[0][v201][v202][v203]; // L298
v42[0][v201][(v202 + 1)][(v203 + 1)] = v204; // L299
}
}
}
for (int v205 = 0; v205 < 256; v205 += 1) { // L303
for (int v206 = 0; v206 < 8; v206 += 1) { // L304
for (int v207 = 0; v207 < 8; v207 += 1) { // L305
v41[0][v205][v206][v207] = 0; // L306
for (int v208 = 0; v208 < 256; v208 += 1) { // L307
for (int v209 = 0; v209 < 3; v209 += 1) { // L308
for (int v210 = 0; v210 < 3; v210 += 1) { // L309
int8_t v211 = v42[0][v208][(v206 + v209)][(v207 + v210)]; // L310
int8_t v212 = v6[v205][v208][v209][v210]; // L311
int8_t v213 = v41[0][v205][v206][v207]; // L312
int16_t v214 = v211; // L313
int16_t v215 = v212; // L314
int32_t v216 = v214 * v215; // L315
int32_t v217 = v213; // L316
int32_t v218 = v217 + v216; // L317
int8_t v219 = v218; // L318
v41[0][v205][v206][v207] = v219; // L319
}
}
}
}
}
}
for (int v220 = 0; v220 < 256; v220 += 1) { // L326
for (int v221 = 0; v221 < 8; v221 += 1) { // L327
for (int v222 = 0; v222 < 8; v222 += 1) { // L328
int8_t v223 = v41[0][v220][v221][v222]; // L329
bool v224 = v223 < 0; // L330
int8_t v225 = v224 ? (int8_t)0 : (int8_t)v223; // L331
v40[0][v220][v221][v222] = v225; // L332
}
}
}
for (int v226 = 0; v226 < 256; v226 += 1) { // L336
for (int v227 = 0; v227 < 10; v227 += 1) { // L337
for (int v228 = 0; v228 < 10; v228 += 1) { // L338
v39[0][v226][v227][v228] = 0; // L339
}
}
}
for (int v229 = 0; v229 < 256; v229 += 1) { // L343
for (int v230 = 0; v230 < 8; v230 += 1) { // L344
for (int v231 = 0; v231 < 8; v231 += 1) { // L345
int8_t v232 = v40[0][v229][v230][v231]; // L346
v39[0][v229][(v230 + 1)][(v231 + 1)] = v232; // L347
}
}
}
for (int v233 = 0; v233 < 256; v233 += 1) { // L351
for (int v234 = 0; v234 < 4; v234 += 1) { // L352
for (int v235 = 0; v235 < 4; v235 += 1) { // L353
v38[0][v233][v234][v235] = 0; // L354
for (int v236 = 0; v236 < 256; v236 += 1) { // L355
for (int v237 = 0; v237 < 3; v237 += 1) { // L356
for (int v238 = 0; v238 < 3; v238 += 1) { // L357
int8_t v239 = v39[0][v236][((v234 * 2) + v237)][((v235 * 2) + v238)]; // L358
int8_t v240 = v7[v233][v236][v237][v238]; // L359
int8_t v241 = v38[0][v233][v234][v235]; // L360
int16_t v242 = v239; // L361
int16_t v243 = v240; // L362
int32_t v244 = v242 * v243; // L363
int32_t v245 = v241; // L364
int32_t v246 = v245 + v244; // L365
int8_t v247 = v246; // L366
v38[0][v233][v234][v235] = v247; // L367
}
}
}
}
}
}
for (int v248 = 0; v248 < 256; v248 += 1) { // L374
for (int v249 = 0; v249 < 4; v249 += 1) { // L375
for (int v250 = 0; v250 < 4; v250 += 1) { // L376
int8_t v251 = v38[0][v248][v249][v250]; // L377
bool v252 = v251 < 0; // L378
int8_t v253 = v252 ? (int8_t)0 : (int8_t)v251; // L379
v37[0][v248][v249][v250] = v253; // L380
}
}
}
for (int v254 = 0; v254 < 256; v254 += 1) { // L384
for (int v255 = 0; v255 < 6; v255 += 1) { // L385
for (int v256 = 0; v256 < 6; v256 += 1) { // L386
v36[0][v254][v255][v256] = 0; // L387
}
}
}
for (int v257 = 0; v257 < 256; v257 += 1) { // L391
for (int v258 = 0; v258 < 4; v258 += 1) { // L392
for (int v259 = 0; v259 < 4; v259 += 1) { // L393
int8_t v260 = v37[0][v257][v258][v259]; // L394
v36[0][v257][(v258 + 1)][(v259 + 1)] = v260; // L395
}
}
}
for (int v261 = 0; v261 < 512; v261 += 1) { // L399
for (int v262 = 0; v262 < 4; v262 += 1) { // L400
for (int v263 = 0; v263 < 4; v263 += 1) { // L401
v35[0][v261][v262][v263] = 0; // L402
for (int v264 = 0; v264 < 256; v264 += 1) { // L403
for (int v265 = 0; v265 < 3; v265 += 1) { // L404
for (int v266 = 0; v266 < 3; v266 += 1) { // L405
int8_t v267 = v36[0][v264][(v262 + v265)][(v263 + v266)]; // L406
int8_t v268 = v8[v261][v264][v265][v266]; // L407
int8_t v269 = v35[0][v261][v262][v263]; // L408
int16_t v270 = v267; // L409
int16_t v271 = v268; // L410
int32_t v272 = v270 * v271; // L411
int32_t v273 = v269; // L412
int32_t v274 = v273 + v272; // L413
int8_t v275 = v274; // L414
v35[0][v261][v262][v263] = v275; // L415
}
}
}
}
}
}
for (int v276 = 0; v276 < 512; v276 += 1) { // L422
for (int v277 = 0; v277 < 4; v277 += 1) { // L423
for (int v278 = 0; v278 < 4; v278 += 1) { // L424
int8_t v279 = v35[0][v276][v277][v278]; // L425
bool v280 = v279 < 0; // L426
int8_t v281 = v280 ? (int8_t)0 : (int8_t)v279; // L427
v34[0][v276][v277][v278] = v281; // L428
}
}
}
for (int v282 = 0; v282 < 512; v282 += 1) { // L432
for (int v283 = 0; v283 < 6; v283 += 1) { // L433
for (int v284 = 0; v284 < 6; v284 += 1) { // L434
v33[0][v282][v283][v284] = 0; // L435
}
}
}
for (int v285 = 0; v285 < 512; v285 += 1) { // L439
for (int v286 = 0; v286 < 4; v286 += 1) { // L440
for (int v287 = 0; v287 < 4; v287 += 1) { // L441
int8_t v288 = v34[0][v285][v286][v287]; // L442
v33[0][v285][(v286 + 1)][(v287 + 1)] = v288; // L443
}
}
}
for (int v289 = 0; v289 < 512; v289 += 1) { // L447
for (int v290 = 0; v290 < 4; v290 += 1) { // L448
for (int v291 = 0; v291 < 4; v291 += 1) { // L449
v32[0][v289][v290][v291] = 0; // L450
for (int v292 = 0; v292 < 512; v292 += 1) { // L451
for (int v293 = 0; v293 < 3; v293 += 1) { // L452
for (int v294 = 0; v294 < 3; v294 += 1) { // L453
int8_t v295 = v33[0][v292][(v290 + v293)][(v291 + v294)]; // L454
int8_t v296 = v9[v289][v292][v293][v294]; // L455
int8_t v297 = v32[0][v289][v290][v291]; // L456
int16_t v298 = v295; // L457
int16_t v299 = v296; // L458
int32_t v300 = v298 * v299; // L459
int32_t v301 = v297; // L460
int32_t v302 = v301 + v300; // L461
int8_t v303 = v302; // L462
v32[0][v289][v290][v291] = v303; // L463
}
}
}
}
}
}
for (int v304 = 0; v304 < 512; v304 += 1) { // L470
for (int v305 = 0; v305 < 4; v305 += 1) { // L471
for (int v306 = 0; v306 < 4; v306 += 1) { // L472
int8_t v307 = v32[0][v304][v305][v306]; // L473
bool v308 = v307 < 0; // L474
int8_t v309 = v308 ? (int8_t)0 : (int8_t)v307; // L475
v31[0][v304][v305][v306] = v309; // L476
}
}
}
for (int v310 = 0; v310 < 512; v310 += 1) { // L480
for (int v311 = 0; v311 < 6; v311 += 1) { // L481
for (int v312 = 0; v312 < 6; v312 += 1) { // L482
v30[0][v310][v311][v312] = 0; // L483
}
}
}
for (int v313 = 0; v313 < 512; v313 += 1) { // L487
for (int v314 = 0; v314 < 4; v314 += 1) { // L488
for (int v315 = 0; v315 < 4; v315 += 1) { // L489
int8_t v316 = v31[0][v313][v314][v315]; // L490
v30[0][v313][(v314 + 1)][(v315 + 1)] = v316; // L491
}
}
}
for (int v317 = 0; v317 < 512; v317 += 1) { // L495
for (int v318 = 0; v318 < 2; v318 += 1) { // L496
for (int v319 = 0; v319 < 2; v319 += 1) { // L497
v29[0][v317][v318][v319] = 0; // L498
for (int v320 = 0; v320 < 512; v320 += 1) { // L499
for (int v321 = 0; v321 < 3; v321 += 1) { // L500
for (int v322 = 0; v322 < 3; v322 += 1) { // L501
int8_t v323 = v30[0][v320][((v318 * 2) + v321)][((v319 * 2) + v322)]; // L502
int8_t v324 = v10[v317][v320][v321][v322]; // L503
int8_t v325 = v29[0][v317][v318][v319]; // L504
int16_t v326 = v323; // L505
int16_t v327 = v324; // L506
int32_t v328 = v326 * v327; // L507
int32_t v329 = v325; // L508
int32_t v330 = v329 + v328; // L509
int8_t v331 = v330; // L510
v29[0][v317][v318][v319] = v331; // L511
}
}
}
}
}
}
for (int v332 = 0; v332 < 512; v332 += 1) { // L518
for (int v333 = 0; v333 < 2; v333 += 1) { // L519
for (int v334 = 0; v334 < 2; v334 += 1) { // L520
int8_t v335 = v29[0][v332][v333][v334]; // L521
bool v336 = v335 < 0; // L522
int8_t v337 = v336 ? (int8_t)0 : (int8_t)v335; // L523
v28[0][v332][v333][v334] = v337; // L524
}
}
}
for (int v338 = 0; v338 < 512; v338 += 1) { // L528
for (int v339 = 0; v339 < 4; v339 += 1) { // L529
for (int v340 = 0; v340 < 4; v340 += 1) { // L530
v27[0][v338][v339][v340] = 0; // L531
}
}
}
for (int v341 = 0; v341 < 512; v341 += 1) { // L535
for (int v342 = 0; v342 < 2; v342 += 1) { // L536
for (int v343 = 0; v343 < 2; v343 += 1) { // L537
int8_t v344 = v28[0][v341][v342][v343]; // L538
v27[0][v341][(v342 + 1)][(v343 + 1)] = v344; // L539
}
}
}
for (int v345 = 0; v345 < 512; v345 += 1) { // L543
for (int v346 = 0; v346 < 2; v346 += 1) { // L544
for (int v347 = 0; v347 < 2; v347 += 1) { // L545
v26[0][v345][v346][v347] = 0; // L546
for (int v348 = 0; v348 < 512; v348 += 1) { // L547
for (int v349 = 0; v349 < 3; v349 += 1) { // L548
for (int v350 = 0; v350 < 3; v350 += 1) { // L549
int8_t v351 = v27[0][v348][(v346 + v349)][(v347 + v350)]; // L550
int8_t v352 = v11[v345][v348][v349][v350]; // L551
int8_t v353 = v26[0][v345][v346][v347]; // L552
int16_t v354 = v351; // L553
int16_t v355 = v352; // L554
int32_t v356 = v354 * v355; // L555
int32_t v357 = v353; // L556
int32_t v358 = v357 + v356; // L557
int8_t v359 = v358; // L558
v26[0][v345][v346][v347] = v359; // L559
}
}
}
}
}
}
for (int v360 = 0; v360 < 512; v360 += 1) { // L566
for (int v361 = 0; v361 < 2; v361 += 1) { // L567
for (int v362 = 0; v362 < 2; v362 += 1) { // L568
int8_t v363 = v26[0][v360][v361][v362]; // L569
bool v364 = v363 < 0; // L570
int8_t v365 = v364 ? (int8_t)0 : (int8_t)v363; // L571
v25[0][v360][v361][v362] = v365; // L572
}
}
}
for (int v366 = 0; v366 < 512; v366 += 1) { // L576
for (int v367 = 0; v367 < 4; v367 += 1) { // L577
for (int v368 = 0; v368 < 4; v368 += 1) { // L578
v24[0][v366][v367][v368] = 0; // L579
}
}
}
for (int v369 = 0; v369 < 512; v369 += 1) { // L583
for (int v370 = 0; v370 < 2; v370 += 1) { // L584
for (int v371 = 0; v371 < 2; v371 += 1) { // L585
int8_t v372 = v25[0][v369][v370][v371]; // L586
v24[0][v369][(v370 + 1)][(v371 + 1)] = v372; // L587
}
}
}
for (int v373 = 0; v373 < 512; v373 += 1) { // L591
for (int v374 = 0; v374 < 2; v374 += 1) { // L592
for (int v375 = 0; v375 < 2; v375 += 1) { // L593
v23[0][v373][v374][v375] = 0; // L594
for (int v376 = 0; v376 < 512; v376 += 1) { // L595
for (int v377 = 0; v377 < 3; v377 += 1) { // L596
for (int v378 = 0; v378 < 3; v378 += 1) { // L597
int8_t v379 = v24[0][v376][(v374 + v377)][(v375 + v378)]; // L598
int8_t v380 = v12[v373][v376][v377][v378]; // L599
int8_t v381 = v23[0][v373][v374][v375]; // L600
int16_t v382 = v379; // L601
int16_t v383 = v380; // L602
int32_t v384 = v382 * v383; // L603
int32_t v385 = v381; // L604
int32_t v386 = v385 + v384; // L605
int8_t v387 = v386; // L606
v23[0][v373][v374][v375] = v387; // L607
}
}
}
}
}
}
for (int v388 = 0; v388 < 512; v388 += 1) { // L614
for (int v389 = 0; v389 < 2; v389 += 1) { // L615
for (int v390 = 0; v390 < 2; v390 += 1) { // L616
int8_t v391 = v23[0][v388][v389][v390]; // L617
bool v392 = v391 < 0; // L618
int8_t v393 = v392 ? (int8_t)0 : (int8_t)v391; // L619
v22[0][v388][v389][v390] = v393; // L620
}
}
}
for (int v394 = 0; v394 < 512; v394 += 1) { // L624
for (int v395 = 0; v395 < 4; v395 += 1) { // L625
for (int v396 = 0; v396 < 4; v396 += 1) { // L626
v21[0][v394][v395][v396] = 0; // L627
}
}
}
for (int v397 = 0; v397 < 512; v397 += 1) { // L631
for (int v398 = 0; v398 < 2; v398 += 1) { // L632
for (int v399 = 0; v399 < 2; v399 += 1) { // L633
int8_t v400 = v22[0][v397][v398][v399]; // L634
v21[0][v397][(v398 + 1)][(v399 + 1)] = v400; // L635
}
}
}
for (int v401 = 0; v401 < 512; v401 += 1) { // L639
v20[0][v401][0][0] = 0; // L640
for (int v402 = 0; v402 < 512; v402 += 1) { // L641
for (int v403 = 0; v403 < 3; v403 += 1) { // L642
for (int v404 = 0; v404 < 3; v404 += 1) { // L643
int8_t v405 = v21[0][v402][v403][v404]; // L644
int8_t v406 = v13[v401][v402][v403][v404]; // L645
int8_t v407 = v20[0][v401][0][0]; // L646
int16_t v408 = v405; // L647
int16_t v409 = v406; // L648
int32_t v410 = v408 * v409; // L649
int32_t v411 = v407; // L650
int32_t v412 = v411 + v410; // L651
int8_t v413 = v412; // L652
v20[0][v401][0][0] = v413; // L653
}
}
}
}
for (int v414 = 0; v414 < 512; v414 += 1) { // L658
int8_t v415 = v20[0][v414][0][0]; // L659
bool v416 = v415 < 0; // L660
int8_t v417 = v416 ? (int8_t)0 : (int8_t)v415; // L661
v19[0][v414][0][0] = v417; // L662
}
for (int v418 = 0; v418 < 512; v418 += 1) { // L664
v18[0][v418][0][0] = 0; // L665
}
for (int v419 = 0; v419 < 512; v419 += 1) { // L667
int8_t v420 = v19[0][v419][0][0]; // L668
int8_t v421 = v18[0][v419][0][0]; // L669
int32_t v422 = v421; // L670
int32_t v423 = v420; // L671
int32_t v424 = v422 + v423; // L672
int8_t v425 = v424; // L673
v18[0][v419][0][0] = v425; // L674
}
for (int v426 = 0; v426 < 512; v426 += 1) { // L676
int8_t v427 = v18[0][v426][0][0]; // L677
v18[0][v426][0][0] = v427; // L678
}
for (int v428 = 0; v428 < 512; v428 += 1) { // L680
int8_t v429 = v18[0][v428][0][0]; // L681
v17[0][v428] = v429; // L682
}
#pragma HLS resource variable=v16 core=ram_s2p_bram
for (int v431 = 0; v431 < 10; v431 += 1) { // L685
v15[0][v431] = 0; // L686
for (int v432 = 0; v432 < 512; v432 += 1) { // L687
int8_t v433 = v17[0][v432]; // L688
int8_t v434 = v14[v431][v432]; // L689
int8_t v435 = v15[0][v431]; // L690
int16_t v436 = v433; // L691
int16_t v437 = v434; // L692
int32_t v438 = v436 * v437; // L693
int32_t v439 = v435; // L694
int32_t v440 = v439 + v438; // L695
int8_t v441 = v440; // L696
v15[0][v431] = v441; // L697
}
int8_t v442 = v15[0][v431]; // L699
int16_t v443 = 1; // L700
int16_t v444 = v442; // L701
int32_t v445 = v443 * v444; // L702
int8_t v446 = v16[v431]; // L703
int16_t v447 = 1; // L704
int16_t v448 = v446; // L705
int32_t v449 = v447 * v448; // L706
int32_t v450 = v445 + v449; // L707
int8_t v451 = v450; // L708
v15[0][v431] = v451; // L709
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,62 @@
//===------------------------------------------------------------*- C++ -*-===//
//
// Automatically generated file for High-level Synthesis (HLS).
//
//===----------------------------------------------------------------------===//
#include <algorithm>
#include <ap_axi_sdata.h>
#include <ap_fixed.h>
#include <ap_int.h>
#include <hls_math.h>
#include <hls_stream.h>
#include <math.h>
#include <stdint.h>
using namespace std;
/// This is top function.
/// Latency=201334786
/// DSP=10
void bicg_4096(
float v0[4096][4096],
float v1[4096],
float v2[4096],
float v3[4096],
float v4[4096]
) { // L2
#pragma HLS interface s_axilite port=return bundle=ctrl
#pragma HLS interface bram port=v0
#pragma HLS interface bram port=v1
#pragma HLS interface bram port=v2
#pragma HLS interface bram port=v3
#pragma HLS interface bram port=v4
#pragma HLS resource variable=v0 core=ram_s2p_bram
#pragma HLS resource variable=v1 core=ram_s2p_bram
#pragma HLS resource variable=v2 core=ram_s2p_bram
#pragma HLS resource variable=v3 core=ram_s2p_bram
#pragma HLS resource variable=v4 core=ram_s2p_bram
for (int v5 = 0; v5 < 4096; v5 += 1) { // L3, S[0,201334786), latency=49154
for (int v6 = 0; v6 < 4096; v6 += 1) { // L4, S[0,49154), latency=12
float v7 = v1[v6]; // L5, S[4,6)
float v8 = v4[v5]; // L6, S[0,2)
float v9 = v0[v5][v6]; // L7, S[0,2)
float v10 = v8 * v9; // L8, S[2,6)
float v11 = v7 + v10; // L9, S[6,11)
v1[v6] = v11; // L10, S[11,12)
float v12 = v2[v5]; // L11, S[4,6)
float v13 = v3[v6]; // L12, S[0,2)
float v14 = v9 * v13; // L13, S[2,6)
float v15 = v12 + v14; // L14, S[6,11)
v2[v5] = v15; // L15, S[11,12)
}
}
}

View File

@ -0,0 +1,770 @@
//===------------------------------------------------------------*- C++ -*-===//
//
// Automatically generated file for High-level Synthesis (HLS).
//
//===----------------------------------------------------------------------===//
#include <algorithm>
#include <ap_axi_sdata.h>
#include <ap_fixed.h>
#include <ap_int.h>
#include <hls_math.h>
#include <hls_stream.h>
#include <math.h>
#include <stdint.h>
using namespace std;
/// This is top function.
/// Latency=8519704
/// DSP=19
void bicg_4096(
float v0[4096][4096],
float v1[4096],
float v2[4096],
float v3[4096],
float v4[4096]
) { // L1
#pragma HLS interface s_axilite port=return bundle=ctrl
#pragma HLS interface bram port=v0
#pragma HLS interface bram port=v1
#pragma HLS interface bram port=v2
#pragma HLS interface bram port=v3
#pragma HLS interface bram port=v4
#pragma HLS array_partition variable=v0 cyclic factor=8 dim=1
#pragma HLS array_partition variable=v0 cyclic factor=16 dim=2
#pragma HLS resource variable=v0 core=ram_s2p_bram
#pragma HLS array_partition variable=v1 cyclic factor=16 dim=1
#pragma HLS resource variable=v1 core=ram_s2p_bram
#pragma HLS array_partition variable=v2 cyclic factor=8 dim=1
#pragma HLS resource variable=v2 core=ram_s2p_bram
#pragma HLS array_partition variable=v3 cyclic factor=16 dim=1
#pragma HLS resource variable=v3 core=ram_s2p_bram
#pragma HLS array_partition variable=v4 cyclic factor=8 dim=1
#pragma HLS resource variable=v4 core=ram_s2p_bram
for (int v5 = 0; v5 < 4096; v5 += 16) { // L2
for (int v6 = 0; v6 < 4096; v6 += 8) { // L3
#pragma HLS pipeline II=43
float v7 = v1[v5]; // L4, S[12,12)
float v8 = v4[v6]; // L5, S[12,12)
float v9 = v0[v6][v5]; // L6, S[12,12)
float v10 = v8 * v9; // L7, S[12,12)
float v11 = v7 + v10; // L8, S[12,12)
float v12 = v2[v6]; // L9, S[12,12)
float v13 = v3[v5]; // L10, S[12,12)
float v14 = v9 * v13; // L11, S[12,12)
float v15 = v12 + v14; // L12, S[12,12)
float v16 = v4[(v6 + 1)]; // L13
float v17 = v0[(v6 + 1)][v5]; // L14
float v18 = v16 * v17; // L15, S[12,12)
float v19 = v11 + v18; // L16, S[12,12)
float v20 = v2[(v6 + 1)]; // L17
float v21 = v17 * v13; // L18, S[12,12)
float v22 = v20 + v21; // L19, S[12,12)
float v23 = v4[(v6 + 2)]; // L20
float v24 = v0[(v6 + 2)][v5]; // L21
float v25 = v23 * v24; // L22, S[12,12)
float v26 = v19 + v25; // L23, S[12,12)
float v27 = v2[(v6 + 2)]; // L24
float v28 = v24 * v13; // L25, S[12,12)
float v29 = v27 + v28; // L26, S[12,12)
float v30 = v4[(v6 + 3)]; // L27
float v31 = v0[(v6 + 3)][v5]; // L28
float v32 = v30 * v31; // L29, S[12,12)
float v33 = v26 + v32; // L30, S[12,12)
float v34 = v2[(v6 + 3)]; // L31
float v35 = v31 * v13; // L32, S[12,12)
float v36 = v34 + v35; // L33, S[12,12)
float v37 = v4[(v6 + 4)]; // L34
float v38 = v0[(v6 + 4)][v5]; // L35
float v39 = v37 * v38; // L36, S[12,12)
float v40 = v33 + v39; // L37, S[12,12)
float v41 = v2[(v6 + 4)]; // L38
float v42 = v38 * v13; // L39, S[12,12)
float v43 = v41 + v42; // L40, S[12,12)
float v44 = v4[(v6 + 5)]; // L41
float v45 = v0[(v6 + 5)][v5]; // L42
float v46 = v44 * v45; // L43, S[12,12)
float v47 = v40 + v46; // L44, S[12,12)
float v48 = v2[(v6 + 5)]; // L45
float v49 = v45 * v13; // L46, S[12,12)
float v50 = v48 + v49; // L47, S[12,12)
float v51 = v4[(v6 + 6)]; // L48
float v52 = v0[(v6 + 6)][v5]; // L49
float v53 = v51 * v52; // L50, S[12,12)
float v54 = v47 + v53; // L51, S[12,12)
float v55 = v2[(v6 + 6)]; // L52
float v56 = v52 * v13; // L53, S[12,12)
float v57 = v55 + v56; // L54, S[12,12)
float v58 = v4[(v6 + 7)]; // L55
float v59 = v0[(v6 + 7)][v5]; // L56
float v60 = v58 * v59; // L57, S[12,12)
float v61 = v54 + v60; // L58, S[12,12)
v1[v5] = v61; // L59, S[12,12)
float v62 = v2[(v6 + 7)]; // L60
float v63 = v59 * v13; // L61, S[12,12)
float v64 = v62 + v63; // L62, S[12,12)
float v65 = v1[(v5 + 1)]; // L63
float v66 = v0[v6][(v5 + 1)]; // L64
float v67 = v8 * v66; // L65, S[12,12)
float v68 = v65 + v67; // L66, S[12,12)
float v69 = v3[(v5 + 1)]; // L67
float v70 = v66 * v69; // L68, S[12,12)
float v71 = v15 + v70; // L69, S[12,12)
float v72 = v0[(v6 + 1)][(v5 + 1)]; // L70
float v73 = v16 * v72; // L71, S[12,12)
float v74 = v68 + v73; // L72, S[12,12)
float v75 = v72 * v69; // L73, S[12,12)
float v76 = v22 + v75; // L74, S[12,12)
float v77 = v0[(v6 + 2)][(v5 + 1)]; // L75
float v78 = v23 * v77; // L76, S[12,12)
float v79 = v74 + v78; // L77, S[12,12)
float v80 = v77 * v69; // L78, S[12,12)
float v81 = v29 + v80; // L79, S[12,12)
float v82 = v0[(v6 + 3)][(v5 + 1)]; // L80
float v83 = v30 * v82; // L81, S[12,12)
float v84 = v79 + v83; // L82, S[12,12)
float v85 = v82 * v69; // L83, S[12,12)
float v86 = v36 + v85; // L84, S[12,12)
float v87 = v0[(v6 + 4)][(v5 + 1)]; // L85
float v88 = v37 * v87; // L86, S[12,12)
float v89 = v84 + v88; // L87, S[12,12)
float v90 = v87 * v69; // L88, S[12,12)
float v91 = v43 + v90; // L89, S[12,12)
float v92 = v0[(v6 + 5)][(v5 + 1)]; // L90
float v93 = v44 * v92; // L91, S[12,12)
float v94 = v89 + v93; // L92, S[12,12)
float v95 = v92 * v69; // L93, S[12,12)
float v96 = v50 + v95; // L94, S[12,12)
float v97 = v0[(v6 + 6)][(v5 + 1)]; // L95
float v98 = v51 * v97; // L96, S[12,12)
float v99 = v94 + v98; // L97, S[12,12)
float v100 = v97 * v69; // L98, S[12,12)
float v101 = v57 + v100; // L99, S[12,12)
float v102 = v0[(v6 + 7)][(v5 + 1)]; // L100
float v103 = v58 * v102; // L101, S[12,12)
float v104 = v99 + v103; // L102, S[12,12)
v1[(v5 + 1)] = v104; // L103
float v105 = v102 * v69; // L104, S[12,12)
float v106 = v64 + v105; // L105, S[12,12)
float v107 = v1[(v5 + 2)]; // L106
float v108 = v0[v6][(v5 + 2)]; // L107
float v109 = v8 * v108; // L108, S[12,12)
float v110 = v107 + v109; // L109, S[12,12)
float v111 = v3[(v5 + 2)]; // L110
float v112 = v108 * v111; // L111, S[12,12)
float v113 = v71 + v112; // L112, S[12,12)
float v114 = v0[(v6 + 1)][(v5 + 2)]; // L113
float v115 = v16 * v114; // L114, S[12,12)
float v116 = v110 + v115; // L115, S[12,12)
float v117 = v114 * v111; // L116, S[12,12)
float v118 = v76 + v117; // L117, S[12,12)
float v119 = v0[(v6 + 2)][(v5 + 2)]; // L118
float v120 = v23 * v119; // L119, S[12,12)
float v121 = v116 + v120; // L120, S[12,12)
float v122 = v119 * v111; // L121, S[12,12)
float v123 = v81 + v122; // L122, S[12,12)
float v124 = v0[(v6 + 3)][(v5 + 2)]; // L123
float v125 = v30 * v124; // L124, S[12,12)
float v126 = v121 + v125; // L125, S[12,12)
float v127 = v124 * v111; // L126, S[12,12)
float v128 = v86 + v127; // L127, S[12,12)
float v129 = v0[(v6 + 4)][(v5 + 2)]; // L128
float v130 = v37 * v129; // L129, S[12,12)
float v131 = v126 + v130; // L130, S[12,12)
float v132 = v129 * v111; // L131, S[12,12)
float v133 = v91 + v132; // L132, S[12,12)
float v134 = v0[(v6 + 5)][(v5 + 2)]; // L133
float v135 = v44 * v134; // L134, S[12,12)
float v136 = v131 + v135; // L135, S[12,12)
float v137 = v134 * v111; // L136, S[12,12)
float v138 = v96 + v137; // L137, S[12,12)
float v139 = v0[(v6 + 6)][(v5 + 2)]; // L138
float v140 = v51 * v139; // L139, S[12,12)
float v141 = v136 + v140; // L140, S[12,12)
float v142 = v139 * v111; // L141, S[12,12)
float v143 = v101 + v142; // L142, S[12,12)
float v144 = v0[(v6 + 7)][(v5 + 2)]; // L143
float v145 = v58 * v144; // L144, S[12,12)
float v146 = v141 + v145; // L145, S[12,12)
v1[(v5 + 2)] = v146; // L146
float v147 = v144 * v111; // L147, S[12,12)
float v148 = v106 + v147; // L148, S[12,12)
float v149 = v1[(v5 + 3)]; // L149
float v150 = v0[v6][(v5 + 3)]; // L150
float v151 = v8 * v150; // L151, S[12,12)
float v152 = v149 + v151; // L152, S[12,12)
float v153 = v3[(v5 + 3)]; // L153
float v154 = v150 * v153; // L154, S[12,12)
float v155 = v113 + v154; // L155, S[12,12)
float v156 = v0[(v6 + 1)][(v5 + 3)]; // L156
float v157 = v16 * v156; // L157, S[12,12)
float v158 = v152 + v157; // L158, S[12,12)
float v159 = v156 * v153; // L159, S[12,12)
float v160 = v118 + v159; // L160, S[12,12)
float v161 = v0[(v6 + 2)][(v5 + 3)]; // L161
float v162 = v23 * v161; // L162, S[12,12)
float v163 = v158 + v162; // L163, S[12,12)
float v164 = v161 * v153; // L164, S[12,12)
float v165 = v123 + v164; // L165, S[12,12)
float v166 = v0[(v6 + 3)][(v5 + 3)]; // L166
float v167 = v30 * v166; // L167, S[12,12)
float v168 = v163 + v167; // L168, S[12,12)
float v169 = v166 * v153; // L169, S[12,12)
float v170 = v128 + v169; // L170, S[12,12)
float v171 = v0[(v6 + 4)][(v5 + 3)]; // L171
float v172 = v37 * v171; // L172, S[12,12)
float v173 = v168 + v172; // L173, S[12,12)
float v174 = v171 * v153; // L174, S[12,12)
float v175 = v133 + v174; // L175, S[12,12)
float v176 = v0[(v6 + 5)][(v5 + 3)]; // L176
float v177 = v44 * v176; // L177, S[12,12)
float v178 = v173 + v177; // L178, S[12,12)
float v179 = v176 * v153; // L179, S[12,12)
float v180 = v138 + v179; // L180, S[12,12)
float v181 = v0[(v6 + 6)][(v5 + 3)]; // L181
float v182 = v51 * v181; // L182, S[12,12)
float v183 = v178 + v182; // L183, S[12,12)
float v184 = v181 * v153; // L184, S[12,12)
float v185 = v143 + v184; // L185, S[12,12)
float v186 = v0[(v6 + 7)][(v5 + 3)]; // L186
float v187 = v58 * v186; // L187, S[12,12)
float v188 = v183 + v187; // L188, S[12,12)
v1[(v5 + 3)] = v188; // L189
float v189 = v186 * v153; // L190, S[12,12)
float v190 = v148 + v189; // L191, S[12,12)
float v191 = v1[(v5 + 4)]; // L192
float v192 = v0[v6][(v5 + 4)]; // L193
float v193 = v8 * v192; // L194, S[12,12)
float v194 = v191 + v193; // L195, S[12,12)
float v195 = v3[(v5 + 4)]; // L196
float v196 = v192 * v195; // L197, S[12,12)
float v197 = v155 + v196; // L198, S[12,12)
float v198 = v0[(v6 + 1)][(v5 + 4)]; // L199
float v199 = v16 * v198; // L200, S[12,12)
float v200 = v194 + v199; // L201, S[12,12)
float v201 = v198 * v195; // L202, S[12,12)
float v202 = v160 + v201; // L203, S[12,12)
float v203 = v0[(v6 + 2)][(v5 + 4)]; // L204
float v204 = v23 * v203; // L205, S[12,12)
float v205 = v200 + v204; // L206, S[12,12)
float v206 = v203 * v195; // L207, S[12,12)
float v207 = v165 + v206; // L208, S[12,12)
float v208 = v0[(v6 + 3)][(v5 + 4)]; // L209
float v209 = v30 * v208; // L210, S[12,12)
float v210 = v205 + v209; // L211, S[12,12)
float v211 = v208 * v195; // L212, S[12,12)
float v212 = v170 + v211; // L213, S[12,12)
float v213 = v0[(v6 + 4)][(v5 + 4)]; // L214
float v214 = v37 * v213; // L215, S[12,12)
float v215 = v210 + v214; // L216, S[12,12)
float v216 = v213 * v195; // L217, S[12,12)
float v217 = v175 + v216; // L218, S[12,12)
float v218 = v0[(v6 + 5)][(v5 + 4)]; // L219
float v219 = v44 * v218; // L220, S[12,12)
float v220 = v215 + v219; // L221, S[12,12)
float v221 = v218 * v195; // L222, S[12,12)
float v222 = v180 + v221; // L223, S[12,12)
float v223 = v0[(v6 + 6)][(v5 + 4)]; // L224
float v224 = v51 * v223; // L225, S[12,12)
float v225 = v220 + v224; // L226, S[12,12)
float v226 = v223 * v195; // L227, S[12,12)
float v227 = v185 + v226; // L228, S[12,12)
float v228 = v0[(v6 + 7)][(v5 + 4)]; // L229
float v229 = v58 * v228; // L230, S[12,12)
float v230 = v225 + v229; // L231, S[12,12)
v1[(v5 + 4)] = v230; // L232
float v231 = v228 * v195; // L233, S[12,12)
float v232 = v190 + v231; // L234, S[12,12)
float v233 = v1[(v5 + 5)]; // L235
float v234 = v0[v6][(v5 + 5)]; // L236
float v235 = v8 * v234; // L237, S[12,12)
float v236 = v233 + v235; // L238, S[12,12)
float v237 = v3[(v5 + 5)]; // L239
float v238 = v234 * v237; // L240, S[12,12)
float v239 = v197 + v238; // L241, S[12,12)
float v240 = v0[(v6 + 1)][(v5 + 5)]; // L242
float v241 = v16 * v240; // L243, S[12,12)
float v242 = v236 + v241; // L244, S[12,12)
float v243 = v240 * v237; // L245, S[12,12)
float v244 = v202 + v243; // L246, S[12,12)
float v245 = v0[(v6 + 2)][(v5 + 5)]; // L247
float v246 = v23 * v245; // L248, S[12,12)
float v247 = v242 + v246; // L249, S[12,12)
float v248 = v245 * v237; // L250, S[12,12)
float v249 = v207 + v248; // L251, S[12,12)
float v250 = v0[(v6 + 3)][(v5 + 5)]; // L252
float v251 = v30 * v250; // L253, S[12,12)
float v252 = v247 + v251; // L254, S[12,12)
float v253 = v250 * v237; // L255, S[12,12)
float v254 = v212 + v253; // L256, S[12,12)
float v255 = v0[(v6 + 4)][(v5 + 5)]; // L257
float v256 = v37 * v255; // L258, S[12,12)
float v257 = v252 + v256; // L259, S[12,12)
float v258 = v255 * v237; // L260, S[12,12)
float v259 = v217 + v258; // L261, S[12,12)
float v260 = v0[(v6 + 5)][(v5 + 5)]; // L262
float v261 = v44 * v260; // L263, S[12,12)
float v262 = v257 + v261; // L264, S[12,12)
float v263 = v260 * v237; // L265, S[12,12)
float v264 = v222 + v263; // L266, S[12,12)
float v265 = v0[(v6 + 6)][(v5 + 5)]; // L267
float v266 = v51 * v265; // L268, S[12,12)
float v267 = v262 + v266; // L269, S[12,12)
float v268 = v265 * v237; // L270, S[12,12)
float v269 = v227 + v268; // L271, S[12,12)
float v270 = v0[(v6 + 7)][(v5 + 5)]; // L272
float v271 = v58 * v270; // L273, S[12,12)
float v272 = v267 + v271; // L274, S[12,12)
v1[(v5 + 5)] = v272; // L275
float v273 = v270 * v237; // L276, S[12,12)
float v274 = v232 + v273; // L277, S[12,12)
float v275 = v1[(v5 + 6)]; // L278
float v276 = v0[v6][(v5 + 6)]; // L279
float v277 = v8 * v276; // L280, S[12,12)
float v278 = v275 + v277; // L281, S[12,12)
float v279 = v3[(v5 + 6)]; // L282
float v280 = v276 * v279; // L283, S[12,12)
float v281 = v239 + v280; // L284, S[12,12)
float v282 = v0[(v6 + 1)][(v5 + 6)]; // L285
float v283 = v16 * v282; // L286, S[12,12)
float v284 = v278 + v283; // L287, S[12,12)
float v285 = v282 * v279; // L288, S[12,12)
float v286 = v244 + v285; // L289, S[12,12)
float v287 = v0[(v6 + 2)][(v5 + 6)]; // L290
float v288 = v23 * v287; // L291, S[12,12)
float v289 = v284 + v288; // L292, S[12,12)
float v290 = v287 * v279; // L293, S[12,12)
float v291 = v249 + v290; // L294, S[12,12)
float v292 = v0[(v6 + 3)][(v5 + 6)]; // L295
float v293 = v30 * v292; // L296, S[12,12)
float v294 = v289 + v293; // L297, S[12,12)
float v295 = v292 * v279; // L298, S[12,12)
float v296 = v254 + v295; // L299, S[12,12)
float v297 = v0[(v6 + 4)][(v5 + 6)]; // L300
float v298 = v37 * v297; // L301, S[12,12)
float v299 = v294 + v298; // L302, S[12,12)
float v300 = v297 * v279; // L303, S[12,12)
float v301 = v259 + v300; // L304, S[12,12)
float v302 = v0[(v6 + 5)][(v5 + 6)]; // L305
float v303 = v44 * v302; // L306, S[12,12)
float v304 = v299 + v303; // L307, S[12,12)
float v305 = v302 * v279; // L308, S[12,12)
float v306 = v264 + v305; // L309, S[12,12)
float v307 = v0[(v6 + 6)][(v5 + 6)]; // L310
float v308 = v51 * v307; // L311, S[12,12)
float v309 = v304 + v308; // L312, S[12,12)
float v310 = v307 * v279; // L313, S[12,12)
float v311 = v269 + v310; // L314, S[12,12)
float v312 = v0[(v6 + 7)][(v5 + 6)]; // L315
float v313 = v58 * v312; // L316, S[12,12)
float v314 = v309 + v313; // L317, S[12,12)
v1[(v5 + 6)] = v314; // L318
float v315 = v312 * v279; // L319, S[12,12)
float v316 = v274 + v315; // L320, S[12,12)
float v317 = v1[(v5 + 7)]; // L321
float v318 = v0[v6][(v5 + 7)]; // L322
float v319 = v8 * v318; // L323, S[12,12)
float v320 = v317 + v319; // L324, S[12,12)
float v321 = v3[(v5 + 7)]; // L325
float v322 = v318 * v321; // L326, S[12,12)
float v323 = v281 + v322; // L327, S[12,12)
float v324 = v0[(v6 + 1)][(v5 + 7)]; // L328
float v325 = v16 * v324; // L329, S[12,12)
float v326 = v320 + v325; // L330, S[12,12)
float v327 = v324 * v321; // L331, S[12,12)
float v328 = v286 + v327; // L332, S[12,12)
float v329 = v0[(v6 + 2)][(v5 + 7)]; // L333
float v330 = v23 * v329; // L334, S[12,12)
float v331 = v326 + v330; // L335, S[12,12)
float v332 = v329 * v321; // L336, S[12,12)
float v333 = v291 + v332; // L337, S[12,12)
float v334 = v0[(v6 + 3)][(v5 + 7)]; // L338
float v335 = v30 * v334; // L339, S[12,12)
float v336 = v331 + v335; // L340, S[12,12)
float v337 = v334 * v321; // L341, S[12,12)
float v338 = v296 + v337; // L342, S[12,12)
float v339 = v0[(v6 + 4)][(v5 + 7)]; // L343
float v340 = v37 * v339; // L344, S[12,12)
float v341 = v336 + v340; // L345, S[12,12)
float v342 = v339 * v321; // L346, S[12,12)
float v343 = v301 + v342; // L347, S[12,12)
float v344 = v0[(v6 + 5)][(v5 + 7)]; // L348
float v345 = v44 * v344; // L349, S[12,12)
float v346 = v341 + v345; // L350, S[12,12)
float v347 = v344 * v321; // L351, S[12,12)
float v348 = v306 + v347; // L352, S[12,12)
float v349 = v0[(v6 + 6)][(v5 + 7)]; // L353
float v350 = v51 * v349; // L354, S[12,12)
float v351 = v346 + v350; // L355, S[12,12)
float v352 = v349 * v321; // L356, S[12,12)
float v353 = v311 + v352; // L357, S[12,12)
float v354 = v0[(v6 + 7)][(v5 + 7)]; // L358
float v355 = v58 * v354; // L359, S[12,12)
float v356 = v351 + v355; // L360, S[12,12)
v1[(v5 + 7)] = v356; // L361
float v357 = v354 * v321; // L362, S[12,12)
float v358 = v316 + v357; // L363, S[12,12)
float v359 = v1[(v5 + 8)]; // L364
float v360 = v0[v6][(v5 + 8)]; // L365
float v361 = v8 * v360; // L366, S[12,12)
float v362 = v359 + v361; // L367, S[12,12)
float v363 = v3[(v5 + 8)]; // L368
float v364 = v360 * v363; // L369, S[12,12)
float v365 = v323 + v364; // L370, S[12,12)
float v366 = v0[(v6 + 1)][(v5 + 8)]; // L371
float v367 = v16 * v366; // L372, S[12,12)
float v368 = v362 + v367; // L373, S[12,12)
float v369 = v366 * v363; // L374, S[12,12)
float v370 = v328 + v369; // L375, S[12,12)
float v371 = v0[(v6 + 2)][(v5 + 8)]; // L376
float v372 = v23 * v371; // L377, S[12,12)
float v373 = v368 + v372; // L378, S[12,12)
float v374 = v371 * v363; // L379, S[12,12)
float v375 = v333 + v374; // L380, S[12,12)
float v376 = v0[(v6 + 3)][(v5 + 8)]; // L381
float v377 = v30 * v376; // L382, S[12,12)
float v378 = v373 + v377; // L383, S[12,12)
float v379 = v376 * v363; // L384, S[12,12)
float v380 = v338 + v379; // L385, S[12,12)
float v381 = v0[(v6 + 4)][(v5 + 8)]; // L386
float v382 = v37 * v381; // L387, S[12,12)
float v383 = v378 + v382; // L388, S[12,12)
float v384 = v381 * v363; // L389, S[12,12)
float v385 = v343 + v384; // L390, S[12,12)
float v386 = v0[(v6 + 5)][(v5 + 8)]; // L391
float v387 = v44 * v386; // L392, S[12,12)
float v388 = v383 + v387; // L393, S[12,12)
float v389 = v386 * v363; // L394, S[12,12)
float v390 = v348 + v389; // L395, S[12,12)
float v391 = v0[(v6 + 6)][(v5 + 8)]; // L396
float v392 = v51 * v391; // L397, S[12,12)
float v393 = v388 + v392; // L398, S[12,12)
float v394 = v391 * v363; // L399, S[12,12)
float v395 = v353 + v394; // L400, S[12,12)
float v396 = v0[(v6 + 7)][(v5 + 8)]; // L401
float v397 = v58 * v396; // L402, S[12,12)
float v398 = v393 + v397; // L403, S[12,12)
v1[(v5 + 8)] = v398; // L404
float v399 = v396 * v363; // L405, S[12,12)
float v400 = v358 + v399; // L406, S[12,12)
float v401 = v1[(v5 + 9)]; // L407
float v402 = v0[v6][(v5 + 9)]; // L408
float v403 = v8 * v402; // L409, S[12,12)
float v404 = v401 + v403; // L410, S[12,12)
float v405 = v3[(v5 + 9)]; // L411
float v406 = v402 * v405; // L412, S[12,12)
float v407 = v365 + v406; // L413, S[12,12)
float v408 = v0[(v6 + 1)][(v5 + 9)]; // L414
float v409 = v16 * v408; // L415, S[12,12)
float v410 = v404 + v409; // L416, S[12,12)
float v411 = v408 * v405; // L417, S[12,12)
float v412 = v370 + v411; // L418, S[12,12)
float v413 = v0[(v6 + 2)][(v5 + 9)]; // L419
float v414 = v23 * v413; // L420, S[12,12)
float v415 = v410 + v414; // L421, S[12,12)
float v416 = v413 * v405; // L422, S[12,12)
float v417 = v375 + v416; // L423, S[12,12)
float v418 = v0[(v6 + 3)][(v5 + 9)]; // L424
float v419 = v30 * v418; // L425, S[12,12)
float v420 = v415 + v419; // L426, S[12,12)
float v421 = v418 * v405; // L427, S[12,12)
float v422 = v380 + v421; // L428, S[12,12)
float v423 = v0[(v6 + 4)][(v5 + 9)]; // L429
float v424 = v37 * v423; // L430, S[12,12)
float v425 = v420 + v424; // L431, S[12,12)
float v426 = v423 * v405; // L432, S[12,12)
float v427 = v385 + v426; // L433, S[12,12)
float v428 = v0[(v6 + 5)][(v5 + 9)]; // L434
float v429 = v44 * v428; // L435, S[12,12)
float v430 = v425 + v429; // L436, S[12,12)
float v431 = v428 * v405; // L437, S[12,12)
float v432 = v390 + v431; // L438, S[12,12)
float v433 = v0[(v6 + 6)][(v5 + 9)]; // L439
float v434 = v51 * v433; // L440, S[12,12)
float v435 = v430 + v434; // L441, S[12,12)
float v436 = v433 * v405; // L442, S[12,12)
float v437 = v395 + v436; // L443, S[12,12)
float v438 = v0[(v6 + 7)][(v5 + 9)]; // L444
float v439 = v58 * v438; // L445, S[12,12)
float v440 = v435 + v439; // L446, S[12,12)
v1[(v5 + 9)] = v440; // L447
float v441 = v438 * v405; // L448, S[12,12)
float v442 = v400 + v441; // L449, S[12,12)
float v443 = v1[(v5 + 10)]; // L450
float v444 = v0[v6][(v5 + 10)]; // L451
float v445 = v8 * v444; // L452, S[12,12)
float v446 = v443 + v445; // L453, S[12,12)
float v447 = v3[(v5 + 10)]; // L454
float v448 = v444 * v447; // L455, S[12,12)
float v449 = v407 + v448; // L456, S[12,12)
float v450 = v0[(v6 + 1)][(v5 + 10)]; // L457
float v451 = v16 * v450; // L458, S[12,12)
float v452 = v446 + v451; // L459, S[12,12)
float v453 = v450 * v447; // L460, S[12,12)
float v454 = v412 + v453; // L461, S[12,12)
float v455 = v0[(v6 + 2)][(v5 + 10)]; // L462
float v456 = v23 * v455; // L463, S[12,12)
float v457 = v452 + v456; // L464, S[12,12)
float v458 = v455 * v447; // L465, S[12,12)
float v459 = v417 + v458; // L466, S[12,12)
float v460 = v0[(v6 + 3)][(v5 + 10)]; // L467
float v461 = v30 * v460; // L468, S[12,12)
float v462 = v457 + v461; // L469, S[12,12)
float v463 = v460 * v447; // L470, S[12,12)
float v464 = v422 + v463; // L471, S[12,12)
float v465 = v0[(v6 + 4)][(v5 + 10)]; // L472
float v466 = v37 * v465; // L473, S[12,12)
float v467 = v462 + v466; // L474, S[12,12)
float v468 = v465 * v447; // L475, S[12,12)
float v469 = v427 + v468; // L476, S[12,12)
float v470 = v0[(v6 + 5)][(v5 + 10)]; // L477
float v471 = v44 * v470; // L478, S[12,12)
float v472 = v467 + v471; // L479, S[12,12)
float v473 = v470 * v447; // L480, S[12,12)
float v474 = v432 + v473; // L481, S[12,12)
float v475 = v0[(v6 + 6)][(v5 + 10)]; // L482
float v476 = v51 * v475; // L483, S[12,12)
float v477 = v472 + v476; // L484, S[12,12)
float v478 = v475 * v447; // L485, S[12,12)
float v479 = v437 + v478; // L486, S[12,12)
float v480 = v0[(v6 + 7)][(v5 + 10)]; // L487
float v481 = v58 * v480; // L488, S[12,12)
float v482 = v477 + v481; // L489, S[12,12)
v1[(v5 + 10)] = v482; // L490
float v483 = v480 * v447; // L491, S[12,12)
float v484 = v442 + v483; // L492, S[12,12)
float v485 = v1[(v5 + 11)]; // L493
float v486 = v0[v6][(v5 + 11)]; // L494
float v487 = v8 * v486; // L495, S[12,12)
float v488 = v485 + v487; // L496, S[12,12)
float v489 = v3[(v5 + 11)]; // L497
float v490 = v486 * v489; // L498, S[12,12)
float v491 = v449 + v490; // L499, S[12,12)
float v492 = v0[(v6 + 1)][(v5 + 11)]; // L500
float v493 = v16 * v492; // L501, S[12,12)
float v494 = v488 + v493; // L502, S[12,12)
float v495 = v492 * v489; // L503, S[12,12)
float v496 = v454 + v495; // L504, S[12,12)
float v497 = v0[(v6 + 2)][(v5 + 11)]; // L505
float v498 = v23 * v497; // L506, S[12,12)
float v499 = v494 + v498; // L507, S[12,12)
float v500 = v497 * v489; // L508, S[12,12)
float v501 = v459 + v500; // L509, S[12,12)
float v502 = v0[(v6 + 3)][(v5 + 11)]; // L510
float v503 = v30 * v502; // L511, S[12,12)
float v504 = v499 + v503; // L512, S[12,12)
float v505 = v502 * v489; // L513, S[12,12)
float v506 = v464 + v505; // L514, S[12,12)
float v507 = v0[(v6 + 4)][(v5 + 11)]; // L515
float v508 = v37 * v507; // L516, S[12,12)
float v509 = v504 + v508; // L517, S[12,12)
float v510 = v507 * v489; // L518, S[12,12)
float v511 = v469 + v510; // L519, S[12,12)
float v512 = v0[(v6 + 5)][(v5 + 11)]; // L520
float v513 = v44 * v512; // L521, S[12,12)
float v514 = v509 + v513; // L522, S[12,12)
float v515 = v512 * v489; // L523, S[12,12)
float v516 = v474 + v515; // L524, S[12,12)
float v517 = v0[(v6 + 6)][(v5 + 11)]; // L525
float v518 = v51 * v517; // L526, S[12,12)
float v519 = v514 + v518; // L527, S[12,12)
float v520 = v517 * v489; // L528, S[12,12)
float v521 = v479 + v520; // L529, S[12,12)
float v522 = v0[(v6 + 7)][(v5 + 11)]; // L530
float v523 = v58 * v522; // L531, S[12,12)
float v524 = v519 + v523; // L532, S[12,12)
v1[(v5 + 11)] = v524; // L533
float v525 = v522 * v489; // L534, S[12,12)
float v526 = v484 + v525; // L535, S[12,12)
float v527 = v1[(v5 + 12)]; // L536
float v528 = v0[v6][(v5 + 12)]; // L537
float v529 = v8 * v528; // L538, S[12,12)
float v530 = v527 + v529; // L539, S[12,12)
float v531 = v3[(v5 + 12)]; // L540
float v532 = v528 * v531; // L541, S[12,12)
float v533 = v491 + v532; // L542, S[12,12)
float v534 = v0[(v6 + 1)][(v5 + 12)]; // L543
float v535 = v16 * v534; // L544, S[12,12)
float v536 = v530 + v535; // L545, S[12,12)
float v537 = v534 * v531; // L546, S[12,12)
float v538 = v496 + v537; // L547, S[12,12)
float v539 = v0[(v6 + 2)][(v5 + 12)]; // L548
float v540 = v23 * v539; // L549, S[12,12)
float v541 = v536 + v540; // L550, S[12,12)
float v542 = v539 * v531; // L551, S[12,12)
float v543 = v501 + v542; // L552, S[12,12)
float v544 = v0[(v6 + 3)][(v5 + 12)]; // L553
float v545 = v30 * v544; // L554, S[12,12)
float v546 = v541 + v545; // L555, S[12,12)
float v547 = v544 * v531; // L556, S[12,12)
float v548 = v506 + v547; // L557, S[12,12)
float v549 = v0[(v6 + 4)][(v5 + 12)]; // L558
float v550 = v37 * v549; // L559, S[12,12)
float v551 = v546 + v550; // L560, S[12,12)
float v552 = v549 * v531; // L561, S[12,12)
float v553 = v511 + v552; // L562, S[12,12)
float v554 = v0[(v6 + 5)][(v5 + 12)]; // L563
float v555 = v44 * v554; // L564, S[12,12)
float v556 = v551 + v555; // L565, S[12,12)
float v557 = v554 * v531; // L566, S[12,12)
float v558 = v516 + v557; // L567, S[12,12)
float v559 = v0[(v6 + 6)][(v5 + 12)]; // L568
float v560 = v51 * v559; // L569, S[12,12)
float v561 = v556 + v560; // L570, S[12,12)
float v562 = v559 * v531; // L571, S[12,12)
float v563 = v521 + v562; // L572, S[12,12)
float v564 = v0[(v6 + 7)][(v5 + 12)]; // L573
float v565 = v58 * v564; // L574, S[12,12)
float v566 = v561 + v565; // L575, S[12,12)
v1[(v5 + 12)] = v566; // L576
float v567 = v564 * v531; // L577, S[12,12)
float v568 = v526 + v567; // L578, S[12,12)
float v569 = v1[(v5 + 13)]; // L579
float v570 = v0[v6][(v5 + 13)]; // L580
float v571 = v8 * v570; // L581, S[12,12)
float v572 = v569 + v571; // L582, S[12,12)
float v573 = v3[(v5 + 13)]; // L583
float v574 = v570 * v573; // L584, S[12,12)
float v575 = v533 + v574; // L585, S[12,12)
float v576 = v0[(v6 + 1)][(v5 + 13)]; // L586
float v577 = v16 * v576; // L587, S[12,12)
float v578 = v572 + v577; // L588, S[12,12)
float v579 = v576 * v573; // L589, S[12,12)
float v580 = v538 + v579; // L590, S[12,12)
float v581 = v0[(v6 + 2)][(v5 + 13)]; // L591
float v582 = v23 * v581; // L592, S[12,12)
float v583 = v578 + v582; // L593, S[12,12)
float v584 = v581 * v573; // L594, S[12,12)
float v585 = v543 + v584; // L595, S[12,12)
float v586 = v0[(v6 + 3)][(v5 + 13)]; // L596
float v587 = v30 * v586; // L597, S[12,12)
float v588 = v583 + v587; // L598, S[12,12)
float v589 = v586 * v573; // L599, S[12,12)
float v590 = v548 + v589; // L600, S[12,12)
float v591 = v0[(v6 + 4)][(v5 + 13)]; // L601
float v592 = v37 * v591; // L602, S[12,12)
float v593 = v588 + v592; // L603, S[12,12)
float v594 = v591 * v573; // L604, S[12,12)
float v595 = v553 + v594; // L605, S[12,12)
float v596 = v0[(v6 + 5)][(v5 + 13)]; // L606
float v597 = v44 * v596; // L607, S[12,12)
float v598 = v593 + v597; // L608, S[12,12)
float v599 = v596 * v573; // L609, S[12,12)
float v600 = v558 + v599; // L610, S[12,12)
float v601 = v0[(v6 + 6)][(v5 + 13)]; // L611
float v602 = v51 * v601; // L612, S[12,12)
float v603 = v598 + v602; // L613, S[12,12)
float v604 = v601 * v573; // L614, S[12,12)
float v605 = v563 + v604; // L615, S[12,12)
float v606 = v0[(v6 + 7)][(v5 + 13)]; // L616
float v607 = v58 * v606; // L617, S[12,12)
float v608 = v603 + v607; // L618, S[12,12)
v1[(v5 + 13)] = v608; // L619
float v609 = v606 * v573; // L620, S[12,12)
float v610 = v568 + v609; // L621, S[12,12)
float v611 = v1[(v5 + 14)]; // L622
float v612 = v0[v6][(v5 + 14)]; // L623
float v613 = v8 * v612; // L624, S[12,12)
float v614 = v611 + v613; // L625, S[12,12)
float v615 = v3[(v5 + 14)]; // L626
float v616 = v612 * v615; // L627, S[12,12)
float v617 = v575 + v616; // L628, S[12,12)
float v618 = v0[(v6 + 1)][(v5 + 14)]; // L629
float v619 = v16 * v618; // L630, S[12,12)
float v620 = v614 + v619; // L631, S[12,12)
float v621 = v618 * v615; // L632, S[12,12)
float v622 = v580 + v621; // L633, S[12,12)
float v623 = v0[(v6 + 2)][(v5 + 14)]; // L634
float v624 = v23 * v623; // L635, S[12,12)
float v625 = v620 + v624; // L636, S[12,12)
float v626 = v623 * v615; // L637, S[12,12)
float v627 = v585 + v626; // L638, S[12,12)
float v628 = v0[(v6 + 3)][(v5 + 14)]; // L639
float v629 = v30 * v628; // L640, S[12,12)
float v630 = v625 + v629; // L641, S[12,12)
float v631 = v628 * v615; // L642, S[12,12)
float v632 = v590 + v631; // L643, S[12,12)
float v633 = v0[(v6 + 4)][(v5 + 14)]; // L644
float v634 = v37 * v633; // L645, S[12,12)
float v635 = v630 + v634; // L646, S[12,12)
float v636 = v633 * v615; // L647, S[12,12)
float v637 = v595 + v636; // L648, S[12,12)
float v638 = v0[(v6 + 5)][(v5 + 14)]; // L649
float v639 = v44 * v638; // L650, S[12,12)
float v640 = v635 + v639; // L651, S[12,12)
float v641 = v638 * v615; // L652, S[12,12)
float v642 = v600 + v641; // L653, S[12,12)
float v643 = v0[(v6 + 6)][(v5 + 14)]; // L654
float v644 = v51 * v643; // L655, S[12,12)
float v645 = v640 + v644; // L656, S[12,12)
float v646 = v643 * v615; // L657, S[12,12)
float v647 = v605 + v646; // L658, S[12,12)
float v648 = v0[(v6 + 7)][(v5 + 14)]; // L659
float v649 = v58 * v648; // L660, S[12,12)
float v650 = v645 + v649; // L661, S[12,12)
v1[(v5 + 14)] = v650; // L662
float v651 = v648 * v615; // L663, S[12,12)
float v652 = v610 + v651; // L664, S[12,12)
float v653 = v1[(v5 + 15)]; // L665
float v654 = v0[v6][(v5 + 15)]; // L666
float v655 = v8 * v654; // L667, S[12,12)
float v656 = v653 + v655; // L668, S[12,12)
float v657 = v3[(v5 + 15)]; // L669
float v658 = v654 * v657; // L670, S[12,12)
float v659 = v617 + v658; // L671, S[12,12)
v2[v6] = v659; // L672, S[12,12)
float v660 = v0[(v6 + 1)][(v5 + 15)]; // L673
float v661 = v16 * v660; // L674, S[12,12)
float v662 = v656 + v661; // L675, S[12,12)
float v663 = v660 * v657; // L676, S[12,12)
float v664 = v622 + v663; // L677, S[12,12)
v2[(v6 + 1)] = v664; // L678
float v665 = v0[(v6 + 2)][(v5 + 15)]; // L679
float v666 = v23 * v665; // L680, S[12,12)
float v667 = v662 + v666; // L681, S[12,12)
float v668 = v665 * v657; // L682, S[12,12)
float v669 = v627 + v668; // L683, S[12,12)
v2[(v6 + 2)] = v669; // L684
float v670 = v0[(v6 + 3)][(v5 + 15)]; // L685
float v671 = v30 * v670; // L686, S[12,12)
float v672 = v667 + v671; // L687, S[12,12)
float v673 = v670 * v657; // L688, S[12,12)
float v674 = v632 + v673; // L689, S[12,12)
v2[(v6 + 3)] = v674; // L690
float v675 = v0[(v6 + 4)][(v5 + 15)]; // L691
float v676 = v37 * v675; // L692, S[12,12)
float v677 = v672 + v676; // L693, S[12,12)
float v678 = v675 * v657; // L694, S[12,12)
float v679 = v637 + v678; // L695, S[12,12)
v2[(v6 + 4)] = v679; // L696
float v680 = v0[(v6 + 5)][(v5 + 15)]; // L697
float v681 = v44 * v680; // L698, S[12,12)
float v682 = v677 + v681; // L699, S[12,12)
float v683 = v680 * v657; // L700, S[12,12)
float v684 = v642 + v683; // L701, S[12,12)
v2[(v6 + 5)] = v684; // L702
float v685 = v0[(v6 + 6)][(v5 + 15)]; // L703
float v686 = v51 * v685; // L704, S[12,12)
float v687 = v682 + v686; // L705, S[12,12)
float v688 = v685 * v657; // L706, S[12,12)
float v689 = v647 + v688; // L707, S[12,12)
v2[(v6 + 6)] = v689; // L708
float v690 = v0[(v6 + 7)][(v5 + 15)]; // L709
float v691 = v58 * v690; // L710, S[12,12)
float v692 = v687 + v691; // L711, S[12,12)
v1[(v5 + 15)] = v692; // L712
float v693 = v690 * v657; // L713, S[12,12)
float v694 = v652 + v693; // L714, S[12,12)
v2[(v6 + 7)] = v694; // L715
}
}
}

View File

@ -1,14 +1,6 @@
#!/bin/bash
# This test is deprecated!
# Please run: source dse_sample_test.sh -m gemm -c 0
# cd samples/polybench/ && source dse_sample_test.sh -m bicg -c 0
# cd samples/polybench/ && source dse_sample_test.sh -m gemm -c 0
# cd samples/polybench/ && source dse_sample_test.sh -m gesummv -c 0
# cd samples/polybench/ && source dse_sample_test.sh -m syrk -c 0
# cd samples/polybench/ && source dse_sample_test.sh -m syr2k -c 0
# cd samples/polybench/ && source dse_sample_test.sh -m trmm -c 0
# Script options.
while getopts 'm:c:' opt

View File

@ -2,26 +2,12 @@
# Please run: source dse_scale_test.sh -m gemm -c 0
# cd samples/polybench-1/ && source dse_scale_test.sh -m bicg -c 0
# cd samples/polybench-1/ && source dse_scale_test.sh -m gemm -c 0
# cd samples/polybench-1/ && source dse_scale_test.sh -m gesummv -c 0
# cd samples/polybench-1/ && source dse_scale_test.sh -m syrk -c 0
# cd samples/polybench-1/ && source dse_scale_test.sh -m syr2k -c 0
# cd samples/polybench-1/ && source dse_scale_test.sh -m trmm -c 0
# cd samples/polybench-2/ && source dse_scale_test.sh -m bicg -c 0
# cd samples/polybench-2/ && source dse_scale_test.sh -m gemm -c 0
# cd samples/polybench-2/ && source dse_scale_test.sh -m gesummv -c 0
# cd samples/polybench-2/ && source dse_scale_test.sh -m syrk -c 0
# cd samples/polybench-2/ && source dse_scale_test.sh -m syr2k -c 0
# cd samples/polybench-2/ && source dse_scale_test.sh -m trmm -c 0
# cd samples/polybench-3/ && source dse_scale_test.sh -m bicg -c 0
# cd samples/polybench-3/ && source dse_scale_test.sh -m gemm -c 0
# cd samples/polybench-3/ && source dse_scale_test.sh -m gesummv -c 0
# cd samples/polybench-3/ && source dse_scale_test.sh -m syrk -c 0
# cd samples/polybench-3/ && source dse_scale_test.sh -m syr2k -c 0
# cd samples/polybench-3/ && source dse_scale_test.sh -m trmm -c 0
# cd samples/polybench/ && source dse_scale_test.sh -m bicg -c 0
# cd samples/polybench/ && source dse_scale_test.sh -m gemm -c 0
# cd samples/polybench/ && source dse_scale_test.sh -m gesummv -c 0
# cd samples/polybench/ && source dse_scale_test.sh -m syrk -c 0
# cd samples/polybench/ && source dse_scale_test.sh -m syr2k -c 0
# cd samples/polybench/ && source dse_scale_test.sh -m trmm -c 0
# Script options.
while getopts 'm:c:' opt

View File

@ -0,0 +1,59 @@
//===------------------------------------------------------------*- C++ -*-===//
//
// Automatically generated file for High-level Synthesis (HLS).
//
//===----------------------------------------------------------------------===//
#include <algorithm>
#include <ap_axi_sdata.h>
#include <ap_fixed.h>
#include <ap_int.h>
#include <hls_math.h>
#include <hls_stream.h>
#include <math.h>
#include <stdint.h>
using namespace std;
/// This is top function.
/// Latency=1099545190402
/// DSP=8
void gemm_4096(
float v0,
float v1,
float v2[4096][4096],
float v3[4096][4096],
float v4[4096][4096]
) { // L2
#pragma HLS interface s_axilite port=return bundle=ctrl
#pragma HLS interface s_axilite port=v0 bundle=ctrl
#pragma HLS interface s_axilite port=v1 bundle=ctrl
#pragma HLS interface bram port=v2
#pragma HLS interface bram port=v3
#pragma HLS interface bram port=v4
#pragma HLS resource variable=v2 core=ram_s2p_bram
#pragma HLS resource variable=v3 core=ram_s2p_bram
#pragma HLS resource variable=v4 core=ram_s2p_bram
for (int v5 = 0; v5 < 4096; v5 += 1) { // L3, S[0,1099545190402), latency=268443650
for (int v6 = 0; v6 < 4096; v6 += 1) { // L4, S[0,268443650), latency=65538
float v7 = v2[v5][v6]; // L5, S[65523,65525)
float v8 = v1 * v7; // L6, S[65525,65529)
v2[v5][v6] = v8; // L7, S[65529,65530)
for (int v9 = 0; v9 < 4096; v9 += 1) { // L8, S[0,65538), latency=16
float v10 = v3[v5][v9]; // L9, S[0,2)
float v11 = v4[v9][v6]; // L10, S[4,6)
float v12 = v2[v5][v6]; // L11, S[8,10)
float v13 = v0 * v10; // L12, S[2,6)
float v14 = v13 * v11; // L13, S[6,10)
float v15 = v12 + v14; // L14, S[10,15)
v2[v5][v6] = v15; // L15, S[15,16)
}
}
}
}

View File

@ -0,0 +1,598 @@
//===------------------------------------------------------------*- C++ -*-===//
//
// Automatically generated file for High-level Synthesis (HLS).
//
//===----------------------------------------------------------------------===//
#include <algorithm>
#include <ap_axi_sdata.h>
#include <ap_fixed.h>
#include <ap_int.h>
#include <hls_math.h>
#include <hls_stream.h>
#include <math.h>
#include <stdint.h>
using namespace std;
/// This is top function.
/// Latency=8589934608
/// DSP=5
void gemm_4096(
float v0,
float v1,
float v2[4096][4096],
float v3[4096][4096],
float v4[4096][4096]
) { // L1
#pragma HLS interface s_axilite port=return bundle=ctrl
#pragma HLS interface s_axilite port=v0 bundle=ctrl
#pragma HLS interface s_axilite port=v1 bundle=ctrl
#pragma HLS interface bram port=v2
#pragma HLS interface bram port=v3
#pragma HLS interface bram port=v4
#pragma HLS array_partition variable=v2 cyclic factor=16 dim=2
#pragma HLS resource variable=v2 core=ram_s2p_bram
#pragma HLS array_partition variable=v3 cyclic factor=8 dim=2
#pragma HLS resource variable=v3 core=ram_s2p_bram
#pragma HLS array_partition variable=v4 cyclic factor=8 dim=1
#pragma HLS array_partition variable=v4 cyclic factor=16 dim=2
#pragma HLS resource variable=v4 core=ram_s2p_bram
for (int v5 = 0; v5 < 4096; v5 += 8) { // L2
for (int v6 = 0; v6 < 4096; v6 += 1) { // L3
for (int v7 = 0; v7 < 4096; v7 += 16) { // L4
#pragma HLS pipeline II=3
float v8 = v2[v6][v7]; // L5, S[16,16)
float v9 = v1 * v8; // L6, S[16,16)
float v10 = v3[v6][v5]; // L7, S[16,16)
float v11 = v4[v5][v7]; // L8, S[16,16)
float v12;
if (v5 == 0) { // L9
v12 = v9; // L10
} else {
v12 = v8; // L12
}
float v13 = v0 * v10; // L14, S[16,16)
float v14 = v13 * v11; // L15, S[16,16)
float v15 = v12 + v14; // L16, S[16,16)
float v16 = v2[v6][(v7 + 1)]; // L17
float v17 = v1 * v16; // L18, S[16,16)
float v18 = v4[v5][(v7 + 1)]; // L19
float v19;
if (v5 == 0) { // L20
v19 = v17; // L21
} else {
v19 = v16; // L23
}
float v20 = v13 * v18; // L25, S[16,16)
float v21 = v19 + v20; // L26, S[16,16)
float v22 = v2[v6][(v7 + 2)]; // L27
float v23 = v1 * v22; // L28, S[16,16)
float v24 = v4[v5][(v7 + 2)]; // L29
float v25;
if (v5 == 0) { // L30
v25 = v23; // L31
} else {
v25 = v22; // L33
}
float v26 = v13 * v24; // L35, S[16,16)
float v27 = v25 + v26; // L36, S[16,16)
float v28 = v2[v6][(v7 + 3)]; // L37
float v29 = v1 * v28; // L38, S[16,16)
float v30 = v4[v5][(v7 + 3)]; // L39
float v31;
if (v5 == 0) { // L40
v31 = v29; // L41
} else {
v31 = v28; // L43
}
float v32 = v13 * v30; // L45, S[16,16)
float v33 = v31 + v32; // L46, S[16,16)
float v34 = v2[v6][(v7 + 4)]; // L47
float v35 = v1 * v34; // L48, S[16,16)
float v36 = v4[v5][(v7 + 4)]; // L49
float v37;
if (v5 == 0) { // L50
v37 = v35; // L51
} else {
v37 = v34; // L53
}
float v38 = v13 * v36; // L55, S[16,16)
float v39 = v37 + v38; // L56, S[16,16)
float v40 = v2[v6][(v7 + 5)]; // L57
float v41 = v1 * v40; // L58, S[16,16)
float v42 = v4[v5][(v7 + 5)]; // L59
float v43;
if (v5 == 0) { // L60
v43 = v41; // L61
} else {
v43 = v40; // L63
}
float v44 = v13 * v42; // L65, S[16,16)
float v45 = v43 + v44; // L66, S[16,16)
float v46 = v2[v6][(v7 + 6)]; // L67
float v47 = v1 * v46; // L68, S[16,16)
float v48 = v4[v5][(v7 + 6)]; // L69
float v49;
if (v5 == 0) { // L70
v49 = v47; // L71
} else {
v49 = v46; // L73
}
float v50 = v13 * v48; // L75, S[16,16)
float v51 = v49 + v50; // L76, S[16,16)
float v52 = v2[v6][(v7 + 7)]; // L77
float v53 = v1 * v52; // L78, S[16,16)
float v54 = v4[v5][(v7 + 7)]; // L79
float v55;
if (v5 == 0) { // L80
v55 = v53; // L81
} else {
v55 = v52; // L83
}
float v56 = v13 * v54; // L85, S[16,16)
float v57 = v55 + v56; // L86, S[16,16)
float v58 = v2[v6][(v7 + 8)]; // L87
float v59 = v1 * v58; // L88, S[16,16)
float v60 = v4[v5][(v7 + 8)]; // L89
float v61;
if (v5 == 0) { // L90
v61 = v59; // L91
} else {
v61 = v58; // L93
}
float v62 = v13 * v60; // L95, S[16,16)
float v63 = v61 + v62; // L96, S[16,16)
float v64 = v2[v6][(v7 + 9)]; // L97
float v65 = v1 * v64; // L98, S[16,16)
float v66 = v4[v5][(v7 + 9)]; // L99
float v67;
if (v5 == 0) { // L100
v67 = v65; // L101
} else {
v67 = v64; // L103
}
float v68 = v13 * v66; // L105, S[16,16)
float v69 = v67 + v68; // L106, S[16,16)
float v70 = v2[v6][(v7 + 10)]; // L107
float v71 = v1 * v70; // L108, S[16,16)
float v72 = v4[v5][(v7 + 10)]; // L109
float v73;
if (v5 == 0) { // L110
v73 = v71; // L111
} else {
v73 = v70; // L113
}
float v74 = v13 * v72; // L115, S[16,16)
float v75 = v73 + v74; // L116, S[16,16)
float v76 = v2[v6][(v7 + 11)]; // L117
float v77 = v1 * v76; // L118, S[16,16)
float v78 = v4[v5][(v7 + 11)]; // L119
float v79;
if (v5 == 0) { // L120
v79 = v77; // L121
} else {
v79 = v76; // L123
}
float v80 = v13 * v78; // L125, S[16,16)
float v81 = v79 + v80; // L126, S[16,16)
float v82 = v2[v6][(v7 + 12)]; // L127
float v83 = v1 * v82; // L128, S[16,16)
float v84 = v4[v5][(v7 + 12)]; // L129
float v85;
if (v5 == 0) { // L130
v85 = v83; // L131
} else {
v85 = v82; // L133
}
float v86 = v13 * v84; // L135, S[16,16)
float v87 = v85 + v86; // L136, S[16,16)
float v88 = v2[v6][(v7 + 13)]; // L137
float v89 = v1 * v88; // L138, S[16,16)
float v90 = v4[v5][(v7 + 13)]; // L139
float v91;
if (v5 == 0) { // L140
v91 = v89; // L141
} else {
v91 = v88; // L143
}
float v92 = v13 * v90; // L145, S[16,16)
float v93 = v91 + v92; // L146, S[16,16)
float v94 = v2[v6][(v7 + 14)]; // L147
float v95 = v1 * v94; // L148, S[16,16)
float v96 = v4[v5][(v7 + 14)]; // L149
float v97;
if (v5 == 0) { // L150
v97 = v95; // L151
} else {
v97 = v94; // L153
}
float v98 = v13 * v96; // L155, S[16,16)
float v99 = v97 + v98; // L156, S[16,16)
float v100 = v2[v6][(v7 + 15)]; // L157
float v101 = v1 * v100; // L158, S[16,16)
float v102 = v4[v5][(v7 + 15)]; // L159
float v103;
if (v5 == 0) { // L160
v103 = v101; // L161
} else {
v103 = v100; // L163
}
float v104 = v13 * v102; // L165, S[16,16)
float v105 = v103 + v104; // L166, S[16,16)
float v106 = v3[v6][(v5 + 1)]; // L167
float v107 = v4[(v5 + 1)][v7]; // L168
float v108 = v0 * v106; // L169, S[16,16)
float v109 = v108 * v107; // L170, S[16,16)
float v110 = v15 + v109; // L171, S[16,16)
float v111 = v4[(v5 + 1)][(v7 + 1)]; // L172
float v112 = v108 * v111; // L173, S[16,16)
float v113 = v21 + v112; // L174, S[16,16)
float v114 = v4[(v5 + 1)][(v7 + 2)]; // L175
float v115 = v108 * v114; // L176, S[16,16)
float v116 = v27 + v115; // L177, S[16,16)
float v117 = v4[(v5 + 1)][(v7 + 3)]; // L178
float v118 = v108 * v117; // L179, S[16,16)
float v119 = v33 + v118; // L180, S[16,16)
float v120 = v4[(v5 + 1)][(v7 + 4)]; // L181
float v121 = v108 * v120; // L182, S[16,16)
float v122 = v39 + v121; // L183, S[16,16)
float v123 = v4[(v5 + 1)][(v7 + 5)]; // L184
float v124 = v108 * v123; // L185, S[16,16)
float v125 = v45 + v124; // L186, S[16,16)
float v126 = v4[(v5 + 1)][(v7 + 6)]; // L187
float v127 = v108 * v126; // L188, S[16,16)
float v128 = v51 + v127; // L189, S[16,16)
float v129 = v4[(v5 + 1)][(v7 + 7)]; // L190
float v130 = v108 * v129; // L191, S[16,16)
float v131 = v57 + v130; // L192, S[16,16)
float v132 = v4[(v5 + 1)][(v7 + 8)]; // L193
float v133 = v108 * v132; // L194, S[16,16)
float v134 = v63 + v133; // L195, S[16,16)
float v135 = v4[(v5 + 1)][(v7 + 9)]; // L196
float v136 = v108 * v135; // L197, S[16,16)
float v137 = v69 + v136; // L198, S[16,16)
float v138 = v4[(v5 + 1)][(v7 + 10)]; // L199
float v139 = v108 * v138; // L200, S[16,16)
float v140 = v75 + v139; // L201, S[16,16)
float v141 = v4[(v5 + 1)][(v7 + 11)]; // L202
float v142 = v108 * v141; // L203, S[16,16)
float v143 = v81 + v142; // L204, S[16,16)
float v144 = v4[(v5 + 1)][(v7 + 12)]; // L205
float v145 = v108 * v144; // L206, S[16,16)
float v146 = v87 + v145; // L207, S[16,16)
float v147 = v4[(v5 + 1)][(v7 + 13)]; // L208
float v148 = v108 * v147; // L209, S[16,16)
float v149 = v93 + v148; // L210, S[16,16)
float v150 = v4[(v5 + 1)][(v7 + 14)]; // L211
float v151 = v108 * v150; // L212, S[16,16)
float v152 = v99 + v151; // L213, S[16,16)
float v153 = v4[(v5 + 1)][(v7 + 15)]; // L214
float v154 = v108 * v153; // L215, S[16,16)
float v155 = v105 + v154; // L216, S[16,16)
float v156 = v3[v6][(v5 + 2)]; // L217
float v157 = v4[(v5 + 2)][v7]; // L218
float v158 = v0 * v156; // L219, S[16,16)
float v159 = v158 * v157; // L220, S[16,16)
float v160 = v110 + v159; // L221, S[16,16)
float v161 = v4[(v5 + 2)][(v7 + 1)]; // L222
float v162 = v158 * v161; // L223, S[16,16)
float v163 = v113 + v162; // L224, S[16,16)
float v164 = v4[(v5 + 2)][(v7 + 2)]; // L225
float v165 = v158 * v164; // L226, S[16,16)
float v166 = v116 + v165; // L227, S[16,16)
float v167 = v4[(v5 + 2)][(v7 + 3)]; // L228
float v168 = v158 * v167; // L229, S[16,16)
float v169 = v119 + v168; // L230, S[16,16)
float v170 = v4[(v5 + 2)][(v7 + 4)]; // L231
float v171 = v158 * v170; // L232, S[16,16)
float v172 = v122 + v171; // L233, S[16,16)
float v173 = v4[(v5 + 2)][(v7 + 5)]; // L234
float v174 = v158 * v173; // L235, S[16,16)
float v175 = v125 + v174; // L236, S[16,16)
float v176 = v4[(v5 + 2)][(v7 + 6)]; // L237
float v177 = v158 * v176; // L238, S[16,16)
float v178 = v128 + v177; // L239, S[16,16)
float v179 = v4[(v5 + 2)][(v7 + 7)]; // L240
float v180 = v158 * v179; // L241, S[16,16)
float v181 = v131 + v180; // L242, S[16,16)
float v182 = v4[(v5 + 2)][(v7 + 8)]; // L243
float v183 = v158 * v182; // L244, S[16,16)
float v184 = v134 + v183; // L245, S[16,16)
float v185 = v4[(v5 + 2)][(v7 + 9)]; // L246
float v186 = v158 * v185; // L247, S[16,16)
float v187 = v137 + v186; // L248, S[16,16)
float v188 = v4[(v5 + 2)][(v7 + 10)]; // L249
float v189 = v158 * v188; // L250, S[16,16)
float v190 = v140 + v189; // L251, S[16,16)
float v191 = v4[(v5 + 2)][(v7 + 11)]; // L252
float v192 = v158 * v191; // L253, S[16,16)
float v193 = v143 + v192; // L254, S[16,16)
float v194 = v4[(v5 + 2)][(v7 + 12)]; // L255
float v195 = v158 * v194; // L256, S[16,16)
float v196 = v146 + v195; // L257, S[16,16)
float v197 = v4[(v5 + 2)][(v7 + 13)]; // L258
float v198 = v158 * v197; // L259, S[16,16)
float v199 = v149 + v198; // L260, S[16,16)
float v200 = v4[(v5 + 2)][(v7 + 14)]; // L261
float v201 = v158 * v200; // L262, S[16,16)
float v202 = v152 + v201; // L263, S[16,16)
float v203 = v4[(v5 + 2)][(v7 + 15)]; // L264
float v204 = v158 * v203; // L265, S[16,16)
float v205 = v155 + v204; // L266, S[16,16)
float v206 = v3[v6][(v5 + 3)]; // L267
float v207 = v4[(v5 + 3)][v7]; // L268
float v208 = v0 * v206; // L269, S[16,16)
float v209 = v208 * v207; // L270, S[16,16)
float v210 = v160 + v209; // L271, S[16,16)
float v211 = v4[(v5 + 3)][(v7 + 1)]; // L272
float v212 = v208 * v211; // L273, S[16,16)
float v213 = v163 + v212; // L274, S[16,16)
float v214 = v4[(v5 + 3)][(v7 + 2)]; // L275
float v215 = v208 * v214; // L276, S[16,16)
float v216 = v166 + v215; // L277, S[16,16)
float v217 = v4[(v5 + 3)][(v7 + 3)]; // L278
float v218 = v208 * v217; // L279, S[16,16)
float v219 = v169 + v218; // L280, S[16,16)
float v220 = v4[(v5 + 3)][(v7 + 4)]; // L281
float v221 = v208 * v220; // L282, S[16,16)
float v222 = v172 + v221; // L283, S[16,16)
float v223 = v4[(v5 + 3)][(v7 + 5)]; // L284
float v224 = v208 * v223; // L285, S[16,16)
float v225 = v175 + v224; // L286, S[16,16)
float v226 = v4[(v5 + 3)][(v7 + 6)]; // L287
float v227 = v208 * v226; // L288, S[16,16)
float v228 = v178 + v227; // L289, S[16,16)
float v229 = v4[(v5 + 3)][(v7 + 7)]; // L290
float v230 = v208 * v229; // L291, S[16,16)
float v231 = v181 + v230; // L292, S[16,16)
float v232 = v4[(v5 + 3)][(v7 + 8)]; // L293
float v233 = v208 * v232; // L294, S[16,16)
float v234 = v184 + v233; // L295, S[16,16)
float v235 = v4[(v5 + 3)][(v7 + 9)]; // L296
float v236 = v208 * v235; // L297, S[16,16)
float v237 = v187 + v236; // L298, S[16,16)
float v238 = v4[(v5 + 3)][(v7 + 10)]; // L299
float v239 = v208 * v238; // L300, S[16,16)
float v240 = v190 + v239; // L301, S[16,16)
float v241 = v4[(v5 + 3)][(v7 + 11)]; // L302
float v242 = v208 * v241; // L303, S[16,16)
float v243 = v193 + v242; // L304, S[16,16)
float v244 = v4[(v5 + 3)][(v7 + 12)]; // L305
float v245 = v208 * v244; // L306, S[16,16)
float v246 = v196 + v245; // L307, S[16,16)
float v247 = v4[(v5 + 3)][(v7 + 13)]; // L308
float v248 = v208 * v247; // L309, S[16,16)
float v249 = v199 + v248; // L310, S[16,16)
float v250 = v4[(v5 + 3)][(v7 + 14)]; // L311
float v251 = v208 * v250; // L312, S[16,16)
float v252 = v202 + v251; // L313, S[16,16)
float v253 = v4[(v5 + 3)][(v7 + 15)]; // L314
float v254 = v208 * v253; // L315, S[16,16)
float v255 = v205 + v254; // L316, S[16,16)
float v256 = v3[v6][(v5 + 4)]; // L317
float v257 = v4[(v5 + 4)][v7]; // L318
float v258 = v0 * v256; // L319, S[16,16)
float v259 = v258 * v257; // L320, S[16,16)
float v260 = v210 + v259; // L321, S[16,16)
float v261 = v4[(v5 + 4)][(v7 + 1)]; // L322
float v262 = v258 * v261; // L323, S[16,16)
float v263 = v213 + v262; // L324, S[16,16)
float v264 = v4[(v5 + 4)][(v7 + 2)]; // L325
float v265 = v258 * v264; // L326, S[16,16)
float v266 = v216 + v265; // L327, S[16,16)
float v267 = v4[(v5 + 4)][(v7 + 3)]; // L328
float v268 = v258 * v267; // L329, S[16,16)
float v269 = v219 + v268; // L330, S[16,16)
float v270 = v4[(v5 + 4)][(v7 + 4)]; // L331
float v271 = v258 * v270; // L332, S[16,16)
float v272 = v222 + v271; // L333, S[16,16)
float v273 = v4[(v5 + 4)][(v7 + 5)]; // L334
float v274 = v258 * v273; // L335, S[16,16)
float v275 = v225 + v274; // L336, S[16,16)
float v276 = v4[(v5 + 4)][(v7 + 6)]; // L337
float v277 = v258 * v276; // L338, S[16,16)
float v278 = v228 + v277; // L339, S[16,16)
float v279 = v4[(v5 + 4)][(v7 + 7)]; // L340
float v280 = v258 * v279; // L341, S[16,16)
float v281 = v231 + v280; // L342, S[16,16)
float v282 = v4[(v5 + 4)][(v7 + 8)]; // L343
float v283 = v258 * v282; // L344, S[16,16)
float v284 = v234 + v283; // L345, S[16,16)
float v285 = v4[(v5 + 4)][(v7 + 9)]; // L346
float v286 = v258 * v285; // L347, S[16,16)
float v287 = v237 + v286; // L348, S[16,16)
float v288 = v4[(v5 + 4)][(v7 + 10)]; // L349
float v289 = v258 * v288; // L350, S[16,16)
float v290 = v240 + v289; // L351, S[16,16)
float v291 = v4[(v5 + 4)][(v7 + 11)]; // L352
float v292 = v258 * v291; // L353, S[16,16)
float v293 = v243 + v292; // L354, S[16,16)
float v294 = v4[(v5 + 4)][(v7 + 12)]; // L355
float v295 = v258 * v294; // L356, S[16,16)
float v296 = v246 + v295; // L357, S[16,16)
float v297 = v4[(v5 + 4)][(v7 + 13)]; // L358
float v298 = v258 * v297; // L359, S[16,16)
float v299 = v249 + v298; // L360, S[16,16)
float v300 = v4[(v5 + 4)][(v7 + 14)]; // L361
float v301 = v258 * v300; // L362, S[16,16)
float v302 = v252 + v301; // L363, S[16,16)
float v303 = v4[(v5 + 4)][(v7 + 15)]; // L364
float v304 = v258 * v303; // L365, S[16,16)
float v305 = v255 + v304; // L366, S[16,16)
float v306 = v3[v6][(v5 + 5)]; // L367
float v307 = v4[(v5 + 5)][v7]; // L368
float v308 = v0 * v306; // L369, S[16,16)
float v309 = v308 * v307; // L370, S[16,16)
float v310 = v260 + v309; // L371, S[16,16)
float v311 = v4[(v5 + 5)][(v7 + 1)]; // L372
float v312 = v308 * v311; // L373, S[16,16)
float v313 = v263 + v312; // L374, S[16,16)
float v314 = v4[(v5 + 5)][(v7 + 2)]; // L375
float v315 = v308 * v314; // L376, S[16,16)
float v316 = v266 + v315; // L377, S[16,16)
float v317 = v4[(v5 + 5)][(v7 + 3)]; // L378
float v318 = v308 * v317; // L379, S[16,16)
float v319 = v269 + v318; // L380, S[16,16)
float v320 = v4[(v5 + 5)][(v7 + 4)]; // L381
float v321 = v308 * v320; // L382, S[16,16)
float v322 = v272 + v321; // L383, S[16,16)
float v323 = v4[(v5 + 5)][(v7 + 5)]; // L384
float v324 = v308 * v323; // L385, S[16,16)
float v325 = v275 + v324; // L386, S[16,16)
float v326 = v4[(v5 + 5)][(v7 + 6)]; // L387
float v327 = v308 * v326; // L388, S[16,16)
float v328 = v278 + v327; // L389, S[16,16)
float v329 = v4[(v5 + 5)][(v7 + 7)]; // L390
float v330 = v308 * v329; // L391, S[16,16)
float v331 = v281 + v330; // L392, S[16,16)
float v332 = v4[(v5 + 5)][(v7 + 8)]; // L393
float v333 = v308 * v332; // L394, S[16,16)
float v334 = v284 + v333; // L395, S[16,16)
float v335 = v4[(v5 + 5)][(v7 + 9)]; // L396
float v336 = v308 * v335; // L397, S[16,16)
float v337 = v287 + v336; // L398, S[16,16)
float v338 = v4[(v5 + 5)][(v7 + 10)]; // L399
float v339 = v308 * v338; // L400, S[16,16)
float v340 = v290 + v339; // L401, S[16,16)
float v341 = v4[(v5 + 5)][(v7 + 11)]; // L402
float v342 = v308 * v341; // L403, S[16,16)
float v343 = v293 + v342; // L404, S[16,16)
float v344 = v4[(v5 + 5)][(v7 + 12)]; // L405
float v345 = v308 * v344; // L406, S[16,16)
float v346 = v296 + v345; // L407, S[16,16)
float v347 = v4[(v5 + 5)][(v7 + 13)]; // L408
float v348 = v308 * v347; // L409, S[16,16)
float v349 = v299 + v348; // L410, S[16,16)
float v350 = v4[(v5 + 5)][(v7 + 14)]; // L411
float v351 = v308 * v350; // L412, S[16,16)
float v352 = v302 + v351; // L413, S[16,16)
float v353 = v4[(v5 + 5)][(v7 + 15)]; // L414
float v354 = v308 * v353; // L415, S[16,16)
float v355 = v305 + v354; // L416, S[16,16)
float v356 = v3[v6][(v5 + 6)]; // L417
float v357 = v4[(v5 + 6)][v7]; // L418
float v358 = v0 * v356; // L419, S[16,16)
float v359 = v358 * v357; // L420, S[16,16)
float v360 = v310 + v359; // L421, S[16,16)
float v361 = v4[(v5 + 6)][(v7 + 1)]; // L422
float v362 = v358 * v361; // L423, S[16,16)
float v363 = v313 + v362; // L424, S[16,16)
float v364 = v4[(v5 + 6)][(v7 + 2)]; // L425
float v365 = v358 * v364; // L426, S[16,16)
float v366 = v316 + v365; // L427, S[16,16)
float v367 = v4[(v5 + 6)][(v7 + 3)]; // L428
float v368 = v358 * v367; // L429, S[16,16)
float v369 = v319 + v368; // L430, S[16,16)
float v370 = v4[(v5 + 6)][(v7 + 4)]; // L431
float v371 = v358 * v370; // L432, S[16,16)
float v372 = v322 + v371; // L433, S[16,16)
float v373 = v4[(v5 + 6)][(v7 + 5)]; // L434
float v374 = v358 * v373; // L435, S[16,16)
float v375 = v325 + v374; // L436, S[16,16)
float v376 = v4[(v5 + 6)][(v7 + 6)]; // L437
float v377 = v358 * v376; // L438, S[16,16)
float v378 = v328 + v377; // L439, S[16,16)
float v379 = v4[(v5 + 6)][(v7 + 7)]; // L440
float v380 = v358 * v379; // L441, S[16,16)
float v381 = v331 + v380; // L442, S[16,16)
float v382 = v4[(v5 + 6)][(v7 + 8)]; // L443
float v383 = v358 * v382; // L444, S[16,16)
float v384 = v334 + v383; // L445, S[16,16)
float v385 = v4[(v5 + 6)][(v7 + 9)]; // L446
float v386 = v358 * v385; // L447, S[16,16)
float v387 = v337 + v386; // L448, S[16,16)
float v388 = v4[(v5 + 6)][(v7 + 10)]; // L449
float v389 = v358 * v388; // L450, S[16,16)
float v390 = v340 + v389; // L451, S[16,16)
float v391 = v4[(v5 + 6)][(v7 + 11)]; // L452
float v392 = v358 * v391; // L453, S[16,16)
float v393 = v343 + v392; // L454, S[16,16)
float v394 = v4[(v5 + 6)][(v7 + 12)]; // L455
float v395 = v358 * v394; // L456, S[16,16)
float v396 = v346 + v395; // L457, S[16,16)
float v397 = v4[(v5 + 6)][(v7 + 13)]; // L458
float v398 = v358 * v397; // L459, S[16,16)
float v399 = v349 + v398; // L460, S[16,16)
float v400 = v4[(v5 + 6)][(v7 + 14)]; // L461
float v401 = v358 * v400; // L462, S[16,16)
float v402 = v352 + v401; // L463, S[16,16)
float v403 = v4[(v5 + 6)][(v7 + 15)]; // L464
float v404 = v358 * v403; // L465, S[16,16)
float v405 = v355 + v404; // L466, S[16,16)
float v406 = v3[v6][(v5 + 7)]; // L467
float v407 = v4[(v5 + 7)][v7]; // L468
float v408 = v0 * v406; // L469, S[16,16)
float v409 = v408 * v407; // L470, S[16,16)
float v410 = v360 + v409; // L471, S[16,16)
v2[v6][v7] = v410; // L472, S[16,16)
float v411 = v4[(v5 + 7)][(v7 + 1)]; // L473
float v412 = v408 * v411; // L474, S[16,16)
float v413 = v363 + v412; // L475, S[16,16)
v2[v6][(v7 + 1)] = v413; // L476
float v414 = v4[(v5 + 7)][(v7 + 2)]; // L477
float v415 = v408 * v414; // L478, S[16,16)
float v416 = v366 + v415; // L479, S[16,16)
v2[v6][(v7 + 2)] = v416; // L480
float v417 = v4[(v5 + 7)][(v7 + 3)]; // L481
float v418 = v408 * v417; // L482, S[16,16)
float v419 = v369 + v418; // L483, S[16,16)
v2[v6][(v7 + 3)] = v419; // L484
float v420 = v4[(v5 + 7)][(v7 + 4)]; // L485
float v421 = v408 * v420; // L486, S[16,16)
float v422 = v372 + v421; // L487, S[16,16)
v2[v6][(v7 + 4)] = v422; // L488
float v423 = v4[(v5 + 7)][(v7 + 5)]; // L489
float v424 = v408 * v423; // L490, S[16,16)
float v425 = v375 + v424; // L491, S[16,16)
v2[v6][(v7 + 5)] = v425; // L492
float v426 = v4[(v5 + 7)][(v7 + 6)]; // L493
float v427 = v408 * v426; // L494, S[16,16)
float v428 = v378 + v427; // L495, S[16,16)
v2[v6][(v7 + 6)] = v428; // L496
float v429 = v4[(v5 + 7)][(v7 + 7)]; // L497
float v430 = v408 * v429; // L498, S[16,16)
float v431 = v381 + v430; // L499, S[16,16)
v2[v6][(v7 + 7)] = v431; // L500
float v432 = v4[(v5 + 7)][(v7 + 8)]; // L501
float v433 = v408 * v432; // L502, S[16,16)
float v434 = v384 + v433; // L503, S[16,16)
v2[v6][(v7 + 8)] = v434; // L504
float v435 = v4[(v5 + 7)][(v7 + 9)]; // L505
float v436 = v408 * v435; // L506, S[16,16)
float v437 = v387 + v436; // L507, S[16,16)
v2[v6][(v7 + 9)] = v437; // L508
float v438 = v4[(v5 + 7)][(v7 + 10)]; // L509
float v439 = v408 * v438; // L510, S[16,16)
float v440 = v390 + v439; // L511, S[16,16)
v2[v6][(v7 + 10)] = v440; // L512
float v441 = v4[(v5 + 7)][(v7 + 11)]; // L513
float v442 = v408 * v441; // L514, S[16,16)
float v443 = v393 + v442; // L515, S[16,16)
v2[v6][(v7 + 11)] = v443; // L516
float v444 = v4[(v5 + 7)][(v7 + 12)]; // L517
float v445 = v408 * v444; // L518, S[16,16)
float v446 = v396 + v445; // L519, S[16,16)
v2[v6][(v7 + 12)] = v446; // L520
float v447 = v4[(v5 + 7)][(v7 + 13)]; // L521
float v448 = v408 * v447; // L522, S[16,16)
float v449 = v399 + v448; // L523, S[16,16)
v2[v6][(v7 + 13)] = v449; // L524
float v450 = v4[(v5 + 7)][(v7 + 14)]; // L525
float v451 = v408 * v450; // L526, S[16,16)
float v452 = v402 + v451; // L527, S[16,16)
v2[v6][(v7 + 14)] = v452; // L528
float v453 = v4[(v5 + 7)][(v7 + 15)]; // L529
float v454 = v408 * v453; // L530, S[16,16)
float v455 = v405 + v454; // L531, S[16,16)
v2[v6][(v7 + 15)] = v455; // L532
}
}
}
}

View File

@ -0,0 +1,73 @@
//===------------------------------------------------------------*- C++ -*-===//
//
// Automatically generated file for High-level Synthesis (HLS).
//
//===----------------------------------------------------------------------===//
#include <algorithm>
#include <ap_axi_sdata.h>
#include <ap_fixed.h>
#include <ap_int.h>
#include <hls_math.h>
#include <hls_stream.h>
#include <math.h>
#include <stdint.h>
using namespace std;
/// This is top function.
/// Latency=402661378
/// DSP=18
void gesummv_4096(
float v0,
float v1,
float v2[4096][4096],
float v3[4096][4096],
float v4[4096],
float v5[4096],
float v6[4096]
) { // L2
#pragma HLS interface s_axilite port=return bundle=ctrl
#pragma HLS interface s_axilite port=v0 bundle=ctrl
#pragma HLS interface s_axilite port=v1 bundle=ctrl
#pragma HLS interface bram port=v2
#pragma HLS interface bram port=v3
#pragma HLS interface bram port=v4
#pragma HLS interface bram port=v5
#pragma HLS interface bram port=v6
#pragma HLS resource variable=v2 core=ram_s2p_bram
#pragma HLS resource variable=v3 core=ram_s2p_bram
#pragma HLS resource variable=v4 core=ram_s2p_bram
#pragma HLS resource variable=v5 core=ram_s2p_bram
#pragma HLS resource variable=v6 core=ram_s2p_bram
for (int v7 = 0; v7 < 4096; v7 += 1) { // L3, S[0,402661378), latency=98306
for (int v8 = 0; v8 < 4096; v8 += 1) { // L4, S[0,98306), latency=24
float v9 = v2[v7][v8]; // L5, S[0,2)
float v10 = v5[v8]; // L6, S[0,2)
float v11 = v4[v7]; // L7, S[4,6)
float v12 = v9 * v10; // L8, S[2,6)
float v13 = v11 + v12; // L9, S[6,11)
v4[v7] = v13; // L10, S[11,12)
float v14 = v3[v7][v8]; // L11, S[0,2)
float v15 = v5[v8]; // L12, S[0,2)
float v16 = v6[v7]; // L13, S[4,6)
float v17 = v14 * v15; // L14, S[2,6)
float v18 = v16 + v17; // L15, S[6,11)
v6[v7] = v18; // L16, S[11,12)
}
float v19 = v4[v7]; // L18, S[98294,98296)
float v20 = v6[v7]; // L19, S[98294,98296)
float v21 = v0 * v19; // L20, S[98296,98300)
float v22 = v1 * v20; // L21, S[98296,98300)
float v23 = v21 + v22; // L22, S[98300,98305)
v6[v7] = v23; // L23, S[98305,98306)
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,63 @@
//===------------------------------------------------------------*- C++ -*-===//
//
// Automatically generated file for High-level Synthesis (HLS).
//
//===----------------------------------------------------------------------===//
#include <algorithm>
#include <ap_axi_sdata.h>
#include <ap_fixed.h>
#include <ap_int.h>
#include <hls_math.h>
#include <hls_stream.h>
#include <math.h>
#include <stdint.h>
using namespace std;
/// This is top function.
/// Latency=756300136450
/// DSP=11
void syr2k_4096(
float v0,
float v1,
float v2[4096][4096],
float v3[4096][4096],
float v4[4096][4096]
) { // L3
#pragma HLS interface s_axilite port=return bundle=ctrl
#pragma HLS interface s_axilite port=v0 bundle=ctrl
#pragma HLS interface s_axilite port=v1 bundle=ctrl
#pragma HLS interface bram port=v2
#pragma HLS interface bram port=v3
#pragma HLS interface bram port=v4
#pragma HLS resource variable=v2 core=ram_s2p_bram
#pragma HLS resource variable=v3 core=ram_s2p_bram
#pragma HLS resource variable=v4 core=ram_s2p_bram
for (int v5 = 0; v5 < 4096; v5 += 1) { // L4, S[0,756300136450), latency=184643588
for (int v6 = 0; v6 < (v5 + 1); v6 += 1) { // L5, S[0,184643588), latency=90114
float v7 = v2[v5][v6]; // L6, S[90099,90101)
float v8 = v1 * v7; // L7, S[90101,90105)
v2[v5][v6] = v8; // L8, S[90105,90106)
for (int v9 = 0; v9 < 4096; v9 += 1) { // L9, S[0,90114), latency=22
float v10 = v3[v5][v9]; // L10, S[0,2)
float v11 = v4[v6][v9]; // L11, S[0,2)
float v12 = v4[v5][v9]; // L12, S[1,3)
float v13 = v3[v6][v9]; // L13, S[1,3)
float v14 = v2[v5][v6]; // L14, S[14,16)
float v15 = v10 * v11; // L15, S[3,7)
float v16 = v12 * v13; // L16, S[3,7)
float v17 = v15 + v16; // L17, S[7,12)
float v18 = v0 * v17; // L18, S[12,16)
float v19 = v14 + v18; // L19, S[16,21)
v2[v5][v6] = v19; // L20, S[21,22)
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,55 @@
//===------------------------------------------------------------*- C++ -*-===//
//
// Automatically generated file for High-level Synthesis (HLS).
//
//===----------------------------------------------------------------------===//
#include <algorithm>
#include <ap_axi_sdata.h>
#include <ap_fixed.h>
#include <ap_int.h>
#include <hls_math.h>
#include <hls_stream.h>
#include <math.h>
#include <stdint.h>
using namespace std;
/// This is top function.
/// Latency=550041042946
/// DSP=8
void syrk_4096(
float v0,
float v1,
float v2[4096][4096],
float v3[4096][4096]
) { // L3
#pragma HLS interface s_axilite port=return bundle=ctrl
#pragma HLS interface s_axilite port=v0 bundle=ctrl
#pragma HLS interface s_axilite port=v1 bundle=ctrl
#pragma HLS interface bram port=v2
#pragma HLS interface bram port=v3
#pragma HLS resource variable=v2 core=ram_s2p_bram
#pragma HLS resource variable=v3 core=ram_s2p_bram
for (int v4 = 0; v4 < 4096; v4 += 1) { // L4, S[0,550041042946), latency=134287364
for (int v5 = 0; v5 < (v4 + 1); v5 += 1) { // L5, S[0,134287364), latency=65538
float v6 = v2[v4][v5]; // L6, S[65523,65525)
float v7 = v1 * v6; // L7, S[65525,65529)
v2[v4][v5] = v7; // L8, S[65529,65530)
for (int v8 = 0; v8 < 4096; v8 += 1) { // L9, S[0,65538), latency=16
float v9 = v3[v4][v8]; // L10, S[0,2)
float v10 = v3[v5][v8]; // L11, S[4,6)
float v11 = v2[v4][v5]; // L12, S[8,10)
float v12 = v0 * v9; // L13, S[2,6)
float v13 = v12 * v10; // L14, S[6,10)
float v14 = v11 + v13; // L15, S[10,15)
v2[v4][v5] = v14; // L16, S[15,16)
}
}
}
}

View File

@ -0,0 +1,378 @@
//===------------------------------------------------------------*- C++ -*-===//
//
// Automatically generated file for High-level Synthesis (HLS).
//
//===----------------------------------------------------------------------===//
#include <algorithm>
#include <ap_axi_sdata.h>
#include <ap_fixed.h>
#include <ap_int.h>
#include <hls_math.h>
#include <hls_stream.h>
#include <math.h>
#include <stdint.h>
using namespace std;
/// This is top function.
/// Latency=51539607558
/// DSP=0
void syrk_4096(
float v0,
float v1,
float v2[4096][4096],
float v3[4096][4096]
) { // L1
#pragma HLS interface s_axilite port=return bundle=ctrl
#pragma HLS interface s_axilite port=v0 bundle=ctrl
#pragma HLS interface s_axilite port=v1 bundle=ctrl
#pragma HLS interface bram port=v2
#pragma HLS interface bram port=v3
#pragma HLS resource variable=v2 core=ram_s2p_bram
#pragma HLS array_partition variable=v3 cyclic factor=64 dim=2
#pragma HLS resource variable=v3 core=ram_s2p_bram
for (int v4 = 0; v4 < 4096; v4 += 64) { // L2
for (int v5 = 0; v5 < 4096; v5 += 1) { // L3
for (int v6 = 0; v6 < 4096; v6 += 1) { // L4
#pragma HLS pipeline II=3
if ((v5 - v6) >= 0) { // L5, S[16,16)
float v7 = v2[v5][v6]; // L6, S[16,16)
float v8 = v1 * v7; // L7, S[16,16)
float v9 = v3[v5][v4]; // L8, S[16,16)
float v10 = v3[v6][v4]; // L9, S[16,16)
float v11;
if (v4 == 0) { // L10
v11 = v8; // L11
} else {
v11 = v7; // L13
}
float v12 = v0 * v9; // L15, S[16,16)
float v13 = v12 * v10; // L16, S[16,16)
float v14 = v11 + v13; // L17, S[16,16)
float v15 = v3[v5][(v4 + 1)]; // L18
float v16 = v3[v6][(v4 + 1)]; // L19
float v17 = v0 * v15; // L20, S[16,16)
float v18 = v17 * v16; // L21, S[16,16)
float v19 = v14 + v18; // L22, S[16,16)
float v20 = v3[v5][(v4 + 2)]; // L23
float v21 = v3[v6][(v4 + 2)]; // L24
float v22 = v0 * v20; // L25, S[16,16)
float v23 = v22 * v21; // L26, S[16,16)
float v24 = v19 + v23; // L27, S[16,16)
float v25 = v3[v5][(v4 + 3)]; // L28
float v26 = v3[v6][(v4 + 3)]; // L29
float v27 = v0 * v25; // L30, S[16,16)
float v28 = v27 * v26; // L31, S[16,16)
float v29 = v24 + v28; // L32, S[16,16)
float v30 = v3[v5][(v4 + 4)]; // L33
float v31 = v3[v6][(v4 + 4)]; // L34
float v32 = v0 * v30; // L35, S[16,16)
float v33 = v32 * v31; // L36, S[16,16)
float v34 = v29 + v33; // L37, S[16,16)
float v35 = v3[v5][(v4 + 5)]; // L38
float v36 = v3[v6][(v4 + 5)]; // L39
float v37 = v0 * v35; // L40, S[16,16)
float v38 = v37 * v36; // L41, S[16,16)
float v39 = v34 + v38; // L42, S[16,16)
float v40 = v3[v5][(v4 + 6)]; // L43
float v41 = v3[v6][(v4 + 6)]; // L44
float v42 = v0 * v40; // L45, S[16,16)
float v43 = v42 * v41; // L46, S[16,16)
float v44 = v39 + v43; // L47, S[16,16)
float v45 = v3[v5][(v4 + 7)]; // L48
float v46 = v3[v6][(v4 + 7)]; // L49
float v47 = v0 * v45; // L50, S[16,16)
float v48 = v47 * v46; // L51, S[16,16)
float v49 = v44 + v48; // L52, S[16,16)
float v50 = v3[v5][(v4 + 8)]; // L53
float v51 = v3[v6][(v4 + 8)]; // L54
float v52 = v0 * v50; // L55, S[16,16)
float v53 = v52 * v51; // L56, S[16,16)
float v54 = v49 + v53; // L57, S[16,16)
float v55 = v3[v5][(v4 + 9)]; // L58
float v56 = v3[v6][(v4 + 9)]; // L59
float v57 = v0 * v55; // L60, S[16,16)
float v58 = v57 * v56; // L61, S[16,16)
float v59 = v54 + v58; // L62, S[16,16)
float v60 = v3[v5][(v4 + 10)]; // L63
float v61 = v3[v6][(v4 + 10)]; // L64
float v62 = v0 * v60; // L65, S[16,16)
float v63 = v62 * v61; // L66, S[16,16)
float v64 = v59 + v63; // L67, S[16,16)
float v65 = v3[v5][(v4 + 11)]; // L68
float v66 = v3[v6][(v4 + 11)]; // L69
float v67 = v0 * v65; // L70, S[16,16)
float v68 = v67 * v66; // L71, S[16,16)
float v69 = v64 + v68; // L72, S[16,16)
float v70 = v3[v5][(v4 + 12)]; // L73
float v71 = v3[v6][(v4 + 12)]; // L74
float v72 = v0 * v70; // L75, S[16,16)
float v73 = v72 * v71; // L76, S[16,16)
float v74 = v69 + v73; // L77, S[16,16)
float v75 = v3[v5][(v4 + 13)]; // L78
float v76 = v3[v6][(v4 + 13)]; // L79
float v77 = v0 * v75; // L80, S[16,16)
float v78 = v77 * v76; // L81, S[16,16)
float v79 = v74 + v78; // L82, S[16,16)
float v80 = v3[v5][(v4 + 14)]; // L83
float v81 = v3[v6][(v4 + 14)]; // L84
float v82 = v0 * v80; // L85, S[16,16)
float v83 = v82 * v81; // L86, S[16,16)
float v84 = v79 + v83; // L87, S[16,16)
float v85 = v3[v5][(v4 + 15)]; // L88
float v86 = v3[v6][(v4 + 15)]; // L89
float v87 = v0 * v85; // L90, S[16,16)
float v88 = v87 * v86; // L91, S[16,16)
float v89 = v84 + v88; // L92, S[16,16)
float v90 = v3[v5][(v4 + 16)]; // L93
float v91 = v3[v6][(v4 + 16)]; // L94
float v92 = v0 * v90; // L95, S[16,16)
float v93 = v92 * v91; // L96, S[16,16)
float v94 = v89 + v93; // L97, S[16,16)
float v95 = v3[v5][(v4 + 17)]; // L98
float v96 = v3[v6][(v4 + 17)]; // L99
float v97 = v0 * v95; // L100, S[16,16)
float v98 = v97 * v96; // L101, S[16,16)
float v99 = v94 + v98; // L102, S[16,16)
float v100 = v3[v5][(v4 + 18)]; // L103
float v101 = v3[v6][(v4 + 18)]; // L104
float v102 = v0 * v100; // L105, S[16,16)
float v103 = v102 * v101; // L106, S[16,16)
float v104 = v99 + v103; // L107, S[16,16)
float v105 = v3[v5][(v4 + 19)]; // L108
float v106 = v3[v6][(v4 + 19)]; // L109
float v107 = v0 * v105; // L110, S[16,16)
float v108 = v107 * v106; // L111, S[16,16)
float v109 = v104 + v108; // L112, S[16,16)
float v110 = v3[v5][(v4 + 20)]; // L113
float v111 = v3[v6][(v4 + 20)]; // L114
float v112 = v0 * v110; // L115, S[16,16)
float v113 = v112 * v111; // L116, S[16,16)
float v114 = v109 + v113; // L117, S[16,16)
float v115 = v3[v5][(v4 + 21)]; // L118
float v116 = v3[v6][(v4 + 21)]; // L119
float v117 = v0 * v115; // L120, S[16,16)
float v118 = v117 * v116; // L121, S[16,16)
float v119 = v114 + v118; // L122, S[16,16)
float v120 = v3[v5][(v4 + 22)]; // L123
float v121 = v3[v6][(v4 + 22)]; // L124
float v122 = v0 * v120; // L125, S[16,16)
float v123 = v122 * v121; // L126, S[16,16)
float v124 = v119 + v123; // L127, S[16,16)
float v125 = v3[v5][(v4 + 23)]; // L128
float v126 = v3[v6][(v4 + 23)]; // L129
float v127 = v0 * v125; // L130, S[16,16)
float v128 = v127 * v126; // L131, S[16,16)
float v129 = v124 + v128; // L132, S[16,16)
float v130 = v3[v5][(v4 + 24)]; // L133
float v131 = v3[v6][(v4 + 24)]; // L134
float v132 = v0 * v130; // L135, S[16,16)
float v133 = v132 * v131; // L136, S[16,16)
float v134 = v129 + v133; // L137, S[16,16)
float v135 = v3[v5][(v4 + 25)]; // L138
float v136 = v3[v6][(v4 + 25)]; // L139
float v137 = v0 * v135; // L140, S[16,16)
float v138 = v137 * v136; // L141, S[16,16)
float v139 = v134 + v138; // L142, S[16,16)
float v140 = v3[v5][(v4 + 26)]; // L143
float v141 = v3[v6][(v4 + 26)]; // L144
float v142 = v0 * v140; // L145, S[16,16)
float v143 = v142 * v141; // L146, S[16,16)
float v144 = v139 + v143; // L147, S[16,16)
float v145 = v3[v5][(v4 + 27)]; // L148
float v146 = v3[v6][(v4 + 27)]; // L149
float v147 = v0 * v145; // L150, S[16,16)
float v148 = v147 * v146; // L151, S[16,16)
float v149 = v144 + v148; // L152, S[16,16)
float v150 = v3[v5][(v4 + 28)]; // L153
float v151 = v3[v6][(v4 + 28)]; // L154
float v152 = v0 * v150; // L155, S[16,16)
float v153 = v152 * v151; // L156, S[16,16)
float v154 = v149 + v153; // L157, S[16,16)
float v155 = v3[v5][(v4 + 29)]; // L158
float v156 = v3[v6][(v4 + 29)]; // L159
float v157 = v0 * v155; // L160, S[16,16)
float v158 = v157 * v156; // L161, S[16,16)
float v159 = v154 + v158; // L162, S[16,16)
float v160 = v3[v5][(v4 + 30)]; // L163
float v161 = v3[v6][(v4 + 30)]; // L164
float v162 = v0 * v160; // L165, S[16,16)
float v163 = v162 * v161; // L166, S[16,16)
float v164 = v159 + v163; // L167, S[16,16)
float v165 = v3[v5][(v4 + 31)]; // L168
float v166 = v3[v6][(v4 + 31)]; // L169
float v167 = v0 * v165; // L170, S[16,16)
float v168 = v167 * v166; // L171, S[16,16)
float v169 = v164 + v168; // L172, S[16,16)
float v170 = v3[v5][(v4 + 32)]; // L173
float v171 = v3[v6][(v4 + 32)]; // L174
float v172 = v0 * v170; // L175, S[16,16)
float v173 = v172 * v171; // L176, S[16,16)
float v174 = v169 + v173; // L177, S[16,16)
float v175 = v3[v5][(v4 + 33)]; // L178
float v176 = v3[v6][(v4 + 33)]; // L179
float v177 = v0 * v175; // L180, S[16,16)
float v178 = v177 * v176; // L181, S[16,16)
float v179 = v174 + v178; // L182, S[16,16)
float v180 = v3[v5][(v4 + 34)]; // L183
float v181 = v3[v6][(v4 + 34)]; // L184
float v182 = v0 * v180; // L185, S[16,16)
float v183 = v182 * v181; // L186, S[16,16)
float v184 = v179 + v183; // L187, S[16,16)
float v185 = v3[v5][(v4 + 35)]; // L188
float v186 = v3[v6][(v4 + 35)]; // L189
float v187 = v0 * v185; // L190, S[16,16)
float v188 = v187 * v186; // L191, S[16,16)
float v189 = v184 + v188; // L192, S[16,16)
float v190 = v3[v5][(v4 + 36)]; // L193
float v191 = v3[v6][(v4 + 36)]; // L194
float v192 = v0 * v190; // L195, S[16,16)
float v193 = v192 * v191; // L196, S[16,16)
float v194 = v189 + v193; // L197, S[16,16)
float v195 = v3[v5][(v4 + 37)]; // L198
float v196 = v3[v6][(v4 + 37)]; // L199
float v197 = v0 * v195; // L200, S[16,16)
float v198 = v197 * v196; // L201, S[16,16)
float v199 = v194 + v198; // L202, S[16,16)
float v200 = v3[v5][(v4 + 38)]; // L203
float v201 = v3[v6][(v4 + 38)]; // L204
float v202 = v0 * v200; // L205, S[16,16)
float v203 = v202 * v201; // L206, S[16,16)
float v204 = v199 + v203; // L207, S[16,16)
float v205 = v3[v5][(v4 + 39)]; // L208
float v206 = v3[v6][(v4 + 39)]; // L209
float v207 = v0 * v205; // L210, S[16,16)
float v208 = v207 * v206; // L211, S[16,16)
float v209 = v204 + v208; // L212, S[16,16)
float v210 = v3[v5][(v4 + 40)]; // L213
float v211 = v3[v6][(v4 + 40)]; // L214
float v212 = v0 * v210; // L215, S[16,16)
float v213 = v212 * v211; // L216, S[16,16)
float v214 = v209 + v213; // L217, S[16,16)
float v215 = v3[v5][(v4 + 41)]; // L218
float v216 = v3[v6][(v4 + 41)]; // L219
float v217 = v0 * v215; // L220, S[16,16)
float v218 = v217 * v216; // L221, S[16,16)
float v219 = v214 + v218; // L222, S[16,16)
float v220 = v3[v5][(v4 + 42)]; // L223
float v221 = v3[v6][(v4 + 42)]; // L224
float v222 = v0 * v220; // L225, S[16,16)
float v223 = v222 * v221; // L226, S[16,16)
float v224 = v219 + v223; // L227, S[16,16)
float v225 = v3[v5][(v4 + 43)]; // L228
float v226 = v3[v6][(v4 + 43)]; // L229
float v227 = v0 * v225; // L230, S[16,16)
float v228 = v227 * v226; // L231, S[16,16)
float v229 = v224 + v228; // L232, S[16,16)
float v230 = v3[v5][(v4 + 44)]; // L233
float v231 = v3[v6][(v4 + 44)]; // L234
float v232 = v0 * v230; // L235, S[16,16)
float v233 = v232 * v231; // L236, S[16,16)
float v234 = v229 + v233; // L237, S[16,16)
float v235 = v3[v5][(v4 + 45)]; // L238
float v236 = v3[v6][(v4 + 45)]; // L239
float v237 = v0 * v235; // L240, S[16,16)
float v238 = v237 * v236; // L241, S[16,16)
float v239 = v234 + v238; // L242, S[16,16)
float v240 = v3[v5][(v4 + 46)]; // L243
float v241 = v3[v6][(v4 + 46)]; // L244
float v242 = v0 * v240; // L245, S[16,16)
float v243 = v242 * v241; // L246, S[16,16)
float v244 = v239 + v243; // L247, S[16,16)
float v245 = v3[v5][(v4 + 47)]; // L248
float v246 = v3[v6][(v4 + 47)]; // L249
float v247 = v0 * v245; // L250, S[16,16)
float v248 = v247 * v246; // L251, S[16,16)
float v249 = v244 + v248; // L252, S[16,16)
float v250 = v3[v5][(v4 + 48)]; // L253
float v251 = v3[v6][(v4 + 48)]; // L254
float v252 = v0 * v250; // L255, S[16,16)
float v253 = v252 * v251; // L256, S[16,16)
float v254 = v249 + v253; // L257, S[16,16)
float v255 = v3[v5][(v4 + 49)]; // L258
float v256 = v3[v6][(v4 + 49)]; // L259
float v257 = v0 * v255; // L260, S[16,16)
float v258 = v257 * v256; // L261, S[16,16)
float v259 = v254 + v258; // L262, S[16,16)
float v260 = v3[v5][(v4 + 50)]; // L263
float v261 = v3[v6][(v4 + 50)]; // L264
float v262 = v0 * v260; // L265, S[16,16)
float v263 = v262 * v261; // L266, S[16,16)
float v264 = v259 + v263; // L267, S[16,16)
float v265 = v3[v5][(v4 + 51)]; // L268
float v266 = v3[v6][(v4 + 51)]; // L269
float v267 = v0 * v265; // L270, S[16,16)
float v268 = v267 * v266; // L271, S[16,16)
float v269 = v264 + v268; // L272, S[16,16)
float v270 = v3[v5][(v4 + 52)]; // L273
float v271 = v3[v6][(v4 + 52)]; // L274
float v272 = v0 * v270; // L275, S[16,16)
float v273 = v272 * v271; // L276, S[16,16)
float v274 = v269 + v273; // L277, S[16,16)
float v275 = v3[v5][(v4 + 53)]; // L278
float v276 = v3[v6][(v4 + 53)]; // L279
float v277 = v0 * v275; // L280, S[16,16)
float v278 = v277 * v276; // L281, S[16,16)
float v279 = v274 + v278; // L282, S[16,16)
float v280 = v3[v5][(v4 + 54)]; // L283
float v281 = v3[v6][(v4 + 54)]; // L284
float v282 = v0 * v280; // L285, S[16,16)
float v283 = v282 * v281; // L286, S[16,16)
float v284 = v279 + v283; // L287, S[16,16)
float v285 = v3[v5][(v4 + 55)]; // L288
float v286 = v3[v6][(v4 + 55)]; // L289
float v287 = v0 * v285; // L290, S[16,16)
float v288 = v287 * v286; // L291, S[16,16)
float v289 = v284 + v288; // L292, S[16,16)
float v290 = v3[v5][(v4 + 56)]; // L293
float v291 = v3[v6][(v4 + 56)]; // L294
float v292 = v0 * v290; // L295, S[16,16)
float v293 = v292 * v291; // L296, S[16,16)
float v294 = v289 + v293; // L297, S[16,16)
float v295 = v3[v5][(v4 + 57)]; // L298
float v296 = v3[v6][(v4 + 57)]; // L299
float v297 = v0 * v295; // L300, S[16,16)
float v298 = v297 * v296; // L301, S[16,16)
float v299 = v294 + v298; // L302, S[16,16)
float v300 = v3[v5][(v4 + 58)]; // L303
float v301 = v3[v6][(v4 + 58)]; // L304
float v302 = v0 * v300; // L305, S[16,16)
float v303 = v302 * v301; // L306, S[16,16)
float v304 = v299 + v303; // L307, S[16,16)
float v305 = v3[v5][(v4 + 59)]; // L308
float v306 = v3[v6][(v4 + 59)]; // L309
float v307 = v0 * v305; // L310, S[16,16)
float v308 = v307 * v306; // L311, S[16,16)
float v309 = v304 + v308; // L312, S[16,16)
float v310 = v3[v5][(v4 + 60)]; // L313
float v311 = v3[v6][(v4 + 60)]; // L314
float v312 = v0 * v310; // L315, S[16,16)
float v313 = v312 * v311; // L316, S[16,16)
float v314 = v309 + v313; // L317, S[16,16)
float v315 = v3[v5][(v4 + 61)]; // L318
float v316 = v3[v6][(v4 + 61)]; // L319
float v317 = v0 * v315; // L320, S[16,16)
float v318 = v317 * v316; // L321, S[16,16)
float v319 = v314 + v318; // L322, S[16,16)
float v320 = v3[v5][(v4 + 62)]; // L323
float v321 = v3[v6][(v4 + 62)]; // L324
float v322 = v0 * v320; // L325, S[16,16)
float v323 = v322 * v321; // L326, S[16,16)
float v324 = v319 + v323; // L327, S[16,16)
float v325 = v3[v5][(v4 + 63)]; // L328
float v326 = v3[v6][(v4 + 63)]; // L329
float v327 = v0 * v325; // L330, S[16,16)
float v328 = v327 * v326; // L331, S[16,16)
float v329 = v324 + v328; // L332, S[16,16)
v2[v5][v6] = v329; // L333, S[16,16)
}
}
}
}
}

View File

@ -6,10 +6,10 @@ output_num=1
max_init_parallel=32
# Positive number: the maximum parallelism of exploration.
max_expl_parallel=128
max_expl_parallel=128 # set to 512 for syr2k, syrk, trmm
# Positive number: the maximum parallelism of each loop.
max_loop_parallel=16
max_loop_parallel=16 # set to 64 for syr2k, syrk, trmm
# Positive number: the maximum DSE iteration number.
max_iter_num=30

View File

@ -0,0 +1,52 @@
//===------------------------------------------------------------*- C++ -*-===//
//
// Automatically generated file for High-level Synthesis (HLS).
//
//===----------------------------------------------------------------------===//
#include <algorithm>
#include <ap_axi_sdata.h>
#include <ap_fixed.h>
#include <ap_int.h>
#include <hls_math.h>
#include <hls_stream.h>
#include <math.h>
#include <stdint.h>
using namespace std;
/// This is top function.
/// Latency=653187358722
/// DSP=8
void trmm_4096(
float v0,
float v1[4096][4096],
float v2[4096][4096]
) { // L3
#pragma HLS interface s_axilite port=return bundle=ctrl
#pragma HLS interface s_axilite port=v0 bundle=ctrl
#pragma HLS interface bram port=v1
#pragma HLS interface bram port=v2
#pragma HLS resource variable=v1 core=ram_s2p_bram
#pragma HLS resource variable=v2 core=ram_s2p_bram
for (int v3 = 0; v3 < 4096; v3 += 1) { // L4, S[0,653187358722), latency=159469570
for (int v4 = 0; v4 < 4096; v4 += 1) { // L5, S[0,159469570), latency=38933
for (int v5 = 0; v5 < (v3 + 1); v5 += 1) { // L6, S[0,38933), latency=19
float v6 = v1[v3][v5]; // L7, S[0,2)
float v7 = v2[v5][v4]; // L8, S[0,2)
float v8 = v2[v3][v4]; // L9, S[4,6)
float v9 = v6 * v7; // L10, S[2,6)
float v10 = v8 + v9; // L11, S[6,11)
v2[v3][v4] = v10; // L12, S[11,12)
}
float v11 = v2[v3][v4]; // L14, S[38926,38928)
float v12 = v0 * v11; // L15, S[38928,38932)
v2[v3][v4] = v12; // L16, S[38932,38933)
}
}
}

File diff suppressed because it is too large Load Diff