| 1390 | uint8_t* sptr = nullptr; |
| 1391 | |
| 1392 | rep(oc, OC) { |
| 1393 | // copy sptr_ori to sptr_copied |
| 1394 | std::memset(sptr_copied, src_zp, sizeof(uint8_t) * IH2 * IW2); |
| 1395 | copy_plane_in_bytes( |
| 1396 | sptr_copied + padding_h * IW2 + padding_w / 2, |
| 1397 | sptr_ori + oc * IH * IW, IH, IW * sizeof(uint8_t), |
| 1398 | 2 * IW2 * sizeof(uint8_t), IW * sizeof(uint8_t)); |
| 1399 | sptr = sptr_copied; |
| 1400 | |
| 1401 | int32_t* dst_ptr = dptr; |
| 1402 | const uint8_t* filter = fptr + oc * IC * FH * FW; |
| 1403 | for (size_t ic = 0; ic < IC; ic++) { |
| 1404 | if (oc != OC - 1) { |
| 1405 | deconv(sptr, filter, dst_ptr, IH2, IW2, OH, OW_real, IC, src_zp, |
| 1406 | filter_zp, src_filter_zp); |
| 1407 | } else { |
| 1408 | deconv_last_oc( |
| 1409 | sptr, filter, dst_ptr, IH2, IW2, OH, OW_real, IC, src_zp, |
| 1410 | filter_zp, src_filter_zp); |
| 1411 | } |
| 1412 | dst_ptr += OH * OW_real; |
| 1413 | filter += FH * FH; |
| 1414 | } |
| 1415 | } |
| 1416 | if (need_dst_copy_var) { |
| 1417 | for (size_t ic = 0; ic < IC; ++ic) { |
| 1418 | copy_plane_in_bytes( |
nothing calls this directly
no test coverage detected