hanchenye-scalehls/samples/polybench/bicg/bicg_4096_dse.cpp

771 lines
35 KiB
C++

//===------------------------------------------------------------*- 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
}
}
}