libjxl

FORK: libjxl patches used on blog
git clone https://git.neptards.moe/blog/libjxl.git
Log | Files | Refs | Submodules | README | LICENSE

fast_dct64-inl.h (46385B)


      1 // Copyright (c) the JPEG XL Project Authors. All rights reserved.
      2 //
      3 // Use of this source code is governed by a BSD-style
      4 // license that can be found in the LICENSE file.
      5 
      6 /* This file is automatically generated. Do not modify it directly. */
      7 #if HWY_TARGET != HWY_NEON
      8 #error "only include this file from fast_dct-inl.h"
      9 #endif
     10 
     11 constexpr size_t FastIDCTIntegerBits(FastDCTTag<64>) { return 1; }
     12 
     13 void FastIDCT(FastDCTTag<64>, const int16_t* in, size_t in_stride, int16_t* out,
     14               size_t out_stride, size_t count) {
     15   JXL_ASSERT(count % 8 == 0);
     16   for (size_t i = 0; i < count; i += 8) {
     17     int16x8_t v0 = vld1q_s16(in + in_stride * 0 + i);
     18     int16x8_t v1 = vld1q_s16(in + in_stride * 32 + i);
     19     int16x8_t v2 = vaddq_s16(v0, v1);
     20     int16x8_t v3 = vld1q_s16(in + in_stride * 16 + i);
     21     int16x8_t v4_tmp = vqrdmulhq_n_s16(v3, 13573);
     22     int16x8_t v4 = vaddq_s16(v4_tmp, v3);
     23     int16x8_t v5 = vld1q_s16(in + in_stride * 48 + i);
     24     int16x8_t v6 = vaddq_s16(v5, v3);
     25     int16x8_t v7 = vaddq_s16(v4, v6);
     26     int16x8_t v8 = vqrdmulhq_n_s16(v7, 17734);
     27     int16x8_t v9 = vaddq_s16(v2, v8);
     28     int16x8_t v10 = vld1q_s16(in + in_stride * 8 + i);
     29     int16x8_t v11_tmp = vqrdmulhq_n_s16(v10, 13573);
     30     int16x8_t v11 = vaddq_s16(v11_tmp, v10);
     31     int16x8_t v12 = vld1q_s16(in + in_stride * 40 + i);
     32     int16x8_t v13 = vld1q_s16(in + in_stride * 24 + i);
     33     int16x8_t v14 = vaddq_s16(v12, v13);
     34     int16x8_t v15 = vaddq_s16(v11, v14);
     35     int16x8_t v16 = vld1q_s16(in + in_stride * 56 + i);
     36     int16x8_t v17 = vaddq_s16(v16, v12);
     37     int16x8_t v18 = vaddq_s16(v13, v10);
     38     int16x8_t v19 = vaddq_s16(v17, v18);
     39     int16x8_t v20 = vqrdmulhq_n_s16(v19, 17734);
     40     int16x8_t v21 = vqrdmulhq_n_s16(v18, 25080);
     41     int16x8_t v22 = vaddq_s16(v20, v21);
     42     int16x8_t v23 = vaddq_s16(v15, v22);
     43     int16x8_t v24 = vqrdmulhq_n_s16(v23, 16705);
     44     int16x8_t v25 = vaddq_s16(v9, v24);
     45     int16x8_t v26 = vld1q_s16(in + in_stride * 4 + i);
     46     int16x8_t v27_tmp = vqrdmulhq_n_s16(v26, 13573);
     47     int16x8_t v27 = vaddq_s16(v27_tmp, v26);
     48     int16x8_t v28 = vld1q_s16(in + in_stride * 36 + i);
     49     int16x8_t v29 = vld1q_s16(in + in_stride * 28 + i);
     50     int16x8_t v30 = vaddq_s16(v28, v29);
     51     int16x8_t v31 = vaddq_s16(v27, v30);
     52     int16x8_t v32 = vld1q_s16(in + in_stride * 20 + i);
     53     int16x8_t v33 = vld1q_s16(in + in_stride * 12 + i);
     54     int16x8_t v34 = vaddq_s16(v32, v33);
     55     int16x8_t v35 = vqrdmulhq_n_s16(v34, 25080);
     56     int16x8_t v36 = vld1q_s16(in + in_stride * 52 + i);
     57     int16x8_t v37 = vld1q_s16(in + in_stride * 44 + i);
     58     int16x8_t v38 = vaddq_s16(v36, v37);
     59     int16x8_t v39 = vaddq_s16(v38, v34);
     60     int16x8_t v40 = vqrdmulhq_n_s16(v39, 17734);
     61     int16x8_t v41 = vaddq_s16(v35, v40);
     62     int16x8_t v42 = vaddq_s16(v31, v41);
     63     int16x8_t v43 = vaddq_s16(v33, v26);
     64     int16x8_t v44_tmp = vqrdmulhq_n_s16(v43, 13573);
     65     int16x8_t v44 = vaddq_s16(v44_tmp, v43);
     66     int16x8_t v45 = vaddq_s16(v37, v28);
     67     int16x8_t v46 = vaddq_s16(v29, v32);
     68     int16x8_t v47 = vaddq_s16(v45, v46);
     69     int16x8_t v48 = vaddq_s16(v44, v47);
     70     int16x8_t v49 = vqrdmulhq_n_s16(v48, 16705);
     71     int16x8_t v50 = vaddq_s16(v46, v43);
     72     int16x8_t v51_tmp = vqrdmulhq_n_s16(v50, 10045);
     73     int16x8_t v51 = vaddq_s16(v51_tmp, v50);
     74     int16x8_t v52 = vld1q_s16(in + in_stride * 60 + i);
     75     int16x8_t v53 = vaddq_s16(v52, v36);
     76     int16x8_t v54 = vaddq_s16(v53, v45);
     77     int16x8_t v55 = vqrdmulhq_n_s16(v54, 17734);
     78     int16x8_t v56 = vaddq_s16(v51, v55);
     79     int16x8_t v57 = vqrdmulhq_n_s16(v56, 16705);
     80     int16x8_t v58 = vaddq_s16(v49, v57);
     81     int16x8_t v59 = vaddq_s16(v42, v58);
     82     int16x8_t v60 = vqrdmulhq_n_s16(v59, 16463);
     83     int16x8_t v61 = vaddq_s16(v25, v60);
     84     int16x8_t v62 = vld1q_s16(in + in_stride * 2 + i);
     85     int16x8_t v63_tmp = vqrdmulhq_n_s16(v62, 13573);
     86     int16x8_t v63 = vaddq_s16(v63_tmp, v62);
     87     int16x8_t v64 = vld1q_s16(in + in_stride * 34 + i);
     88     int16x8_t v65 = vld1q_s16(in + in_stride * 30 + i);
     89     int16x8_t v66 = vaddq_s16(v64, v65);
     90     int16x8_t v67 = vaddq_s16(v63, v66);
     91     int16x8_t v68 = vld1q_s16(in + in_stride * 18 + i);
     92     int16x8_t v69 = vld1q_s16(in + in_stride * 14 + i);
     93     int16x8_t v70 = vaddq_s16(v68, v69);
     94     int16x8_t v71 = vqrdmulhq_n_s16(v70, 25080);
     95     int16x8_t v72 = vld1q_s16(in + in_stride * 50 + i);
     96     int16x8_t v73 = vld1q_s16(in + in_stride * 46 + i);
     97     int16x8_t v74 = vaddq_s16(v72, v73);
     98     int16x8_t v75 = vaddq_s16(v74, v70);
     99     int16x8_t v76 = vqrdmulhq_n_s16(v75, 17734);
    100     int16x8_t v77 = vaddq_s16(v71, v76);
    101     int16x8_t v78 = vaddq_s16(v67, v77);
    102     int16x8_t v79 = vld1q_s16(in + in_stride * 10 + i);
    103     int16x8_t v80 = vld1q_s16(in + in_stride * 6 + i);
    104     int16x8_t v81 = vaddq_s16(v79, v80);
    105     int16x8_t v82_tmp = vqrdmulhq_n_s16(v81, 13573);
    106     int16x8_t v82 = vaddq_s16(v82_tmp, v81);
    107     int16x8_t v83 = vld1q_s16(in + in_stride * 42 + i);
    108     int16x8_t v84 = vld1q_s16(in + in_stride * 38 + i);
    109     int16x8_t v85 = vaddq_s16(v83, v84);
    110     int16x8_t v86 = vld1q_s16(in + in_stride * 26 + i);
    111     int16x8_t v87 = vld1q_s16(in + in_stride * 22 + i);
    112     int16x8_t v88 = vaddq_s16(v86, v87);
    113     int16x8_t v89 = vaddq_s16(v85, v88);
    114     int16x8_t v90 = vaddq_s16(v82, v89);
    115     int16x8_t v91 = vqrdmulhq_n_s16(v90, 16705);
    116     int16x8_t v92 = vaddq_s16(v88, v81);
    117     int16x8_t v93_tmp = vqrdmulhq_n_s16(v92, 10045);
    118     int16x8_t v93 = vaddq_s16(v93_tmp, v92);
    119     int16x8_t v94 = vld1q_s16(in + in_stride * 58 + i);
    120     int16x8_t v95 = vld1q_s16(in + in_stride * 54 + i);
    121     int16x8_t v96 = vaddq_s16(v94, v95);
    122     int16x8_t v97 = vaddq_s16(v96, v85);
    123     int16x8_t v98 = vqrdmulhq_n_s16(v97, 17734);
    124     int16x8_t v99 = vaddq_s16(v93, v98);
    125     int16x8_t v100 = vqrdmulhq_n_s16(v99, 16705);
    126     int16x8_t v101 = vaddq_s16(v91, v100);
    127     int16x8_t v102 = vaddq_s16(v78, v101);
    128     int16x8_t v103 = vaddq_s16(v69, v79);
    129     int16x8_t v104 = vaddq_s16(v80, v62);
    130     int16x8_t v105 = vaddq_s16(v103, v104);
    131     int16x8_t v106_tmp = vqrdmulhq_n_s16(v105, 13573);
    132     int16x8_t v106 = vaddq_s16(v106_tmp, v105);
    133     int16x8_t v107 = vaddq_s16(v73, v83);
    134     int16x8_t v108 = vaddq_s16(v84, v64);
    135     int16x8_t v109 = vaddq_s16(v107, v108);
    136     int16x8_t v110 = vaddq_s16(v65, v86);
    137     int16x8_t v111 = vaddq_s16(v87, v68);
    138     int16x8_t v112 = vaddq_s16(v110, v111);
    139     int16x8_t v113 = vaddq_s16(v109, v112);
    140     int16x8_t v114 = vaddq_s16(v106, v113);
    141     int16x8_t v115 = vqrdmulhq_n_s16(v114, 16705);
    142     int16x8_t v116 = vaddq_s16(v112, v105);
    143     int16x8_t v117 = vqrdmulhq_n_s16(v116, 25080);
    144     int16x8_t v118 = vqrdmulhq_n_s16(v116, 17734);
    145     int16x8_t v119 = vld1q_s16(in + in_stride * 62 + i);
    146     int16x8_t v120 = vaddq_s16(v119, v94);
    147     int16x8_t v121 = vaddq_s16(v95, v72);
    148     int16x8_t v122 = vaddq_s16(v120, v121);
    149     int16x8_t v123 = vaddq_s16(v122, v109);
    150     int16x8_t v124 = vqrdmulhq_n_s16(v123, 17734);
    151     int16x8_t v125 = vaddq_s16(v118, v124);
    152     int16x8_t v126 = vaddq_s16(v117, v125);
    153     int16x8_t v127 = vqrdmulhq_n_s16(v126, 16705);
    154     int16x8_t v128 = vaddq_s16(v115, v127);
    155     int16x8_t v129 = vqrdmulhq_n_s16(v128, 16463);
    156     int16x8_t v130_tmp = vqrdmulhq_n_s16(v104, 13573);
    157     int16x8_t v130 = vaddq_s16(v130_tmp, v104);
    158     int16x8_t v131 = vaddq_s16(v108, v110);
    159     int16x8_t v132 = vaddq_s16(v130, v131);
    160     int16x8_t v133 = vaddq_s16(v111, v103);
    161     int16x8_t v134_tmp = vqrdmulhq_n_s16(v133, 10045);
    162     int16x8_t v134 = vaddq_s16(v134_tmp, v133);
    163     int16x8_t v135 = vaddq_s16(v121, v107);
    164     int16x8_t v136 = vqrdmulhq_n_s16(v135, 17734);
    165     int16x8_t v137 = vaddq_s16(v134, v136);
    166     int16x8_t v138 = vaddq_s16(v132, v137);
    167     int16x8_t v139 = vqrdmulhq_n_s16(v138, 16463);
    168     int16x8_t v140 = vaddq_s16(v129, v139);
    169     int16x8_t v141 = vaddq_s16(v102, v140);
    170     int16x8_t v142 = vqrdmulhq_n_s16(v141, 16404);
    171     int16x8_t v143 = vaddq_s16(v61, v142);
    172     int16x8_t v144 = vld1q_s16(in + in_stride * 1 + i);
    173     int16x8_t v145_tmp = vqrdmulhq_n_s16(v144, 13573);
    174     int16x8_t v145 = vaddq_s16(v145_tmp, v144);
    175     int16x8_t v146 = vld1q_s16(in + in_stride * 33 + i);
    176     int16x8_t v147 = vld1q_s16(in + in_stride * 31 + i);
    177     int16x8_t v148 = vaddq_s16(v146, v147);
    178     int16x8_t v149 = vaddq_s16(v145, v148);
    179     int16x8_t v150 = vld1q_s16(in + in_stride * 17 + i);
    180     int16x8_t v151 = vld1q_s16(in + in_stride * 15 + i);
    181     int16x8_t v152 = vaddq_s16(v150, v151);
    182     int16x8_t v153 = vqrdmulhq_n_s16(v152, 25080);
    183     int16x8_t v154 = vld1q_s16(in + in_stride * 49 + i);
    184     int16x8_t v155 = vld1q_s16(in + in_stride * 47 + i);
    185     int16x8_t v156 = vaddq_s16(v154, v155);
    186     int16x8_t v157 = vaddq_s16(v156, v152);
    187     int16x8_t v158 = vqrdmulhq_n_s16(v157, 17734);
    188     int16x8_t v159 = vaddq_s16(v153, v158);
    189     int16x8_t v160 = vaddq_s16(v149, v159);
    190     int16x8_t v161 = vld1q_s16(in + in_stride * 9 + i);
    191     int16x8_t v162 = vld1q_s16(in + in_stride * 7 + i);
    192     int16x8_t v163 = vaddq_s16(v161, v162);
    193     int16x8_t v164_tmp = vqrdmulhq_n_s16(v163, 13573);
    194     int16x8_t v164 = vaddq_s16(v164_tmp, v163);
    195     int16x8_t v165 = vld1q_s16(in + in_stride * 41 + i);
    196     int16x8_t v166 = vld1q_s16(in + in_stride * 39 + i);
    197     int16x8_t v167 = vaddq_s16(v165, v166);
    198     int16x8_t v168 = vld1q_s16(in + in_stride * 25 + i);
    199     int16x8_t v169 = vld1q_s16(in + in_stride * 23 + i);
    200     int16x8_t v170 = vaddq_s16(v168, v169);
    201     int16x8_t v171 = vaddq_s16(v167, v170);
    202     int16x8_t v172 = vaddq_s16(v164, v171);
    203     int16x8_t v173 = vqrdmulhq_n_s16(v172, 16705);
    204     int16x8_t v174 = vaddq_s16(v170, v163);
    205     int16x8_t v175_tmp = vqrdmulhq_n_s16(v174, 10045);
    206     int16x8_t v175 = vaddq_s16(v175_tmp, v174);
    207     int16x8_t v176 = vld1q_s16(in + in_stride * 57 + i);
    208     int16x8_t v177 = vld1q_s16(in + in_stride * 55 + i);
    209     int16x8_t v178 = vaddq_s16(v176, v177);
    210     int16x8_t v179 = vaddq_s16(v178, v167);
    211     int16x8_t v180 = vqrdmulhq_n_s16(v179, 17734);
    212     int16x8_t v181 = vaddq_s16(v175, v180);
    213     int16x8_t v182 = vqrdmulhq_n_s16(v181, 16705);
    214     int16x8_t v183 = vaddq_s16(v173, v182);
    215     int16x8_t v184 = vaddq_s16(v160, v183);
    216     int16x8_t v185 = vld1q_s16(in + in_stride * 37 + i);
    217     int16x8_t v186 = vld1q_s16(in + in_stride * 35 + i);
    218     int16x8_t v187 = vaddq_s16(v185, v186);
    219     int16x8_t v188 = vld1q_s16(in + in_stride * 45 + i);
    220     int16x8_t v189 = vld1q_s16(in + in_stride * 43 + i);
    221     int16x8_t v190 = vaddq_s16(v188, v189);
    222     int16x8_t v191 = vaddq_s16(v187, v190);
    223     int16x8_t v192 = vld1q_s16(in + in_stride * 29 + i);
    224     int16x8_t v193 = vld1q_s16(in + in_stride * 27 + i);
    225     int16x8_t v194 = vaddq_s16(v192, v193);
    226     int16x8_t v195 = vld1q_s16(in + in_stride * 21 + i);
    227     int16x8_t v196 = vld1q_s16(in + in_stride * 19 + i);
    228     int16x8_t v197 = vaddq_s16(v195, v196);
    229     int16x8_t v198 = vaddq_s16(v194, v197);
    230     int16x8_t v199 = vaddq_s16(v191, v198);
    231     int16x8_t v200 = vld1q_s16(in + in_stride * 5 + i);
    232     int16x8_t v201 = vld1q_s16(in + in_stride * 3 + i);
    233     int16x8_t v202 = vaddq_s16(v200, v201);
    234     int16x8_t v203 = vld1q_s16(in + in_stride * 13 + i);
    235     int16x8_t v204 = vld1q_s16(in + in_stride * 11 + i);
    236     int16x8_t v205 = vaddq_s16(v203, v204);
    237     int16x8_t v206 = vaddq_s16(v202, v205);
    238     int16x8_t v207_tmp = vqrdmulhq_n_s16(v206, 13573);
    239     int16x8_t v207 = vaddq_s16(v207_tmp, v206);
    240     int16x8_t v208 = vaddq_s16(v199, v207);
    241     int16x8_t v209 = vqrdmulhq_n_s16(v208, 16705);
    242     int16x8_t v210 = vaddq_s16(v198, v206);
    243     int16x8_t v211 = vqrdmulhq_n_s16(v210, 25080);
    244     int16x8_t v212 = vqrdmulhq_n_s16(v210, 17734);
    245     int16x8_t v213 = vld1q_s16(in + in_stride * 53 + i);
    246     int16x8_t v214 = vld1q_s16(in + in_stride * 51 + i);
    247     int16x8_t v215 = vaddq_s16(v213, v214);
    248     int16x8_t v216 = vld1q_s16(in + in_stride * 61 + i);
    249     int16x8_t v217 = vld1q_s16(in + in_stride * 59 + i);
    250     int16x8_t v218 = vaddq_s16(v216, v217);
    251     int16x8_t v219 = vaddq_s16(v215, v218);
    252     int16x8_t v220 = vaddq_s16(v219, v191);
    253     int16x8_t v221 = vqrdmulhq_n_s16(v220, 17734);
    254     int16x8_t v222 = vaddq_s16(v212, v221);
    255     int16x8_t v223 = vaddq_s16(v211, v222);
    256     int16x8_t v224 = vqrdmulhq_n_s16(v223, 16705);
    257     int16x8_t v225 = vaddq_s16(v209, v224);
    258     int16x8_t v226 = vqrdmulhq_n_s16(v225, 16463);
    259     int16x8_t v227_tmp = vqrdmulhq_n_s16(v202, 13573);
    260     int16x8_t v227 = vaddq_s16(v227_tmp, v202);
    261     int16x8_t v228 = vaddq_s16(v187, v194);
    262     int16x8_t v229 = vaddq_s16(v227, v228);
    263     int16x8_t v230 = vaddq_s16(v215, v190);
    264     int16x8_t v231 = vqrdmulhq_n_s16(v230, 17734);
    265     int16x8_t v232 = vaddq_s16(v197, v205);
    266     int16x8_t v233_tmp = vqrdmulhq_n_s16(v232, 10045);
    267     int16x8_t v233 = vaddq_s16(v233_tmp, v232);
    268     int16x8_t v234 = vaddq_s16(v231, v233);
    269     int16x8_t v235 = vaddq_s16(v229, v234);
    270     int16x8_t v236 = vqrdmulhq_n_s16(v235, 16463);
    271     int16x8_t v237 = vaddq_s16(v226, v236);
    272     int16x8_t v238 = vaddq_s16(v184, v237);
    273     int16x8_t v239 = vaddq_s16(v201, v144);
    274     int16x8_t v240_tmp = vqrdmulhq_n_s16(v239, 13573);
    275     int16x8_t v240 = vaddq_s16(v240_tmp, v239);
    276     int16x8_t v241 = vaddq_s16(v186, v146);
    277     int16x8_t v242 = vaddq_s16(v147, v192);
    278     int16x8_t v243 = vaddq_s16(v241, v242);
    279     int16x8_t v244 = vaddq_s16(v240, v243);
    280     int16x8_t v245 = vaddq_s16(v196, v150);
    281     int16x8_t v246 = vaddq_s16(v151, v203);
    282     int16x8_t v247 = vaddq_s16(v245, v246);
    283     int16x8_t v248_tmp = vqrdmulhq_n_s16(v247, 10045);
    284     int16x8_t v248 = vaddq_s16(v248_tmp, v247);
    285     int16x8_t v249 = vaddq_s16(v155, v188);
    286     int16x8_t v250 = vaddq_s16(v214, v154);
    287     int16x8_t v251 = vaddq_s16(v249, v250);
    288     int16x8_t v252 = vqrdmulhq_n_s16(v251, 17734);
    289     int16x8_t v253 = vaddq_s16(v248, v252);
    290     int16x8_t v254 = vaddq_s16(v244, v253);
    291     int16x8_t v255 = vaddq_s16(v204, v161);
    292     int16x8_t v256 = vaddq_s16(v162, v200);
    293     int16x8_t v257 = vaddq_s16(v255, v256);
    294     int16x8_t v258_tmp = vqrdmulhq_n_s16(v257, 13573);
    295     int16x8_t v258 = vaddq_s16(v258_tmp, v257);
    296     int16x8_t v259 = vaddq_s16(v189, v165);
    297     int16x8_t v260 = vaddq_s16(v166, v185);
    298     int16x8_t v261 = vaddq_s16(v259, v260);
    299     int16x8_t v262 = vaddq_s16(v169, v195);
    300     int16x8_t v263 = vaddq_s16(v193, v168);
    301     int16x8_t v264 = vaddq_s16(v262, v263);
    302     int16x8_t v265 = vaddq_s16(v261, v264);
    303     int16x8_t v266 = vaddq_s16(v258, v265);
    304     int16x8_t v267 = vqrdmulhq_n_s16(v266, 16705);
    305     int16x8_t v268 = vaddq_s16(v264, v257);
    306     int16x8_t v269 = vqrdmulhq_n_s16(v268, 25080);
    307     int16x8_t v270 = vaddq_s16(v217, v176);
    308     int16x8_t v271 = vaddq_s16(v177, v213);
    309     int16x8_t v272 = vaddq_s16(v270, v271);
    310     int16x8_t v273 = vaddq_s16(v272, v261);
    311     int16x8_t v274 = vqrdmulhq_n_s16(v273, 17734);
    312     int16x8_t v275 = vqrdmulhq_n_s16(v268, 17734);
    313     int16x8_t v276 = vaddq_s16(v274, v275);
    314     int16x8_t v277 = vaddq_s16(v269, v276);
    315     int16x8_t v278 = vqrdmulhq_n_s16(v277, 16705);
    316     int16x8_t v279 = vaddq_s16(v267, v278);
    317     int16x8_t v280 = vaddq_s16(v254, v279);
    318     int16x8_t v281 = vqrdmulhq_n_s16(v280, 16404);
    319     int16x8_t v282 = vaddq_s16(v256, v239);
    320     int16x8_t v283_tmp = vqrdmulhq_n_s16(v282, 13573);
    321     int16x8_t v283 = vaddq_s16(v283_tmp, v282);
    322     int16x8_t v284 = vaddq_s16(v260, v241);
    323     int16x8_t v285 = vaddq_s16(v242, v263);
    324     int16x8_t v286 = vaddq_s16(v284, v285);
    325     int16x8_t v287 = vaddq_s16(v283, v286);
    326     int16x8_t v288 = vaddq_s16(v262, v245);
    327     int16x8_t v289 = vaddq_s16(v246, v255);
    328     int16x8_t v290 = vaddq_s16(v288, v289);
    329     int16x8_t v291 = vqrdmulhq_n_s16(v290, 25080);
    330     int16x8_t v292 = vqrdmulhq_n_s16(v290, 17734);
    331     int16x8_t v293 = vaddq_s16(v271, v250);
    332     int16x8_t v294 = vaddq_s16(v249, v259);
    333     int16x8_t v295 = vaddq_s16(v293, v294);
    334     int16x8_t v296 = vqrdmulhq_n_s16(v295, 17734);
    335     int16x8_t v297 = vaddq_s16(v292, v296);
    336     int16x8_t v298 = vaddq_s16(v291, v297);
    337     int16x8_t v299 = vaddq_s16(v287, v298);
    338     int16x8_t v300 = vqrdmulhq_n_s16(v299, 16463);
    339     int16x8_t v301 = vaddq_s16(v289, v282);
    340     int16x8_t v302 = vqrdmulhq_n_s16(v301, 23624);
    341     int16x8_t v303 = vaddq_s16(v294, v284);
    342     int16x8_t v304 = vqrdmulhq_n_s16(v303, 19705);
    343     int16x8_t v305 = vaddq_s16(v285, v288);
    344     int16x8_t v306 = vqrdmulhq_n_s16(v305, 19705);
    345     int16x8_t v307 = vaddq_s16(v304, v306);
    346     int16x8_t v308 = vqrdmulhq_n_s16(v307, 27779);
    347     int16x8_t v309 = vaddq_s16(v302, v308);
    348     int16x8_t v310 = vaddq_s16(v305, v301);
    349     int16x8_t v311 = vqrdmulhq_n_s16(v310, 25080);
    350     int16x8_t v312 = vqrdmulhq_n_s16(v310, 17734);
    351     int16x8_t v313 = vld1q_s16(in + in_stride * 63 + i);
    352     int16x8_t v314 = vaddq_s16(v313, v216);
    353     int16x8_t v315 = vaddq_s16(v314, v270);
    354     int16x8_t v316 = vaddq_s16(v315, v293);
    355     int16x8_t v317 = vqrdmulhq_n_s16(v316, 25746);
    356     int16x8_t v318 = vqrdmulhq_n_s16(v303, 25746);
    357     int16x8_t v319 = vaddq_s16(v317, v318);
    358     int16x8_t v320 = vqrdmulhq_n_s16(v319, 22571);
    359     int16x8_t v321 = vaddq_s16(v312, v320);
    360     int16x8_t v322 = vaddq_s16(v311, v321);
    361     int16x8_t v323 = vqrdmulhq_n_s16(v322, 16705);
    362     int16x8_t v324 = vaddq_s16(v309, v323);
    363     int16x8_t v325 = vqrdmulhq_n_s16(v324, 16463);
    364     int16x8_t v326 = vaddq_s16(v300, v325);
    365     int16x8_t v327 = vqrdmulhq_n_s16(v326, 16404);
    366     int16x8_t v328 = vaddq_s16(v281, v327);
    367     int16x8_t v329 = vaddq_s16(v238, v328);
    368     int16x8_t v330 = vqrdmulhq_n_s16(v329, 16389);
    369     int16x8_t v331 = vaddq_s16(v143, v330);
    370     int16x8_t v332 = vsubq_s16(v82, v89);
    371     int16x8_t v333 = vqrdmulhq_n_s16(v332, 19705);
    372     int16x8_t v334 = vqrdmulhq_n_s16(v92, 13573);
    373     int16x8_t v335 = vsubq_s16(v334, v97);
    374     int16x8_t v336 = vqrdmulhq_n_s16(v335, 25746);
    375     int16x8_t v337 = vaddq_s16(v333, v336);
    376     int16x8_t v338 = vsubq_s16(v63, v66);
    377     int16x8_t v339 = vqrdmulhq_n_s16(v70, 17734);
    378     int16x8_t v340_tmp = vqrdmulhq_n_s16(v74, 10045);
    379     int16x8_t v340 = vaddq_s16(v340_tmp, v74);
    380     int16x8_t v341 = vsubq_s16(v339, v340);
    381     int16x8_t v342 = vaddq_s16(v338, v341);
    382     int16x8_t v343 = vaddq_s16(v337, v342);
    383     int16x8_t v344 = vsubq_s16(v130, v131);
    384     int16x8_t v345 = vqrdmulhq_n_s16(v133, 13573);
    385     int16x8_t v346 = vsubq_s16(v345, v135);
    386     int16x8_t v347_tmp = vqrdmulhq_n_s16(v346, 10045);
    387     int16x8_t v347 = vaddq_s16(v347_tmp, v346);
    388     int16x8_t v348 = vaddq_s16(v344, v347);
    389     int16x8_t v349 = vqrdmulhq_n_s16(v348, 17121);
    390     int16x8_t v350 = vqrdmulhq_n_s16(v105, 27867);
    391     int16x8_t v351 = vqrdmulhq_n_s16(v113, 19705);
    392     int16x8_t v352 = vsubq_s16(v350, v351);
    393     int16x8_t v353 = vqrdmulhq_n_s16(v116, 13573);
    394     int16x8_t v354 = vsubq_s16(v353, v123);
    395     int16x8_t v355 = vqrdmulhq_n_s16(v354, 25746);
    396     int16x8_t v356 = vaddq_s16(v352, v355);
    397     int16x8_t v357 = vqrdmulhq_n_s16(v356, 17121);
    398     int16x8_t v358 = vaddq_s16(v349, v357);
    399     int16x8_t v359 = vaddq_s16(v343, v358);
    400     int16x8_t v360 = vqrdmulhq_n_s16(v359, 16563);
    401     int16x8_t v361 = vsubq_s16(v27, v30);
    402     int16x8_t v362 = vqrdmulhq_n_s16(v34, 17734);
    403     int16x8_t v363_tmp = vqrdmulhq_n_s16(v38, 10045);
    404     int16x8_t v363 = vaddq_s16(v363_tmp, v38);
    405     int16x8_t v364 = vsubq_s16(v362, v363);
    406     int16x8_t v365 = vaddq_s16(v361, v364);
    407     int16x8_t v366 = vsubq_s16(v44, v47);
    408     int16x8_t v367 = vqrdmulhq_n_s16(v366, 19705);
    409     int16x8_t v368 = vqrdmulhq_n_s16(v50, 13573);
    410     int16x8_t v369 = vsubq_s16(v368, v54);
    411     int16x8_t v370 = vqrdmulhq_n_s16(v369, 25746);
    412     int16x8_t v371 = vaddq_s16(v367, v370);
    413     int16x8_t v372 = vaddq_s16(v365, v371);
    414     int16x8_t v373 = vqrdmulhq_n_s16(v372, 17121);
    415     int16x8_t v374 = vsubq_s16(v0, v1);
    416     int16x8_t v375 = vsubq_s16(v4, v6);
    417     int16x8_t v376_tmp = vqrdmulhq_n_s16(v375, 10045);
    418     int16x8_t v376 = vaddq_s16(v376_tmp, v375);
    419     int16x8_t v377 = vaddq_s16(v374, v376);
    420     int16x8_t v378 = vsubq_s16(v11, v14);
    421     int16x8_t v379 = vqrdmulhq_n_s16(v18, 17734);
    422     int16x8_t v380_tmp = vqrdmulhq_n_s16(v17, 10045);
    423     int16x8_t v380 = vaddq_s16(v380_tmp, v17);
    424     int16x8_t v381 = vsubq_s16(v379, v380);
    425     int16x8_t v382 = vaddq_s16(v378, v381);
    426     int16x8_t v383 = vqrdmulhq_n_s16(v382, 19705);
    427     int16x8_t v384 = vaddq_s16(v377, v383);
    428     int16x8_t v385 = vaddq_s16(v373, v384);
    429     int16x8_t v386 = vaddq_s16(v360, v385);
    430     int16x8_t v387 = vsubq_s16(v145, v148);
    431     int16x8_t v388 = vqrdmulhq_n_s16(v152, 17734);
    432     int16x8_t v389_tmp = vqrdmulhq_n_s16(v156, 10045);
    433     int16x8_t v389 = vaddq_s16(v389_tmp, v156);
    434     int16x8_t v390 = vsubq_s16(v388, v389);
    435     int16x8_t v391 = vaddq_s16(v387, v390);
    436     int16x8_t v392 = vsubq_s16(v164, v171);
    437     int16x8_t v393 = vqrdmulhq_n_s16(v392, 19705);
    438     int16x8_t v394 = vqrdmulhq_n_s16(v174, 13573);
    439     int16x8_t v395 = vsubq_s16(v394, v179);
    440     int16x8_t v396 = vqrdmulhq_n_s16(v395, 25746);
    441     int16x8_t v397 = vaddq_s16(v393, v396);
    442     int16x8_t v398 = vaddq_s16(v391, v397);
    443     int16x8_t v399 = vsubq_s16(v227, v228);
    444     int16x8_t v400 = vqrdmulhq_n_s16(v232, 13573);
    445     int16x8_t v401 = vsubq_s16(v400, v230);
    446     int16x8_t v402_tmp = vqrdmulhq_n_s16(v401, 10045);
    447     int16x8_t v402 = vaddq_s16(v402_tmp, v401);
    448     int16x8_t v403 = vaddq_s16(v399, v402);
    449     int16x8_t v404 = vqrdmulhq_n_s16(v403, 17121);
    450     int16x8_t v405 = vqrdmulhq_n_s16(v206, 27867);
    451     int16x8_t v406 = vqrdmulhq_n_s16(v199, 19705);
    452     int16x8_t v407 = vsubq_s16(v405, v406);
    453     int16x8_t v408 = vqrdmulhq_n_s16(v210, 13573);
    454     int16x8_t v409 = vsubq_s16(v408, v220);
    455     int16x8_t v410 = vqrdmulhq_n_s16(v409, 25746);
    456     int16x8_t v411 = vaddq_s16(v407, v410);
    457     int16x8_t v412 = vqrdmulhq_n_s16(v411, 17121);
    458     int16x8_t v413 = vaddq_s16(v404, v412);
    459     int16x8_t v414 = vaddq_s16(v398, v413);
    460     int16x8_t v415 = vsubq_s16(v240, v243);
    461     int16x8_t v416 = vqrdmulhq_n_s16(v247, 13573);
    462     int16x8_t v417 = vsubq_s16(v416, v251);
    463     int16x8_t v418_tmp = vqrdmulhq_n_s16(v417, 10045);
    464     int16x8_t v418 = vaddq_s16(v418_tmp, v417);
    465     int16x8_t v419 = vaddq_s16(v415, v418);
    466     int16x8_t v420 = vqrdmulhq_n_s16(v257, 27867);
    467     int16x8_t v421 = vqrdmulhq_n_s16(v265, 19705);
    468     int16x8_t v422 = vsubq_s16(v420, v421);
    469     int16x8_t v423 = vqrdmulhq_n_s16(v268, 13573);
    470     int16x8_t v424 = vsubq_s16(v423, v273);
    471     int16x8_t v425 = vqrdmulhq_n_s16(v424, 25746);
    472     int16x8_t v426 = vaddq_s16(v422, v425);
    473     int16x8_t v427 = vaddq_s16(v419, v426);
    474     int16x8_t v428 = vqrdmulhq_n_s16(v427, 16563);
    475     int16x8_t v429 = vqrdmulhq_n_s16(v301, 27867);
    476     int16x8_t v430 = vsubq_s16(v429, v307);
    477     int16x8_t v431 = vqrdmulhq_n_s16(v310, 10664);
    478     int16x8_t v432 = vsubq_s16(v431, v319);
    479     int16x8_t v433 = vaddq_s16(v430, v432);
    480     int16x8_t v434 = vqrdmulhq_n_s16(v433, 17121);
    481     int16x8_t v435 = vsubq_s16(v283, v286);
    482     int16x8_t v436 = vqrdmulhq_n_s16(v290, 13573);
    483     int16x8_t v437 = vsubq_s16(v436, v295);
    484     int16x8_t v438_tmp = vqrdmulhq_n_s16(v437, 10045);
    485     int16x8_t v438 = vaddq_s16(v438_tmp, v437);
    486     int16x8_t v439 = vaddq_s16(v435, v438);
    487     int16x8_t v440 = vqrdmulhq_n_s16(v439, 17121);
    488     int16x8_t v441 = vaddq_s16(v434, v440);
    489     int16x8_t v442 = vqrdmulhq_n_s16(v441, 16563);
    490     int16x8_t v443 = vaddq_s16(v428, v442);
    491     int16x8_t v444 = vaddq_s16(v414, v443);
    492     int16x8_t v445 = vqrdmulhq_n_s16(v444, 16429);
    493     int16x8_t v446 = vaddq_s16(v386, v445);
    494     int16x8_t v447 = vsubq_s16(v374, v376);
    495     int16x8_t v448 = vsubq_s16(v378, v381);
    496     int16x8_t v449 = vqrdmulhq_n_s16(v448, 29490);
    497     int16x8_t v450 = vaddq_s16(v447, v449);
    498     int16x8_t v451 = vsubq_s16(v361, v364);
    499     int16x8_t v452 = vqrdmulhq_n_s16(v366, 29490);
    500     int16x8_t v453_tmp = vqrdmulhq_n_s16(v369, 5763);
    501     int16x8_t v453 = vaddq_s16(v453_tmp, v369);
    502     int16x8_t v454 = vsubq_s16(v452, v453);
    503     int16x8_t v455 = vaddq_s16(v451, v454);
    504     int16x8_t v456 = vqrdmulhq_n_s16(v455, 18578);
    505     int16x8_t v457 = vaddq_s16(v450, v456);
    506     int16x8_t v458 = vsubq_s16(v338, v341);
    507     int16x8_t v459 = vqrdmulhq_n_s16(v332, 29490);
    508     int16x8_t v460_tmp = vqrdmulhq_n_s16(v335, 5763);
    509     int16x8_t v460 = vaddq_s16(v460_tmp, v335);
    510     int16x8_t v461 = vsubq_s16(v459, v460);
    511     int16x8_t v462 = vaddq_s16(v458, v461);
    512     int16x8_t v463 = vqrdmulhq_n_s16(v352, 27803);
    513     int16x8_t v464 = vqrdmulhq_n_s16(v354, 21845);
    514     int16x8_t v465 = vsubq_s16(v463, v464);
    515     int16x8_t v466 = vsubq_s16(v344, v347);
    516     int16x8_t v467 = vqrdmulhq_n_s16(v466, 18578);
    517     int16x8_t v468 = vaddq_s16(v465, v467);
    518     int16x8_t v469 = vaddq_s16(v462, v468);
    519     int16x8_t v470 = vqrdmulhq_n_s16(v469, 16890);
    520     int16x8_t v471 = vaddq_s16(v457, v470);
    521     int16x8_t v472 = vsubq_s16(v415, v418);
    522     int16x8_t v473_tmp = vqrdmulhq_n_s16(v422, 16273);
    523     int16x8_t v473 = vaddq_s16(v473_tmp, v422);
    524     int16x8_t v474_tmp = vqrdmulhq_n_s16(v424, 5763);
    525     int16x8_t v474 = vaddq_s16(v474_tmp, v424);
    526     int16x8_t v475 = vsubq_s16(v473, v474);
    527     int16x8_t v476 = vaddq_s16(v472, v475);
    528     int16x8_t v477 = vqrdmulhq_n_s16(v476, 16890);
    529     int16x8_t v478 = vqrdmulhq_n_s16(v435, 20261);
    530     int16x8_t v479 = vqrdmulhq_n_s16(v437, 26472);
    531     int16x8_t v480 = vsubq_s16(v478, v479);
    532     int16x8_t v481 = vqrdmulhq_n_s16(v480, 30046);
    533     int16x8_t v482 = vqrdmulhq_n_s16(v430, 30322);
    534     int16x8_t v483 = vqrdmulhq_n_s16(v432, 30322);
    535     int16x8_t v484 = vsubq_s16(v482, v483);
    536     int16x8_t v485 = vqrdmulhq_n_s16(v484, 30046);
    537     int16x8_t v486 = vaddq_s16(v481, v485);
    538     int16x8_t v487 = vqrdmulhq_n_s16(v486, 16890);
    539     int16x8_t v488 = vaddq_s16(v477, v487);
    540     int16x8_t v489 = vsubq_s16(v387, v390);
    541     int16x8_t v490 = vqrdmulhq_n_s16(v392, 29490);
    542     int16x8_t v491_tmp = vqrdmulhq_n_s16(v395, 5763);
    543     int16x8_t v491 = vaddq_s16(v491_tmp, v395);
    544     int16x8_t v492 = vsubq_s16(v490, v491);
    545     int16x8_t v493 = vaddq_s16(v489, v492);
    546     int16x8_t v494 = vsubq_s16(v399, v402);
    547     int16x8_t v495 = vqrdmulhq_n_s16(v494, 18578);
    548     int16x8_t v496 = vqrdmulhq_n_s16(v407, 27803);
    549     int16x8_t v497 = vqrdmulhq_n_s16(v409, 21845);
    550     int16x8_t v498 = vsubq_s16(v496, v497);
    551     int16x8_t v499 = vaddq_s16(v495, v498);
    552     int16x8_t v500 = vaddq_s16(v493, v499);
    553     int16x8_t v501 = vaddq_s16(v488, v500);
    554     int16x8_t v502 = vqrdmulhq_n_s16(v501, 16508);
    555     int16x8_t v503 = vaddq_s16(v471, v502);
    556     int16x8_t v504 = vsubq_s16(v2, v8);
    557     int16x8_t v505 = vsubq_s16(v15, v22);
    558     int16x8_t v506_tmp = vqrdmulhq_n_s16(v505, 18446);
    559     int16x8_t v506 = vmlaq_n_s16(v506_tmp, v505, 2);
    560     int16x8_t v507 = vaddq_s16(v504, v506);
    561     int16x8_t v508 = vsubq_s16(v31, v41);
    562     int16x8_t v509 = vsubq_s16(v48, v56);
    563     int16x8_t v510_tmp = vqrdmulhq_n_s16(v509, 18446);
    564     int16x8_t v510 = vmlaq_n_s16(v510_tmp, v509, 2);
    565     int16x8_t v511 = vaddq_s16(v508, v510);
    566     int16x8_t v512 = vqrdmulhq_n_s16(v511, 21195);
    567     int16x8_t v513 = vaddq_s16(v507, v512);
    568     int16x8_t v514 = vsubq_s16(v67, v77);
    569     int16x8_t v515 = vsubq_s16(v90, v99);
    570     int16x8_t v516_tmp = vqrdmulhq_n_s16(v515, 18446);
    571     int16x8_t v516 = vmlaq_n_s16(v516_tmp, v515, 2);
    572     int16x8_t v517 = vaddq_s16(v514, v516);
    573     int16x8_t v518 = vsubq_s16(v114, v126);
    574     int16x8_t v519_tmp = vqrdmulhq_n_s16(v518, 18446);
    575     int16x8_t v519 = vmlaq_n_s16(v519_tmp, v518, 2);
    576     int16x8_t v520 = vsubq_s16(v132, v137);
    577     int16x8_t v521 = vaddq_s16(v519, v520);
    578     int16x8_t v522 = vqrdmulhq_n_s16(v521, 21195);
    579     int16x8_t v523 = vaddq_s16(v517, v522);
    580     int16x8_t v524 = vqrdmulhq_n_s16(v523, 17401);
    581     int16x8_t v525 = vaddq_s16(v513, v524);
    582     int16x8_t v526 = vsubq_s16(v172, v181);
    583     int16x8_t v527_tmp = vqrdmulhq_n_s16(v526, 18446);
    584     int16x8_t v527 = vmlaq_n_s16(v527_tmp, v526, 2);
    585     int16x8_t v528 = vsubq_s16(v149, v159);
    586     int16x8_t v529 = vaddq_s16(v527, v528);
    587     int16x8_t v530 = vsubq_s16(v229, v234);
    588     int16x8_t v531 = vsubq_s16(v208, v223);
    589     int16x8_t v532_tmp = vqrdmulhq_n_s16(v531, 18446);
    590     int16x8_t v532 = vmlaq_n_s16(v532_tmp, v531, 2);
    591     int16x8_t v533 = vaddq_s16(v530, v532);
    592     int16x8_t v534 = vqrdmulhq_n_s16(v533, 21195);
    593     int16x8_t v535 = vaddq_s16(v529, v534);
    594     int16x8_t v536 = vsubq_s16(v244, v253);
    595     int16x8_t v537 = vsubq_s16(v266, v277);
    596     int16x8_t v538_tmp = vqrdmulhq_n_s16(v537, 18446);
    597     int16x8_t v538 = vmlaq_n_s16(v538_tmp, v537, 2);
    598     int16x8_t v539 = vaddq_s16(v536, v538);
    599     int16x8_t v540 = vqrdmulhq_n_s16(v539, 17401);
    600     int16x8_t v541 = vqrdmulhq_n_s16(v287, 25826);
    601     int16x8_t v542 = vqrdmulhq_n_s16(v298, 25826);
    602     int16x8_t v543 = vsubq_s16(v541, v542);
    603     int16x8_t v544 = vqrdmulhq_n_s16(v543, 14281);
    604     int16x8_t v545_tmp = vqrdmulhq_n_s16(v309, 31509);
    605     int16x8_t v545 = vaddq_s16(v545_tmp, v309);
    606     int16x8_t v546 = vsubq_s16(v545, v322);
    607     int16x8_t v547 = vqrdmulhq_n_s16(v546, 28847);
    608     int16x8_t v548 = vaddq_s16(v544, v547);
    609     int16x8_t v549 = vaddq_s16(v540, v548);
    610     int16x8_t v550 = vaddq_s16(v535, v549);
    611     int16x8_t v551 = vqrdmulhq_n_s16(v550, 16629);
    612     int16x8_t v552 = vaddq_s16(v525, v551);
    613     int16x8_t v553 = vsubq_s16(v504, v506);
    614     int16x8_t v554 = vsubq_s16(v508, v510);
    615     int16x8_t v555 = vqrdmulhq_n_s16(v554, 25826);
    616     int16x8_t v556 = vaddq_s16(v553, v555);
    617     int16x8_t v557 = vsubq_s16(v514, v516);
    618     int16x8_t v558 = vsubq_s16(v520, v519);
    619     int16x8_t v559 = vqrdmulhq_n_s16(v558, 25826);
    620     int16x8_t v560 = vaddq_s16(v557, v559);
    621     int16x8_t v561 = vqrdmulhq_n_s16(v560, 18124);
    622     int16x8_t v562 = vaddq_s16(v556, v561);
    623     int16x8_t v563 = vsubq_s16(v528, v527);
    624     int16x8_t v564 = vsubq_s16(v530, v532);
    625     int16x8_t v565 = vqrdmulhq_n_s16(v564, 25826);
    626     int16x8_t v566 = vaddq_s16(v563, v565);
    627     int16x8_t v567 = vsubq_s16(v536, v538);
    628     int16x8_t v568 = vqrdmulhq_n_s16(v567, 18124);
    629     int16x8_t v569_tmp = vqrdmulhq_n_s16(v546, 654);
    630     int16x8_t v569 = vmlaq_n_s16(v569_tmp, v546, 2);
    631     int16x8_t v570 = vsubq_s16(v543, v569);
    632     int16x8_t v571 = vqrdmulhq_n_s16(v570, 18124);
    633     int16x8_t v572 = vaddq_s16(v568, v571);
    634     int16x8_t v573 = vaddq_s16(v566, v572);
    635     int16x8_t v574 = vqrdmulhq_n_s16(v573, 16792);
    636     int16x8_t v575 = vaddq_s16(v562, v574);
    637     int16x8_t v576 = vsubq_s16(v458, v461);
    638     int16x8_t v577_tmp = vqrdmulhq_n_s16(v465, 25030);
    639     int16x8_t v577 = vaddq_s16(v577_tmp, v465);
    640     int16x8_t v578 = vsubq_s16(v466, v577);
    641     int16x8_t v579_tmp = vqrdmulhq_n_s16(v578, 1988);
    642     int16x8_t v579 = vaddq_s16(v579_tmp, v578);
    643     int16x8_t v580 = vaddq_s16(v576, v579);
    644     int16x8_t v581 = vqrdmulhq_n_s16(v580, 19102);
    645     int16x8_t v582 = vsubq_s16(v447, v449);
    646     int16x8_t v583 = vsubq_s16(v451, v454);
    647     int16x8_t v584_tmp = vqrdmulhq_n_s16(v583, 1988);
    648     int16x8_t v584 = vaddq_s16(v584_tmp, v583);
    649     int16x8_t v585 = vaddq_s16(v582, v584);
    650     int16x8_t v586 = vaddq_s16(v581, v585);
    651     int16x8_t v587 = vsubq_s16(v489, v492);
    652     int16x8_t v588_tmp = vqrdmulhq_n_s16(v498, 25030);
    653     int16x8_t v588 = vaddq_s16(v588_tmp, v498);
    654     int16x8_t v589 = vsubq_s16(v494, v588);
    655     int16x8_t v590_tmp = vqrdmulhq_n_s16(v589, 1988);
    656     int16x8_t v590 = vaddq_s16(v590_tmp, v589);
    657     int16x8_t v591 = vaddq_s16(v587, v590);
    658     int16x8_t v592 = vsubq_s16(v472, v475);
    659     int16x8_t v593 = vqrdmulhq_n_s16(v592, 19102);
    660     int16x8_t v594 = vsubq_s16(v480, v484);
    661     int16x8_t v595 = vaddq_s16(v593, v594);
    662     int16x8_t v596 = vaddq_s16(v591, v595);
    663     int16x8_t v597 = vqrdmulhq_n_s16(v596, 17000);
    664     int16x8_t v598 = vaddq_s16(v586, v597);
    665     int16x8_t v599 = vsubq_s16(v365, v371);
    666     int16x8_t v600_tmp = vqrdmulhq_n_s16(v599, 23673);
    667     int16x8_t v600 = vaddq_s16(v600_tmp, v599);
    668     int16x8_t v601 = vsubq_s16(v377, v383);
    669     int16x8_t v602 = vaddq_s16(v600, v601);
    670     int16x8_t v603 = vsubq_s16(v348, v356);
    671     int16x8_t v604_tmp = vqrdmulhq_n_s16(v603, 23673);
    672     int16x8_t v604 = vaddq_s16(v604_tmp, v603);
    673     int16x8_t v605 = vsubq_s16(v342, v337);
    674     int16x8_t v606 = vaddq_s16(v604, v605);
    675     int16x8_t v607 = vqrdmulhq_n_s16(v606, 20398);
    676     int16x8_t v608 = vaddq_s16(v602, v607);
    677     int16x8_t v609 = vsubq_s16(v391, v397);
    678     int16x8_t v610 = vsubq_s16(v403, v411);
    679     int16x8_t v611_tmp = vqrdmulhq_n_s16(v610, 23673);
    680     int16x8_t v611 = vaddq_s16(v611_tmp, v610);
    681     int16x8_t v612 = vaddq_s16(v609, v611);
    682     int16x8_t v613 = vsubq_s16(v419, v426);
    683     int16x8_t v614 = vqrdmulhq_n_s16(v613, 20398);
    684     int16x8_t v615 = vsubq_s16(v439, v433);
    685     int16x8_t v616_tmp = vqrdmulhq_n_s16(v615, 2367);
    686     int16x8_t v616 = vaddq_s16(v616_tmp, v615);
    687     int16x8_t v617 = vaddq_s16(v614, v616);
    688     int16x8_t v618 = vaddq_s16(v612, v617);
    689     int16x8_t v619 = vqrdmulhq_n_s16(v618, 17255);
    690     int16x8_t v620 = vaddq_s16(v608, v619);
    691     int16x8_t v621 = vsubq_s16(v160, v183);
    692     int16x8_t v622 = vsubq_s16(v235, v225);
    693     int16x8_t v623_tmp = vqrdmulhq_n_s16(v622, 3314);
    694     int16x8_t v623 = vmlaq_n_s16(v623_tmp, v622, 5);
    695     int16x8_t v624 = vaddq_s16(v621, v623);
    696     int16x8_t v625 = vsubq_s16(v254, v279);
    697     int16x8_t v626 = vsubq_s16(v299, v324);
    698     int16x8_t v627_tmp = vqrdmulhq_n_s16(v626, 3314);
    699     int16x8_t v627 = vmlaq_n_s16(v627_tmp, v626, 5);
    700     int16x8_t v628 = vaddq_s16(v625, v627);
    701     int16x8_t v629 = vqrdmulhq_n_s16(v628, 22112);
    702     int16x8_t v630 = vaddq_s16(v624, v629);
    703     int16x8_t v631 = vqrdmulhq_n_s16(v630, 17561);
    704     int16x8_t v632 = vsubq_s16(v9, v24);
    705     int16x8_t v633 = vsubq_s16(v42, v58);
    706     int16x8_t v634_tmp = vqrdmulhq_n_s16(v633, 3314);
    707     int16x8_t v634 = vmlaq_n_s16(v634_tmp, v633, 5);
    708     int16x8_t v635 = vaddq_s16(v632, v634);
    709     int16x8_t v636 = vsubq_s16(v78, v101);
    710     int16x8_t v637 = vsubq_s16(v138, v128);
    711     int16x8_t v638_tmp = vqrdmulhq_n_s16(v637, 3314);
    712     int16x8_t v638 = vmlaq_n_s16(v638_tmp, v637, 5);
    713     int16x8_t v639 = vaddq_s16(v636, v638);
    714     int16x8_t v640 = vqrdmulhq_n_s16(v639, 22112);
    715     int16x8_t v641 = vaddq_s16(v635, v640);
    716     int16x8_t v642 = vaddq_s16(v631, v641);
    717     int16x8_t v643 = vsubq_s16(v632, v634);
    718     int16x8_t v644 = vsubq_s16(v636, v638);
    719     int16x8_t v645 = vqrdmulhq_n_s16(v644, 24397);
    720     int16x8_t v646 = vaddq_s16(v643, v645);
    721     int16x8_t v647 = vsubq_s16(v621, v623);
    722     int16x8_t v648 = vsubq_s16(v625, v627);
    723     int16x8_t v649 = vqrdmulhq_n_s16(v648, 24397);
    724     int16x8_t v650 = vaddq_s16(v647, v649);
    725     int16x8_t v651 = vqrdmulhq_n_s16(v650, 17921);
    726     int16x8_t v652 = vaddq_s16(v646, v651);
    727     int16x8_t v653 = vsubq_s16(v601, v600);
    728     int16x8_t v654 = vsubq_s16(v605, v604);
    729     int16x8_t v655 = vqrdmulhq_n_s16(v654, 27504);
    730     int16x8_t v656 = vaddq_s16(v653, v655);
    731     int16x8_t v657 = vsubq_s16(v609, v611);
    732     int16x8_t v658 = vqrdmulhq_n_s16(v613, 27504);
    733     int16x8_t v659_tmp = vqrdmulhq_n_s16(v615, 14606);
    734     int16x8_t v659 = vaddq_s16(v659_tmp, v615);
    735     int16x8_t v660 = vsubq_s16(v658, v659);
    736     int16x8_t v661 = vaddq_s16(v657, v660);
    737     int16x8_t v662 = vqrdmulhq_n_s16(v661, 18343);
    738     int16x8_t v663 = vaddq_s16(v656, v662);
    739     int16x8_t v664 = vsubq_s16(v582, v584);
    740     int16x8_t v665 = vsubq_s16(v576, v579);
    741     int16x8_t v666 = vqrdmulhq_n_s16(v665, 31869);
    742     int16x8_t v667 = vaddq_s16(v664, v666);
    743     int16x8_t v668 = vsubq_s16(v587, v590);
    744     int16x8_t v669_tmp = vqrdmulhq_n_s16(v594, 23444);
    745     int16x8_t v669 = vaddq_s16(v669_tmp, v594);
    746     int16x8_t v670 = vsubq_s16(v592, v669);
    747     int16x8_t v671 = vqrdmulhq_n_s16(v670, 31869);
    748     int16x8_t v672 = vaddq_s16(v668, v671);
    749     int16x8_t v673 = vqrdmulhq_n_s16(v672, 18830);
    750     int16x8_t v674 = vaddq_s16(v667, v673);
    751     int16x8_t v675 = vsubq_s16(v553, v555);
    752     int16x8_t v676 = vsubq_s16(v557, v559);
    753     int16x8_t v677_tmp = vqrdmulhq_n_s16(v676, 5552);
    754     int16x8_t v677 = vaddq_s16(v677_tmp, v676);
    755     int16x8_t v678 = vaddq_s16(v675, v677);
    756     int16x8_t v679 = vsubq_s16(v563, v565);
    757     int16x8_t v680 = vsubq_s16(v567, v570);
    758     int16x8_t v681_tmp = vqrdmulhq_n_s16(v680, 5552);
    759     int16x8_t v681 = vaddq_s16(v681_tmp, v680);
    760     int16x8_t v682 = vaddq_s16(v679, v681);
    761     int16x8_t v683 = vqrdmulhq_n_s16(v682, 19393);
    762     int16x8_t v684 = vaddq_s16(v678, v683);
    763     int16x8_t v685 = vsubq_s16(v507, v512);
    764     int16x8_t v686 = vsubq_s16(v517, v522);
    765     int16x8_t v687_tmp = vqrdmulhq_n_s16(v686, 15865);
    766     int16x8_t v687 = vaddq_s16(v687_tmp, v686);
    767     int16x8_t v688 = vaddq_s16(v685, v687);
    768     int16x8_t v689 = vsubq_s16(v529, v534);
    769     int16x8_t v690_tmp = vqrdmulhq_n_s16(v548, 28937);
    770     int16x8_t v690 = vaddq_s16(v690_tmp, v548);
    771     int16x8_t v691 = vsubq_s16(v539, v690);
    772     int16x8_t v692_tmp = vqrdmulhq_n_s16(v691, 15865);
    773     int16x8_t v692 = vaddq_s16(v692_tmp, v691);
    774     int16x8_t v693 = vaddq_s16(v689, v692);
    775     int16x8_t v694 = vqrdmulhq_n_s16(v693, 20040);
    776     int16x8_t v695 = vaddq_s16(v688, v694);
    777     int16x8_t v696 = vsubq_s16(v476, v486);
    778     int16x8_t v697_tmp = vqrdmulhq_n_s16(v696, 1893);
    779     int16x8_t v697 = vmlaq_n_s16(v697_tmp, v696, 2);
    780     int16x8_t v698 = vsubq_s16(v493, v499);
    781     int16x8_t v699 = vaddq_s16(v697, v698);
    782     int16x8_t v700 = vqrdmulhq_n_s16(v699, 20783);
    783     int16x8_t v701 = vsubq_s16(v450, v456);
    784     int16x8_t v702 = vsubq_s16(v462, v468);
    785     int16x8_t v703_tmp = vqrdmulhq_n_s16(v702, 1893);
    786     int16x8_t v703 = vmlaq_n_s16(v703_tmp, v702, 2);
    787     int16x8_t v704 = vaddq_s16(v701, v703);
    788     int16x8_t v705 = vaddq_s16(v700, v704);
    789     int16x8_t v706 = vsubq_s16(v384, v373);
    790     int16x8_t v707 = vsubq_s16(v343, v358);
    791     int16x8_t v708_tmp = vqrdmulhq_n_s16(v707, 13357);
    792     int16x8_t v708 = vmlaq_n_s16(v708_tmp, v707, 3);
    793     int16x8_t v709 = vaddq_s16(v706, v708);
    794     int16x8_t v710 = vsubq_s16(v398, v413);
    795     int16x8_t v711 = vsubq_s16(v427, v441);
    796     int16x8_t v712_tmp = vqrdmulhq_n_s16(v711, 13357);
    797     int16x8_t v712 = vmlaq_n_s16(v712_tmp, v711, 3);
    798     int16x8_t v713 = vaddq_s16(v710, v712);
    799     int16x8_t v714 = vqrdmulhq_n_s16(v713, 21637);
    800     int16x8_t v715 = vaddq_s16(v709, v714);
    801     int16x8_t v716 = vsubq_s16(v25, v60);
    802     int16x8_t v717 = vsubq_s16(v102, v140);
    803     int16x8_t v718_tmp = vqrdmulhq_n_s16(v717, 6226);
    804     int16x8_t v718 = vmlaq_n_s16(v718_tmp, v717, 10);
    805     int16x8_t v719 = vaddq_s16(v716, v718);
    806     int16x8_t v720 = vsubq_s16(v280, v326);
    807     int16x8_t v721_tmp = vqrdmulhq_n_s16(v720, 6226);
    808     int16x8_t v721 = vmlaq_n_s16(v721_tmp, v720, 10);
    809     int16x8_t v722 = vsubq_s16(v184, v237);
    810     int16x8_t v723 = vaddq_s16(v721, v722);
    811     int16x8_t v724 = vqrdmulhq_n_s16(v723, 22622);
    812     int16x8_t v725 = vaddq_s16(v719, v724);
    813     int16x8_t v726 = vsubq_s16(v716, v718);
    814     int16x8_t v727 = vsubq_s16(v722, v721);
    815     int16x8_t v728 = vqrdmulhq_n_s16(v727, 23761);
    816     int16x8_t v729 = vaddq_s16(v726, v728);
    817     int16x8_t v730 = vsubq_s16(v706, v708);
    818     int16x8_t v731 = vsubq_s16(v710, v712);
    819     int16x8_t v732 = vqrdmulhq_n_s16(v731, 25084);
    820     int16x8_t v733 = vaddq_s16(v730, v732);
    821     int16x8_t v734 = vsubq_s16(v701, v703);
    822     int16x8_t v735 = vsubq_s16(v698, v697);
    823     int16x8_t v736 = vqrdmulhq_n_s16(v735, 26631);
    824     int16x8_t v737 = vaddq_s16(v734, v736);
    825     int16x8_t v738 = vsubq_s16(v685, v687);
    826     int16x8_t v739 = vsubq_s16(v689, v692);
    827     int16x8_t v740 = vqrdmulhq_n_s16(v739, 28454);
    828     int16x8_t v741 = vaddq_s16(v738, v740);
    829     int16x8_t v742 = vsubq_s16(v675, v677);
    830     int16x8_t v743 = vsubq_s16(v679, v681);
    831     int16x8_t v744 = vqrdmulhq_n_s16(v743, 30624);
    832     int16x8_t v745 = vaddq_s16(v742, v744);
    833     int16x8_t v746 = vsubq_s16(v664, v666);
    834     int16x8_t v747 = vsubq_s16(v668, v671);
    835     int16x8_t v748_tmp = vqrdmulhq_n_s16(v747, 472);
    836     int16x8_t v748 = vaddq_s16(v748_tmp, v747);
    837     int16x8_t v749 = vaddq_s16(v746, v748);
    838     int16x8_t v750 = vsubq_s16(v653, v655);
    839     int16x8_t v751 = vsubq_s16(v657, v660);
    840     int16x8_t v752_tmp = vqrdmulhq_n_s16(v751, 3672);
    841     int16x8_t v752 = vaddq_s16(v752_tmp, v751);
    842     int16x8_t v753 = vaddq_s16(v750, v752);
    843     int16x8_t v754 = vsubq_s16(v643, v645);
    844     int16x8_t v755 = vsubq_s16(v647, v649);
    845     int16x8_t v756_tmp = vqrdmulhq_n_s16(v755, 7662);
    846     int16x8_t v756 = vaddq_s16(v756_tmp, v755);
    847     int16x8_t v757 = vaddq_s16(v754, v756);
    848     int16x8_t v758 = vsubq_s16(v635, v640);
    849     int16x8_t v759 = vsubq_s16(v624, v629);
    850     int16x8_t v760_tmp = vqrdmulhq_n_s16(v759, 12756);
    851     int16x8_t v760 = vaddq_s16(v760_tmp, v759);
    852     int16x8_t v761 = vaddq_s16(v758, v760);
    853     int16x8_t v762 = vsubq_s16(v602, v607);
    854     int16x8_t v763 = vsubq_s16(v612, v617);
    855     int16x8_t v764_tmp = vqrdmulhq_n_s16(v763, 19463);
    856     int16x8_t v764 = vaddq_s16(v764_tmp, v763);
    857     int16x8_t v765 = vaddq_s16(v762, v764);
    858     int16x8_t v766 = vsubq_s16(v585, v581);
    859     int16x8_t v767 = vsubq_s16(v591, v595);
    860     int16x8_t v768_tmp = vqrdmulhq_n_s16(v767, 28661);
    861     int16x8_t v768 = vaddq_s16(v768_tmp, v767);
    862     int16x8_t v769 = vaddq_s16(v766, v768);
    863     int16x8_t v770 = vsubq_s16(v556, v561);
    864     int16x8_t v771 = vsubq_s16(v566, v572);
    865     int16x8_t v772_tmp = vqrdmulhq_n_s16(v771, 9242);
    866     int16x8_t v772 = vmlaq_n_s16(v772_tmp, v771, 2);
    867     int16x8_t v773 = vaddq_s16(v770, v772);
    868     int16x8_t v774 = vsubq_s16(v513, v524);
    869     int16x8_t v775 = vsubq_s16(v535, v549);
    870     int16x8_t v776_tmp = vqrdmulhq_n_s16(v775, 30298);
    871     int16x8_t v776 = vmlaq_n_s16(v776_tmp, v775, 2);
    872     int16x8_t v777 = vaddq_s16(v774, v776);
    873     int16x8_t v778 = vsubq_s16(v457, v470);
    874     int16x8_t v779 = vsubq_s16(v500, v488);
    875     int16x8_t v780_tmp = vqrdmulhq_n_s16(v779, 2773);
    876     int16x8_t v780 = vmlaq_n_s16(v780_tmp, v779, 4);
    877     int16x8_t v781 = vaddq_s16(v778, v780);
    878     int16x8_t v782 = vsubq_s16(v385, v360);
    879     int16x8_t v783 = vsubq_s16(v414, v443);
    880     int16x8_t v784_tmp = vqrdmulhq_n_s16(v783, 26108);
    881     int16x8_t v784 = vmlaq_n_s16(v784_tmp, v783, 6);
    882     int16x8_t v785 = vaddq_s16(v782, v784);
    883     int16x8_t v786 = vsubq_s16(v61, v142);
    884     int16x8_t v787 = vsubq_s16(v238, v328);
    885     int16x8_t v788_tmp = vqrdmulhq_n_s16(v787, 12251);
    886     int16x8_t v788 = vmlaq_n_s16(v788_tmp, v787, 20);
    887     int16x8_t v789 = vaddq_s16(v786, v788);
    888     int16x8_t v790 = vsubq_s16(v786, v788);
    889     int16x8_t v791 = vsubq_s16(v782, v784);
    890     int16x8_t v792 = vsubq_s16(v778, v780);
    891     int16x8_t v793 = vsubq_s16(v774, v776);
    892     int16x8_t v794 = vsubq_s16(v770, v772);
    893     int16x8_t v795 = vsubq_s16(v766, v768);
    894     int16x8_t v796 = vsubq_s16(v762, v764);
    895     int16x8_t v797 = vsubq_s16(v758, v760);
    896     int16x8_t v798 = vsubq_s16(v754, v756);
    897     int16x8_t v799 = vsubq_s16(v750, v752);
    898     int16x8_t v800 = vsubq_s16(v746, v748);
    899     int16x8_t v801 = vsubq_s16(v742, v744);
    900     int16x8_t v802 = vsubq_s16(v738, v740);
    901     int16x8_t v803 = vsubq_s16(v734, v736);
    902     int16x8_t v804 = vsubq_s16(v730, v732);
    903     int16x8_t v805 = vsubq_s16(v726, v728);
    904     int16x8_t v806 = vsubq_s16(v719, v724);
    905     int16x8_t v807 = vsubq_s16(v709, v714);
    906     int16x8_t v808 = vsubq_s16(v704, v700);
    907     int16x8_t v809 = vsubq_s16(v688, v694);
    908     int16x8_t v810 = vsubq_s16(v678, v683);
    909     int16x8_t v811 = vsubq_s16(v667, v673);
    910     int16x8_t v812 = vsubq_s16(v656, v662);
    911     int16x8_t v813 = vsubq_s16(v646, v651);
    912     int16x8_t v814 = vsubq_s16(v641, v631);
    913     int16x8_t v815 = vsubq_s16(v608, v619);
    914     int16x8_t v816 = vsubq_s16(v586, v597);
    915     int16x8_t v817 = vsubq_s16(v562, v574);
    916     int16x8_t v818 = vsubq_s16(v525, v551);
    917     int16x8_t v819 = vsubq_s16(v471, v502);
    918     int16x8_t v820 = vsubq_s16(v386, v445);
    919     int16x8_t v821 = vsubq_s16(v143, v330);
    920     vst1q_s16(out + out_stride * 0 + i, v331);
    921     vst1q_s16(out + out_stride * 1 + i, v446);
    922     vst1q_s16(out + out_stride * 2 + i, v503);
    923     vst1q_s16(out + out_stride * 3 + i, v552);
    924     vst1q_s16(out + out_stride * 4 + i, v575);
    925     vst1q_s16(out + out_stride * 5 + i, v598);
    926     vst1q_s16(out + out_stride * 6 + i, v620);
    927     vst1q_s16(out + out_stride * 7 + i, v642);
    928     vst1q_s16(out + out_stride * 8 + i, v652);
    929     vst1q_s16(out + out_stride * 9 + i, v663);
    930     vst1q_s16(out + out_stride * 10 + i, v674);
    931     vst1q_s16(out + out_stride * 11 + i, v684);
    932     vst1q_s16(out + out_stride * 12 + i, v695);
    933     vst1q_s16(out + out_stride * 13 + i, v705);
    934     vst1q_s16(out + out_stride * 14 + i, v715);
    935     vst1q_s16(out + out_stride * 15 + i, v725);
    936     vst1q_s16(out + out_stride * 16 + i, v729);
    937     vst1q_s16(out + out_stride * 17 + i, v733);
    938     vst1q_s16(out + out_stride * 18 + i, v737);
    939     vst1q_s16(out + out_stride * 19 + i, v741);
    940     vst1q_s16(out + out_stride * 20 + i, v745);
    941     vst1q_s16(out + out_stride * 21 + i, v749);
    942     vst1q_s16(out + out_stride * 22 + i, v753);
    943     vst1q_s16(out + out_stride * 23 + i, v757);
    944     vst1q_s16(out + out_stride * 24 + i, v761);
    945     vst1q_s16(out + out_stride * 25 + i, v765);
    946     vst1q_s16(out + out_stride * 26 + i, v769);
    947     vst1q_s16(out + out_stride * 27 + i, v773);
    948     vst1q_s16(out + out_stride * 28 + i, v777);
    949     vst1q_s16(out + out_stride * 29 + i, v781);
    950     vst1q_s16(out + out_stride * 30 + i, v785);
    951     vst1q_s16(out + out_stride * 31 + i, v789);
    952     vst1q_s16(out + out_stride * 32 + i, v790);
    953     vst1q_s16(out + out_stride * 33 + i, v791);
    954     vst1q_s16(out + out_stride * 34 + i, v792);
    955     vst1q_s16(out + out_stride * 35 + i, v793);
    956     vst1q_s16(out + out_stride * 36 + i, v794);
    957     vst1q_s16(out + out_stride * 37 + i, v795);
    958     vst1q_s16(out + out_stride * 38 + i, v796);
    959     vst1q_s16(out + out_stride * 39 + i, v797);
    960     vst1q_s16(out + out_stride * 40 + i, v798);
    961     vst1q_s16(out + out_stride * 41 + i, v799);
    962     vst1q_s16(out + out_stride * 42 + i, v800);
    963     vst1q_s16(out + out_stride * 43 + i, v801);
    964     vst1q_s16(out + out_stride * 44 + i, v802);
    965     vst1q_s16(out + out_stride * 45 + i, v803);
    966     vst1q_s16(out + out_stride * 46 + i, v804);
    967     vst1q_s16(out + out_stride * 47 + i, v805);
    968     vst1q_s16(out + out_stride * 48 + i, v806);
    969     vst1q_s16(out + out_stride * 49 + i, v807);
    970     vst1q_s16(out + out_stride * 50 + i, v808);
    971     vst1q_s16(out + out_stride * 51 + i, v809);
    972     vst1q_s16(out + out_stride * 52 + i, v810);
    973     vst1q_s16(out + out_stride * 53 + i, v811);
    974     vst1q_s16(out + out_stride * 54 + i, v812);
    975     vst1q_s16(out + out_stride * 55 + i, v813);
    976     vst1q_s16(out + out_stride * 56 + i, v814);
    977     vst1q_s16(out + out_stride * 57 + i, v815);
    978     vst1q_s16(out + out_stride * 58 + i, v816);
    979     vst1q_s16(out + out_stride * 59 + i, v817);
    980     vst1q_s16(out + out_stride * 60 + i, v818);
    981     vst1q_s16(out + out_stride * 61 + i, v819);
    982     vst1q_s16(out + out_stride * 62 + i, v820);
    983     vst1q_s16(out + out_stride * 63 + i, v821);
    984   }
    985 }