Unified · Split
| @@ -1250,21 +1250,7 @@ static void avc_loopfilter_luma_inter_edge_ver_msa(uint8_t *data, · 1249 unmodified lines | ||
| 1250 | 1250 | uint8_t beta_in, |
| 1251 | 1251 | uint32_t img_width) |
| 1252 | 1252 | { |
| 1253 | − uint8_t *src; | |
| 1254 | − v16u8 beta, tmp_vec, bs = { 0 }; | |
| 1255 | − v16u8 tc = { 0 }; | |
| 1256 | − v16u8 is_less_than, is_less_than_beta; | |
| 1257 | − v16u8 p1, p0, q0, q1; | |
| 1258 | − v8i16 p0_r, q0_r, p1_r = { 0 }; | |
| 1259 | − v8i16 q1_r = { 0 }; | |
| 1260 | − v8i16 p0_l, q0_l, p1_l = { 0 }; | |
| 1261 | − v8i16 q1_l = { 0 }; | |
| 1262 | − v16u8 p3_org, p2_org, p1_org, p0_org, q0_org, q1_org, q2_org, q3_org; | |
| 1263 | − v8i16 p2_org_r, p1_org_r, p0_org_r, q0_org_r, q1_org_r, q2_org_r; | |
| 1264 | − v8i16 p2_org_l, p1_org_l, p0_org_l, q0_org_l, q1_org_l, q2_org_l; | |
| 1265 | − v8i16 tc_r, tc_l; | |
| 1266 | − v16i8 zero = { 0 }; | |
| 1267 | − v16u8 is_bs_greater_than0; | |
| 1253 | + v16u8 tmp_vec, bs = { 0 }; | |
| 1268 | 1254 | |
| 1269 | 1255 | tmp_vec = (v16u8) __msa_fill_b(bs0); |
| 1270 | 1256 | bs = (v16u8) __msa_insve_w((v4i32) bs, 0, (v4i32) tmp_vec); |
| @@ -1276,6 +1262,14 @@ static void avc_loopfilter_luma_inter_edge_ver_msa(uint8_t *data, · 5 unmodified lines | ||
| 1276 | 1262 | bs = (v16u8) __msa_insve_w((v4i32) bs, 3, (v4i32) tmp_vec); |
| 1277 | 1263 | |
| 1278 | 1264 | if (!__msa_test_bz_v(bs)) { |
| 1265 | + uint8_t *src = data - 4; | |
| 1266 | + v16u8 p3_org, p2_org, p1_org, p0_org, q0_org, q1_org, q2_org, q3_org; | |
| 1267 | + v16u8 p0_asub_q0, p1_asub_p0, q1_asub_q0, alpha, beta; | |
| 1268 | + v16u8 is_less_than, is_less_than_beta, is_less_than_alpha; | |
| 1269 | + v16u8 is_bs_greater_than0; | |
| 1270 | + v16u8 tc = { 0 }; | |
| 1271 | + v16i8 zero = { 0 }; | |
| 1272 | + | |
| 1279 | 1273 | tmp_vec = (v16u8) __msa_fill_b(tc0); |
| 1280 | 1274 | tc = (v16u8) __msa_insve_w((v4i32) tc, 0, (v4i32) tmp_vec); |
| 1281 | 1275 | tmp_vec = (v16u8) __msa_fill_b(tc1); |
| @@ -1291,9 +1285,6 @@ static void avc_loopfilter_luma_inter_edge_ver_msa(uint8_t *data, · 9 unmodified lines | ||
| 1291 | 1285 | v16u8 row0, row1, row2, row3, row4, row5, row6, row7; |
| 1292 | 1286 | v16u8 row8, row9, row10, row11, row12, row13, row14, row15; |
| 1293 | 1287 | |
| 1294 | − src = data; | |
| 1295 | − src -= 4; | |
| 1296 | − | |
| 1297 | 1288 | LD_UB8(src, img_width, |
| 1298 | 1289 | row0, row1, row2, row3, row4, row5, row6, row7); |
| 1299 | 1290 | src += (8 * img_width); |
| @@ -1306,27 +1297,28 @@ static void avc_loopfilter_luma_inter_edge_ver_msa(uint8_t *data, · 6 unmodified lines | ||
| 1306 | 1297 | p3_org, p2_org, p1_org, p0_org, |
| 1307 | 1298 | q0_org, q1_org, q2_org, q3_org); |
| 1308 | 1299 | } |
| 1309 | − { | |
| 1310 | − v16u8 p0_asub_q0, p1_asub_p0, q1_asub_q0, alpha; | |
| 1311 | − v16u8 is_less_than_alpha; | |
| 1312 | − | |
| 1313 | − p0_asub_q0 = __msa_asub_u_b(p0_org, q0_org); | |
| 1314 | − p1_asub_p0 = __msa_asub_u_b(p1_org, p0_org); | |
| 1315 | − q1_asub_q0 = __msa_asub_u_b(q1_org, q0_org); | |
| 1316 | − | |
| 1317 | − alpha = (v16u8) __msa_fill_b(alpha_in); | |
| 1318 | − beta = (v16u8) __msa_fill_b(beta_in); | |
| 1319 | − | |
| 1320 | − is_less_than_alpha = (p0_asub_q0 < alpha); | |
| 1321 | − is_less_than_beta = (p1_asub_p0 < beta); | |
| 1322 | − is_less_than = is_less_than_beta & is_less_than_alpha; | |
| 1323 | − is_less_than_beta = (q1_asub_q0 < beta); | |
| 1324 | − is_less_than = is_less_than_beta & is_less_than; | |
| 1325 | − is_less_than = is_less_than & is_bs_greater_than0; | |
| 1326 | − } | |
| 1300 | + | |
| 1301 | + p0_asub_q0 = __msa_asub_u_b(p0_org, q0_org); | |
| 1302 | + p1_asub_p0 = __msa_asub_u_b(p1_org, p0_org); | |
| 1303 | + q1_asub_q0 = __msa_asub_u_b(q1_org, q0_org); | |
| 1304 | + | |
| 1305 | + alpha = (v16u8) __msa_fill_b(alpha_in); | |
| 1306 | + beta = (v16u8) __msa_fill_b(beta_in); | |
| 1307 | + | |
| 1308 | + is_less_than_alpha = (p0_asub_q0 < alpha); | |
| 1309 | + is_less_than_beta = (p1_asub_p0 < beta); | |
| 1310 | + is_less_than = is_less_than_beta & is_less_than_alpha; | |
| 1311 | + is_less_than_beta = (q1_asub_q0 < beta); | |
| 1312 | + is_less_than = is_less_than_beta & is_less_than; | |
| 1313 | + is_less_than = is_less_than & is_bs_greater_than0; | |
| 1314 | + | |
| 1327 | 1315 | if (!__msa_test_bz_v(is_less_than)) { |
| 1328 | 1316 | v16i8 negate_tc, sign_negate_tc; |
| 1329 | − v8i16 negate_tc_r, i16_negatetc_l; | |
| 1317 | + v16u8 p0, q0, p2_asub_p0, q2_asub_q0; | |
| 1318 | + v8i16 tc_r, tc_l, negate_tc_r, i16_negatetc_l; | |
| 1319 | + v8i16 p1_org_r, p0_org_r, q0_org_r, q1_org_r; | |
| 1320 | + v8i16 p1_org_l, p0_org_l, q0_org_l, q1_org_l; | |
| 1321 | + v8i16 p0_r, q0_r, p0_l, q0_l; | |
| 1330 | 1322 | |
| 1331 | 1323 | negate_tc = zero - (v16i8) tc; |
| 1332 | 1324 | sign_negate_tc = __msa_clti_s_b(negate_tc, 0); |
| @@ -1338,34 +1330,22 @@ static void avc_loopfilter_luma_inter_edge_ver_msa(uint8_t *data, · 5 unmodified lines | ||
| 1338 | 1330 | UNPCK_UB_SH(p0_org, p0_org_r, p0_org_l); |
| 1339 | 1331 | UNPCK_UB_SH(q0_org, q0_org_r, q0_org_l); |
| 1340 | 1332 | |
| 1341 | − { | |
| 1342 | − v16u8 p2_asub_p0; | |
| 1343 | − v16u8 is_less_than_beta_r, is_less_than_beta_l; | |
| 1344 | − | |
| 1345 | − p2_asub_p0 = __msa_asub_u_b(p2_org, p0_org); | |
| 1346 | − is_less_than_beta = (p2_asub_p0 < beta); | |
| 1347 | − is_less_than_beta = is_less_than_beta & is_less_than; | |
| 1348 | − | |
| 1349 | − is_less_than_beta_r = | |
| 1350 | − (v16u8) __msa_sldi_b((v16i8) is_less_than_beta, zero, 8); | |
| 1351 | − if (!__msa_test_bz_v(is_less_than_beta_r)) { | |
| 1352 | − p2_org_r = (v8i16) __msa_ilvr_b(zero, (v16i8) p2_org); | |
| 1353 | − | |
| 1354 | − AVC_LPF_P1_OR_Q1(p0_org_r, q0_org_r, p1_org_r, p2_org_r, | |
| 1355 | − negate_tc_r, tc_r, p1_r); | |
| 1356 | − } | |
| 1357 | − | |
| 1358 | − is_less_than_beta_l = | |
| 1359 | − (v16u8) __msa_sldi_b(zero, (v16i8) is_less_than_beta, 8); | |
| 1360 | − if (!__msa_test_bz_v(is_less_than_beta_l)) { | |
| 1361 | − p2_org_l = (v8i16) __msa_ilvl_b(zero, (v16i8) p2_org); | |
| 1362 | − | |
| 1363 | − AVC_LPF_P1_OR_Q1(p0_org_l, q0_org_l, p1_org_l, p2_org_l, | |
| 1364 | − i16_negatetc_l, tc_l, p1_l); | |
| 1365 | − } | |
| 1366 | − } | |
| 1333 | + p2_asub_p0 = __msa_asub_u_b(p2_org, p0_org); | |
| 1334 | + is_less_than_beta = (p2_asub_p0 < beta); | |
| 1335 | + is_less_than_beta = is_less_than_beta & is_less_than; | |
| 1367 | 1336 | |
| 1368 | 1337 | if (!__msa_test_bz_v(is_less_than_beta)) { |
| 1338 | + v16u8 p1; | |
| 1339 | + v8i16 p1_r = { 0 }; | |
| 1340 | + v8i16 p1_l = { 0 }; | |
| 1341 | + v8i16 p2_org_r = (v8i16) __msa_ilvr_b(zero, (v16i8) p2_org); | |
| 1342 | + v8i16 p2_org_l = (v8i16) __msa_ilvl_b(zero, (v16i8) p2_org); | |
| 1343 | + | |
| 1344 | + AVC_LPF_P1_OR_Q1(p0_org_r, q0_org_r, p1_org_r, p2_org_r, | |
| 1345 | + negate_tc_r, tc_r, p1_r); | |
| 1346 | + AVC_LPF_P1_OR_Q1(p0_org_l, q0_org_l, p1_org_l, p2_org_l, | |
| 1347 | + i16_negatetc_l, tc_l, p1_l); | |
| 1348 | + | |
| 1369 | 1349 | p1 = (v16u8) __msa_pckev_b((v16i8) p1_l, (v16i8) p1_r); |
| 1370 | 1350 | p1_org = __msa_bmnz_v(p1_org, p1, is_less_than_beta); |
| 1371 | 1351 | |
| @@ -1373,36 +1353,25 @@ static void avc_loopfilter_luma_inter_edge_ver_msa(uint8_t *data, · 1 unmodified line | ||
| 1373 | 1353 | tc = tc + is_less_than_beta; |
| 1374 | 1354 | } |
| 1375 | 1355 | |
| 1376 | − { | |
| 1377 | − v16u8 u8_q2asub_q0; | |
| 1378 | − v16u8 is_less_than_beta_l, is_less_than_beta_r; | |
| 1379 | − | |
| 1380 | − u8_q2asub_q0 = __msa_asub_u_b(q2_org, q0_org); | |
| 1381 | − is_less_than_beta = (u8_q2asub_q0 < beta); | |
| 1382 | − is_less_than_beta = is_less_than_beta & is_less_than; | |
| 1383 | − | |
| 1384 | − q1_org_r = (v8i16) __msa_ilvr_b(zero, (v16i8) q1_org); | |
| 1385 | − | |
| 1386 | − is_less_than_beta_r = | |
| 1387 | − (v16u8) __msa_sldi_b((v16i8) is_less_than_beta, zero, 8); | |
| 1388 | − if (!__msa_test_bz_v(is_less_than_beta_r)) { | |
| 1389 | − q2_org_r = (v8i16) __msa_ilvr_b(zero, (v16i8) q2_org); | |
| 1390 | − AVC_LPF_P1_OR_Q1(p0_org_r, q0_org_r, q1_org_r, q2_org_r, | |
| 1391 | − negate_tc_r, tc_r, q1_r); | |
| 1392 | − } | |
| 1393 | − | |
| 1394 | − q1_org_l = (v8i16) __msa_ilvl_b(zero, (v16i8) q1_org); | |
| 1395 | − | |
| 1396 | − is_less_than_beta_l = | |
| 1397 | − (v16u8) __msa_sldi_b(zero, (v16i8) is_less_than_beta, 8); | |
| 1398 | − if (!__msa_test_bz_v(is_less_than_beta_l)) { | |
| 1399 | − q2_org_l = (v8i16) __msa_ilvl_b(zero, (v16i8) q2_org); | |
| 1400 | − AVC_LPF_P1_OR_Q1(p0_org_l, q0_org_l, q1_org_l, q2_org_l, | |
| 1401 | − i16_negatetc_l, tc_l, q1_l); | |
| 1402 | − } | |
| 1403 | − } | |
| 1356 | + q2_asub_q0 = __msa_asub_u_b(q2_org, q0_org); | |
| 1357 | + is_less_than_beta = (q2_asub_q0 < beta); | |
| 1358 | + is_less_than_beta = is_less_than_beta & is_less_than; | |
| 1359 | + | |
| 1360 | + q1_org_r = (v8i16) __msa_ilvr_b(zero, (v16i8) q1_org); | |
| 1361 | + q1_org_l = (v8i16) __msa_ilvl_b(zero, (v16i8) q1_org); | |
| 1404 | 1362 | |
| 1405 | 1363 | if (!__msa_test_bz_v(is_less_than_beta)) { |
| 1364 | + v16u8 q1; | |
| 1365 | + v8i16 q1_r = { 0 }; | |
| 1366 | + v8i16 q1_l = { 0 }; | |
| 1367 | + v8i16 q2_org_r = (v8i16) __msa_ilvr_b(zero, (v16i8) q2_org); | |
| 1368 | + v8i16 q2_org_l = (v8i16) __msa_ilvl_b(zero, (v16i8) q2_org); | |
| 1369 | + | |
| 1370 | + AVC_LPF_P1_OR_Q1(p0_org_r, q0_org_r, q1_org_r, q2_org_r, | |
| 1371 | + negate_tc_r, tc_r, q1_r); | |
| 1372 | + AVC_LPF_P1_OR_Q1(p0_org_l, q0_org_l, q1_org_l, q2_org_l, | |
| 1373 | + i16_negatetc_l, tc_l, q1_l); | |
| 1374 | + | |
| 1406 | 1375 | q1 = (v16u8) __msa_pckev_b((v16i8) q1_l, (v16i8) q1_r); |
| 1407 | 1376 | q1_org = __msa_bmnz_v(q1_org, q1, is_less_than_beta); |
| 1408 | 1377 | |
| @@ -1436,7 +1405,7 @@ static void avc_loopfilter_luma_inter_edge_ver_msa(uint8_t *data, · 27 unmodified lines | ||
| 1436 | 1405 | |
| 1437 | 1406 | p0_org = __msa_bmnz_v(p0_org, p0, is_less_than); |
| 1438 | 1407 | q0_org = __msa_bmnz_v(q0_org, q0, is_less_than); |
| 1439 | − } | |
| 1408 | + | |
| 1440 | 1409 | { |
| 1441 | 1410 | v16i8 tp0, tp1, tp2, tp3; |
| 1442 | 1411 | v8i16 tmp2, tmp5; |
| @@ -1548,6 +1517,7 @@ static void avc_loopfilter_luma_inter_edge_ver_msa(uint8_t *data, · 105 unmodified lines | ||
| 1548 | 1517 | SW(out2, src); |
| 1549 | 1518 | SH(out3, (src + 4)); |
| 1550 | 1519 | } |
| 1520 | + } | |
| 1551 | 1521 | } |
| 1552 | 1522 | } |
| 1553 | 1523 | |
| @@ -1560,20 +1530,8 @@ static void avc_loopfilter_luma_inter_edge_hor_msa(uint8_t *data, · 6 unmodified lines | ||
| 1560 | 1530 | uint8_t beta_in, |
| 1561 | 1531 | uint32_t image_width) |
| 1562 | 1532 | { |
| 1563 | − v16u8 p2_asub_p0, u8_q2asub_q0; | |
| 1564 | − v16u8 alpha, beta, is_less_than, is_less_than_beta; | |
| 1565 | − v16u8 p1, p0, q0, q1; | |
| 1566 | − v8i16 p1_r = { 0 }; | |
| 1567 | − v8i16 p0_r, q0_r, q1_r = { 0 }; | |
| 1568 | − v8i16 p1_l = { 0 }; | |
| 1569 | − v8i16 p0_l, q0_l, q1_l = { 0 }; | |
| 1570 | − v16u8 p2_org, p1_org, p0_org, q0_org, q1_org, q2_org; | |
| 1571 | − v8i16 p2_org_r, p1_org_r, p0_org_r, q0_org_r, q1_org_r, q2_org_r; | |
| 1572 | − v8i16 p2_org_l, p1_org_l, p0_org_l, q0_org_l, q1_org_l, q2_org_l; | |
| 1573 | − v16i8 zero = { 0 }; | |
| 1574 | 1533 | v16u8 tmp_vec; |
| 1575 | 1534 | v16u8 bs = { 0 }; |
| 1576 | − v16i8 tc = { 0 }; | |
| 1577 | 1535 | |
| 1578 | 1536 | tmp_vec = (v16u8) __msa_fill_b(bs0); |
| 1579 | 1537 | bs = (v16u8) __msa_insve_w((v4i32) bs, 0, (v4i32) tmp_vec); |
| @@ -1585,6 +1543,16 @@ static void avc_loopfilter_luma_inter_edge_hor_msa(uint8_t *data, · 5 unmodified lines | ||
| 1585 | 1543 | bs = (v16u8) __msa_insve_w((v4i32) bs, 3, (v4i32) tmp_vec); |
| 1586 | 1544 | |
| 1587 | 1545 | if (!__msa_test_bz_v(bs)) { |
| 1546 | + v16u8 alpha, beta, is_less_than, is_less_than_beta; | |
| 1547 | + v16u8 p0, q0, p2_org, p1_org, p0_org, q0_org, q1_org, q2_org; | |
| 1548 | + v16u8 p0_asub_q0, p1_asub_p0, q1_asub_q0; | |
| 1549 | + v16u8 is_less_than_alpha, is_bs_greater_than0; | |
| 1550 | + v8i16 p0_r, q0_r, p0_l, q0_l; | |
| 1551 | + v8i16 p1_org_r, p0_org_r, q0_org_r, q1_org_r; | |
| 1552 | + v8i16 p1_org_l, p0_org_l, q0_org_l, q1_org_l; | |
| 1553 | + v16i8 zero = { 0 }; | |
| 1554 | + v16i8 tc = { 0 }; | |
| 1555 | + | |
| 1588 | 1556 | tmp_vec = (v16u8) __msa_fill_b(tc0); |
| 1589 | 1557 | tc = (v16i8) __msa_insve_w((v4i32) tc, 0, (v4i32) tmp_vec); |
| 1590 | 1558 | tmp_vec = (v16u8) __msa_fill_b(tc1); |
| @@ -1600,26 +1568,22 @@ static void avc_loopfilter_luma_inter_edge_hor_msa(uint8_t *data, · 9 unmodified lines | ||
| 1600 | 1568 | LD_UB5(data - (3 * image_width), image_width, |
| 1601 | 1569 | p2_org, p1_org, p0_org, q0_org, q1_org); |
| 1602 | 1570 | |
| 1603 | − { | |
| 1604 | − v16u8 p0_asub_q0, p1_asub_p0, q1_asub_q0; | |
| 1605 | − v16u8 is_less_than_alpha, is_bs_greater_than0; | |
| 1606 | − | |
| 1607 | − is_bs_greater_than0 = ((v16u8) zero < bs); | |
| 1608 | − p0_asub_q0 = __msa_asub_u_b(p0_org, q0_org); | |
| 1609 | − p1_asub_p0 = __msa_asub_u_b(p1_org, p0_org); | |
| 1610 | − q1_asub_q0 = __msa_asub_u_b(q1_org, q0_org); | |
| 1611 | − | |
| 1612 | − is_less_than_alpha = (p0_asub_q0 < alpha); | |
| 1613 | − is_less_than_beta = (p1_asub_p0 < beta); | |
| 1614 | − is_less_than = is_less_than_beta & is_less_than_alpha; | |
| 1615 | − is_less_than_beta = (q1_asub_q0 < beta); | |
| 1616 | − is_less_than = is_less_than_beta & is_less_than; | |
| 1617 | − is_less_than = is_less_than & is_bs_greater_than0; | |
| 1618 | − } | |
| 1571 | + is_bs_greater_than0 = ((v16u8) zero < bs); | |
| 1572 | + p0_asub_q0 = __msa_asub_u_b(p0_org, q0_org); | |
| 1573 | + p1_asub_p0 = __msa_asub_u_b(p1_org, p0_org); | |
| 1574 | + q1_asub_q0 = __msa_asub_u_b(q1_org, q0_org); | |
| 1575 | + | |
| 1576 | + is_less_than_alpha = (p0_asub_q0 < alpha); | |
| 1577 | + is_less_than_beta = (p1_asub_p0 < beta); | |
| 1578 | + is_less_than = is_less_than_beta & is_less_than_alpha; | |
| 1579 | + is_less_than_beta = (q1_asub_q0 < beta); | |
| 1580 | + is_less_than = is_less_than_beta & is_less_than; | |
| 1581 | + is_less_than = is_less_than & is_bs_greater_than0; | |
| 1619 | 1582 | |
| 1620 | 1583 | if (!__msa_test_bz_v(is_less_than)) { |
| 1621 | 1584 | v16i8 sign_negate_tc, negate_tc; |
| 1622 | 1585 | v8i16 negate_tc_r, i16_negatetc_l, tc_l, tc_r; |
| 1586 | + v16u8 p2_asub_p0, q2_asub_q0; | |
| 1623 | 1587 | |
| 1624 | 1588 | q2_org = LD_UB(data + (2 * image_width)); |
| 1625 | 1589 | negate_tc = zero - tc; |
| @@ -1635,28 +1599,19 @@ static void avc_loopfilter_luma_inter_edge_hor_msa(uint8_t *data, · 9 unmodified lines | ||
| 1635 | 1599 | p2_asub_p0 = __msa_asub_u_b(p2_org, p0_org); |
| 1636 | 1600 | is_less_than_beta = (p2_asub_p0 < beta); |
| 1637 | 1601 | is_less_than_beta = is_less_than_beta & is_less_than; |
| 1638 | − { | |
| 1639 | − v8u16 is_less_than_beta_r, is_less_than_beta_l; | |
| 1640 | − | |
| 1641 | − is_less_than_beta_r = | |
| 1642 | − (v8u16) __msa_sldi_b((v16i8) is_less_than_beta, zero, 8); | |
| 1643 | − if (!__msa_test_bz_v((v16u8) is_less_than_beta_r)) { | |
| 1644 | − p2_org_r = (v8i16) __msa_ilvr_b(zero, (v16i8) p2_org); | |
| 1645 | 1602 | |
| 1646 | − AVC_LPF_P1_OR_Q1(p0_org_r, q0_org_r, p1_org_r, p2_org_r, | |
| 1647 | − negate_tc_r, tc_r, p1_r); | |
| 1648 | − } | |
| 1603 | + if (!__msa_test_bz_v(is_less_than_beta)) { | |
| 1604 | + v16u8 p1; | |
| 1605 | + v8i16 p1_r = { 0 }; | |
| 1606 | + v8i16 p1_l = { 0 }; | |
| 1607 | + v8i16 p2_org_r = (v8i16) __msa_ilvr_b(zero, (v16i8) p2_org); | |
| 1608 | + v8i16 p2_org_l = (v8i16) __msa_ilvl_b(zero, (v16i8) p2_org); | |
| 1649 | 1609 | |
| 1650 | − is_less_than_beta_l = | |
| 1651 | − (v8u16) __msa_sldi_b(zero, (v16i8) is_less_than_beta, 8); | |
| 1652 | − if (!__msa_test_bz_v((v16u8) is_less_than_beta_l)) { | |
| 1653 | − p2_org_l = (v8i16) __msa_ilvl_b(zero, (v16i8) p2_org); | |
| 1610 | + AVC_LPF_P1_OR_Q1(p0_org_r, q0_org_r, p1_org_r, p2_org_r, | |
| 1611 | + negate_tc_r, tc_r, p1_r); | |
| 1612 | + AVC_LPF_P1_OR_Q1(p0_org_l, q0_org_l, p1_org_l, p2_org_l, | |
| 1613 | + i16_negatetc_l, tc_l, p1_l); | |
| 1654 | 1614 | |
| 1655 | − AVC_LPF_P1_OR_Q1(p0_org_l, q0_org_l, p1_org_l, p2_org_l, | |
| 1656 | − i16_negatetc_l, tc_l, p1_l); | |
| 1657 | − } | |
| 1658 | − } | |
| 1659 | − if (!__msa_test_bz_v(is_less_than_beta)) { | |
| 1660 | 1615 | p1 = (v16u8) __msa_pckev_b((v16i8) p1_l, (v16i8) p1_r); |
| 1661 | 1616 | p1_org = __msa_bmnz_v(p1_org, p1, is_less_than_beta); |
| 1662 | 1617 | ST_UB(p1_org, data - (2 * image_width)); |
| @@ -1665,34 +1620,25 @@ static void avc_loopfilter_luma_inter_edge_hor_msa(uint8_t *data, · 2 unmodified lines | ||
| 1665 | 1620 | tc = tc + (v16i8) is_less_than_beta; |
| 1666 | 1621 | } |
| 1667 | 1622 | |
| 1668 | − u8_q2asub_q0 = __msa_asub_u_b(q2_org, q0_org); | |
| 1669 | − is_less_than_beta = (u8_q2asub_q0 < beta); | |
| 1623 | + q2_asub_q0 = __msa_asub_u_b(q2_org, q0_org); | |
| 1624 | + is_less_than_beta = (q2_asub_q0 < beta); | |
| 1670 | 1625 | is_less_than_beta = is_less_than_beta & is_less_than; |
| 1671 | 1626 | |
| 1672 | − { | |
| 1673 | − v8u16 is_less_than_beta_r, is_less_than_beta_l; | |
| 1674 | − is_less_than_beta_r = | |
| 1675 | − (v8u16) __msa_sldi_b((v16i8) is_less_than_beta, zero, 8); | |
| 1676 | − | |
| 1677 | − q1_org_r = (v8i16) __msa_ilvr_b(zero, (v16i8) q1_org); | |
| 1678 | − if (!__msa_test_bz_v((v16u8) is_less_than_beta_r)) { | |
| 1679 | − q2_org_r = (v8i16) __msa_ilvr_b(zero, (v16i8) q2_org); | |
| 1680 | − | |
| 1681 | − AVC_LPF_P1_OR_Q1(p0_org_r, q0_org_r, q1_org_r, q2_org_r, | |
| 1682 | − negate_tc_r, tc_r, q1_r); | |
| 1683 | − } | |
| 1684 | − is_less_than_beta_l = | |
| 1685 | − (v8u16) __msa_sldi_b(zero, (v16i8) is_less_than_beta, 8); | |
| 1686 | − | |
| 1687 | − q1_org_l = (v8i16) __msa_ilvl_b(zero, (v16i8) q1_org); | |
| 1688 | − if (!__msa_test_bz_v((v16u8) is_less_than_beta_l)) { | |
| 1689 | − q2_org_l = (v8i16) __msa_ilvl_b(zero, (v16i8) q2_org); | |
| 1690 | − | |
| 1691 | − AVC_LPF_P1_OR_Q1(p0_org_l, q0_org_l, q1_org_l, q2_org_l, | |
| 1692 | − i16_negatetc_l, tc_l, q1_l); | |
| 1693 | − } | |
| 1694 | − } | |
| 1627 | + q1_org_r = (v8i16) __msa_ilvr_b(zero, (v16i8) q1_org); | |
| 1628 | + q1_org_l = (v8i16) __msa_ilvl_b(zero, (v16i8) q1_org); | |
| 1629 | + | |
| 1695 | 1630 | if (!__msa_test_bz_v(is_less_than_beta)) { |
| 1631 | + v16u8 q1; | |
| 1632 | + v8i16 q1_r = { 0 }; | |
| 1633 | + v8i16 q1_l = { 0 }; | |
| 1634 | + v8i16 q2_org_r = (v8i16) __msa_ilvr_b(zero, (v16i8) q2_org); | |
| 1635 | + v8i16 q2_org_l = (v8i16) __msa_ilvl_b(zero, (v16i8) q2_org); | |
| 1636 | + | |
| 1637 | + AVC_LPF_P1_OR_Q1(p0_org_r, q0_org_r, q1_org_r, q2_org_r, | |
| 1638 | + negate_tc_r, tc_r, q1_r); | |
| 1639 | + AVC_LPF_P1_OR_Q1(p0_org_l, q0_org_l, q1_org_l, q2_org_l, | |
| 1640 | + i16_negatetc_l, tc_l, q1_l); | |
| 1641 | + | |
| 1696 | 1642 | q1 = (v16u8) __msa_pckev_b((v16i8) q1_l, (v16i8) q1_r); |
| 1697 | 1643 | q1_org = __msa_bmnz_v(q1_org, q1, is_less_than_beta); |
| 1698 | 1644 | ST_UB(q1_org, data + image_width); |