| 1283 | uint8_t* sptr = nullptr; |
| 1284 | |
| 1285 | rep(oc, OC) { |
| 1286 | if (need_src_copy_var) { |
| 1287 | // copy sptr_ori to sptr_copied |
| 1288 | std::memset(sptr_copied, src_zp, sizeof(uint8_t) * IH2 * IW2); |
| 1289 | copy_plane_in_bytes( |
| 1290 | sptr_copied + padding_h * IW2 + padding_w, |
| 1291 | sptr_ori + oc * IH * IW, IH, IW * sizeof(uint8_t), |
| 1292 | IW2 * sizeof(uint8_t), IW * sizeof(uint8_t)); |
| 1293 | sptr = sptr_copied; |
| 1294 | } else { |
| 1295 | sptr = sptr_ori + oc * IH * IW; |
| 1296 | } |
| 1297 | |
| 1298 | int32_t* dst_ptr = dptr; |
| 1299 | const uint8_t* filter = fptr + oc * IC * FH * FW; |
| 1300 | for (size_t ic = 0; ic < IC; ic++) { |
| 1301 | if (oc != OC - 1) { |
| 1302 | deconv(sptr, filter, dst_ptr, IH2, IW2, OH, OW_real, IC, src_zp, |
| 1303 | filter_zp, src_filter_zp); |
| 1304 | } else { |
| 1305 | deconv_last_oc( |
| 1306 | sptr, filter, dst_ptr, IH2, IW2, OH, OW_real, IC, src_zp, |
| 1307 | filter_zp, src_filter_zp); |
| 1308 | } |
| 1309 | dst_ptr += OH * OW_real; |
| 1310 | filter += FH * FH; |
| 1311 | } |
| 1312 | } |
| 1313 | if (need_dst_copy_var) { |
| 1314 | for (size_t ic = 0; ic < IC; ++ic) { |
| 1315 | copy_plane_in_bytes( |
nothing calls this directly
no test coverage detected