1369
1369
b put_h264_qpel16_mc11
1372
@ Biweighted prediction
1374
.macro biweight_16 macs, macd
1380
vld1.8 {d20-d21},[r0,:128], r2
1384
vld1.8 {d22-d23},[r1,:128], r2
1389
vld1.8 {d28-d29},[r0,:128], r2
1394
vld1.8 {d30-d31},[r1,:128], r2
1402
vshl.s16 q12, q12, q9
1403
vshl.s16 q13, q13, q9
1404
vqmovun.s16 d24, q12
1405
vqmovun.s16 d25, q13
1407
vst1.8 {d4- d5}, [r6,:128], r2
1409
vst1.8 {d24-d25},[r6,:128], r2
1414
.macro biweight_8 macs, macd
1420
vld1.8 {d4},[r0,:64], r2
1423
vld1.8 {d5},[r1,:64], r2
1426
vld1.8 {d6},[r0,:64], r2
1429
vld1.8 {d7},[r1,:64], r2
1434
vshl.s16 q10, q10, q9
1437
vst1.8 {d2},[r6,:64], r2
1439
vst1.8 {d4},[r6,:64], r2
1444
.macro biweight_4 macs, macd
1450
vld1.32 {d4[0]},[r0,:32], r2
1451
vld1.32 {d4[1]},[r0,:32], r2
1454
vld1.32 {d5[0]},[r1,:32], r2
1455
vld1.32 {d5[1]},[r1,:32], r2
1459
vld1.32 {d6[0]},[r0,:32], r2
1460
vld1.32 {d6[1]},[r0,:32], r2
1463
vld1.32 {d7[0]},[r1,:32], r2
1464
vld1.32 {d7[1]},[r1,:32], r2
1469
vshl.s16 q10, q10, q9
1472
vst1.32 {d2[0]},[r6,:32], r2
1473
vst1.32 {d2[1]},[r6,:32], r2
1475
vst1.32 {d4[0]},[r6,:32], r2
1476
vst1.32 {d4[1]},[r6,:32], r2
1479
2: vshl.s16 q1, q1, q9
1481
vst1.32 {d2[0]},[r6,:32], r2
1482
vst1.32 {d2[1]},[r6,:32], r2
1486
.macro biweight_func w
1487
function biweight_h264_pixels_\w\()_neon
1493
eors lr, lr, r5, lsr #30
1506
10: biweight_\w vmlal.u8, vmlal.u8
1508
biweight_\w vmlal.u8, vmlsl.u8
1511
biweight_\w vmlsl.u8, vmlsl.u8
1513
biweight_\w vmlsl.u8, vmlal.u8
1517
.macro biweight_entry w, h, b=1
1518
function ff_biweight_h264_pixels_\w\()x\h\()_neon, export=1
1521
b biweight_h264_pixels_\w\()_neon
1526
biweight_entry 16, 8
1527
biweight_entry 16, 16, b=0
1530
biweight_entry 8, 16
1532
biweight_entry 8, 8, b=0
1537
biweight_entry 4, 4, b=0
1540
@ Weighted prediction
1542
.macro weight_16 mac
1547
vld1.8 {d20-d21},[r0,:128], r1
1552
vld1.8 {d28-d29},[r0,:128], r1
1561
vshl.s16 q12, q12, q9
1562
vshl.s16 q13, q13, q9
1563
vqmovun.s16 d24, q12
1564
vqmovun.s16 d25, q13
1566
vst1.8 {d4- d5}, [r4,:128], r1
1568
vst1.8 {d24-d25},[r4,:128], r1
1578
vld1.8 {d4},[r0,:64], r1
1581
vld1.8 {d6},[r0,:64], r1
1586
vshl.s16 q10, q10, q9
1589
vst1.8 {d2},[r4,:64], r1
1591
vst1.8 {d4},[r4,:64], r1
1601
vld1.32 {d4[0]},[r0,:32], r1
1602
vld1.32 {d4[1]},[r0,:32], r1
1606
vld1.32 {d6[0]},[r0,:32], r1
1607
vld1.32 {d6[1]},[r0,:32], r1
1612
vshl.s16 q10, q10, q9
1615
vst1.32 {d2[0]},[r4,:32], r1
1616
vst1.32 {d2[1]},[r4,:32], r1
1618
vst1.32 {d4[0]},[r4,:32], r1
1619
vst1.32 {d4[1]},[r4,:32], r1
1622
2: vshl.s16 q1, q1, q9
1624
vst1.32 {d2[0]},[r4,:32], r1
1625
vst1.32 {d2[1]},[r4,:32], r1
1629
.macro weight_func w
1630
function weight_h264_pixels_\w\()_neon
1638
addge r4, r4, lr, lsl r2
1649
.macro weight_entry w, h, b=1
1650
function ff_weight_h264_pixels_\w\()x\h\()_neon, export=1
1653
b weight_h264_pixels_\w\()_neon
1659
weight_entry 16, 16, b=0
1664
weight_entry 8, 8, b=0
1669
weight_entry 4, 4, b=0