| @@ -21,7 +21,8 @@ · 20 unmodified lines |
| 21 | */ | 21 | */ |
| 22 | | 22 | |
| 23 | #include "libavutil/aarch64/asm.S" | 23 | #include "libavutil/aarch64/asm.S" |
| 24 | #define MAX_PB_SIZE 64 | 24 | #define HEVC_MAX_PB_SIZE 64 |
| | 25 | #define VVC_MAX_PB_SIZE 128 |
| 25 | | 26 | |
| 26 | const qpel_filters, align=4 | 27 | const qpel_filters, align=4 |
| 27 | .byte 0, 0, 0, 0, 0, 0, 0, 0 | 28 | .byte 0, 0, 0, 0, 0, 0, 0, 0 |
| @@ -44,6 +45,11 @@ endconst · 16 unmodified lines |
| 44 | sxtl v0.8h, v0.8b | 45 | sxtl v0.8h, v0.8b |
| 45 | .endm | 46 | .endm |
| 46 | | 47 | |
| | 48 | .macro vvc_load_filter m |
| | 49 | ld1 {v0.8b}, [\m] |
| | 50 | sxtl v0.8h, v0.8b |
| | 51 | .endm |
| | 52 | |
| 47 | .macro load_qpel_filterb freg, xreg | 53 | .macro load_qpel_filterb freg, xreg |
| 48 | movrel \xreg, qpel_filters_abs | 54 | movrel \xreg, qpel_filters_abs |
| 49 | add \xreg, \xreg, \freg, lsl #3 | 55 | add \xreg, \xreg, \freg, lsl #3 |
| @@ -212,22 +218,40 @@ function ff_hevc_put_hevc_h4_8_neon, export=0 · 162 unmodified lines |
| 212 | endfunc | 218 | endfunc |
| 213 | .endif | 219 | .endif |
| 214 | | 220 | |
| | 221 | .ifnc \type, qpel_bi |
| | 222 | function ff_vvc_put_\type\()_h4_8_neon, export=1 |
| | 223 | vvc_load_filter mx |
| | 224 | sub src, src, #3 |
| | 225 | mov mx, x30 |
| | 226 | .ifc \type, qpel |
| | 227 | mov dststride, #(VVC_MAX_PB_SIZE << 1) |
| | 228 | lsl x13, srcstride, #1 // srcstridel |
| | 229 | mov x14, #(VVC_MAX_PB_SIZE << 2) |
| | 230 | .else |
| | 231 | lsl x14, dststride, #1 // dststridel |
| | 232 | lsl x13, srcstride, #1 // srcstridel |
| | 233 | .endif |
| | 234 | b 1f |
| | 235 | endfunc |
| | 236 | .endif // !qpel_bi |
| | 237 | |
| 215 | function ff_hevc_put_hevc_\type\()_h4_8_neon, export=1 | 238 | function ff_hevc_put_hevc_\type\()_h4_8_neon, export=1 |
| 216 | load_filter mx | 239 | load_filter mx |
| 217 | .ifc \type, qpel_bi | 240 | .ifc \type, qpel_bi |
| 218 | mov x16, #(MAX_PB_SIZE << 2) // src2bstridel | 241 | mov x16, #(HEVC_MAX_PB_SIZE << 2) // src2bstridel |
| 219 | add x15, x4, #(MAX_PB_SIZE << 1) // src2b | 242 | add x15, x4, #(HEVC_MAX_PB_SIZE << 1) // src2b |
| 220 | .endif | 243 | .endif |
| 221 | sub src, src, #3 | 244 | sub src, src, #3 |
| 222 | mov mx, x30 | 245 | mov mx, x30 |
| 223 | .ifc \type, qpel | 246 | .ifc \type, qpel |
| 224 | mov dststride, #(MAX_PB_SIZE << 1) | 247 | mov dststride, #(HEVC_MAX_PB_SIZE << 1) |
| 225 | lsl x13, srcstride, #1 // srcstridel | 248 | lsl x13, srcstride, #1 // srcstridel |
| 226 | mov x14, #(MAX_PB_SIZE << 2) | 249 | mov x14, #(HEVC_MAX_PB_SIZE << 2) |
| 227 | .else | 250 | .else |
| 228 | lsl x14, dststride, #1 // dststridel | 251 | lsl x14, dststride, #1 // dststridel |
| 229 | lsl x13, srcstride, #1 // srcstridel | 252 | lsl x13, srcstride, #1 // srcstridel |
| 230 | .endif | 253 | .endif |
| | 254 | 1: |
| 231 | add x10, dst, dststride // dstb | 255 | add x10, dst, dststride // dstb |
| 232 | add x12, src, srcstride // srcb | 256 | add x12, src, srcstride // srcb |
| 233 | 0: ld1 {v16.8b, v17.8b}, [src], x13 | 257 | 0: ld1 {v16.8b, v17.8b}, [src], x13 |
| @@ -283,15 +307,15 @@ endfunc · 49 unmodified lines |
| 283 | function ff_hevc_put_hevc_\type\()_h6_8_neon, export=1 | 307 | function ff_hevc_put_hevc_\type\()_h6_8_neon, export=1 |
| 284 | load_filter mx | 308 | load_filter mx |
| 285 | .ifc \type, qpel_bi | 309 | .ifc \type, qpel_bi |
| 286 | mov x16, #(MAX_PB_SIZE << 2) // src2bstridel | 310 | mov x16, #(HEVC_MAX_PB_SIZE << 2) // src2bstridel |
| 287 | add x15, x4, #(MAX_PB_SIZE << 1) // src2b | 311 | add x15, x4, #(HEVC_MAX_PB_SIZE << 1) // src2b |
| 288 | .endif | 312 | .endif |
| 289 | sub src, src, #3 | 313 | sub src, src, #3 |
| 290 | mov mx, x30 | 314 | mov mx, x30 |
| 291 | .ifc \type, qpel | 315 | .ifc \type, qpel |
| 292 | mov dststride, #(MAX_PB_SIZE << 1) | 316 | mov dststride, #(HEVC_MAX_PB_SIZE << 1) |
| 293 | lsl x13, srcstride, #1 // srcstridel | 317 | lsl x13, srcstride, #1 // srcstridel |
| 294 | mov x14, #((MAX_PB_SIZE << 2) - 8) | 318 | mov x14, #((HEVC_MAX_PB_SIZE << 2) - 8) |
| 295 | .else | 319 | .else |
| 296 | lsl x14, dststride, #1 // dststridel | 320 | lsl x14, dststride, #1 // dststridel |
| 297 | lsl x13, srcstride, #1 // srcstridel | 321 | lsl x13, srcstride, #1 // srcstridel |
| @@ -333,22 +357,40 @@ function ff_hevc_put_hevc_\type\()_h6_8_neon, export=1 · 35 unmodified lines |
| 333 | ret mx | 357 | ret mx |
| 334 | endfunc | 358 | endfunc |
| 335 | | 359 | |
| | 360 | .ifnc \type, qpel_bi |
| | 361 | function ff_vvc_put_\type\()_h8_8_neon, export=1 |
| | 362 | vvc_load_filter mx |
| | 363 | sub src, src, #3 |
| | 364 | mov mx, x30 |
| | 365 | .ifc \type, qpel |
| | 366 | mov dststride, #(VVC_MAX_PB_SIZE << 1) |
| | 367 | lsl x13, srcstride, #1 // srcstridel |
| | 368 | mov x14, #(VVC_MAX_PB_SIZE << 2) |
| | 369 | .else |
| | 370 | lsl x14, dststride, #1 // dststridel |
| | 371 | lsl x13, srcstride, #1 // srcstridel |
| | 372 | .endif |
| | 373 | b 1f |
| | 374 | endfunc |
| | 375 | .endif // !qpel_bi |
| | 376 | |
| 336 | function ff_hevc_put_hevc_\type\()_h8_8_neon, export=1 | 377 | function ff_hevc_put_hevc_\type\()_h8_8_neon, export=1 |
| 337 | load_filter mx | 378 | load_filter mx |
| 338 | .ifc \type, qpel_bi | 379 | .ifc \type, qpel_bi |
| 339 | mov x16, #(MAX_PB_SIZE << 2) // src2bstridel | 380 | mov x16, #(HEVC_MAX_PB_SIZE << 2) // src2bstridel |
| 340 | add x15, x4, #(MAX_PB_SIZE << 1) // src2b | 381 | add x15, x4, #(HEVC_MAX_PB_SIZE << 1) // src2b |
| 341 | .endif | 382 | .endif |
| 342 | sub src, src, #3 | 383 | sub src, src, #3 |
| 343 | mov mx, x30 | 384 | mov mx, x30 |
| 344 | .ifc \type, qpel | 385 | .ifc \type, qpel |
| 345 | mov dststride, #(MAX_PB_SIZE << 1) | 386 | mov dststride, #(HEVC_MAX_PB_SIZE << 1) |
| 346 | lsl x13, srcstride, #1 // srcstridel | 387 | lsl x13, srcstride, #1 // srcstridel |
| 347 | mov x14, #(MAX_PB_SIZE << 2) | 388 | mov x14, #(HEVC_MAX_PB_SIZE << 2) |
| 348 | .else | 389 | .else |
| 349 | lsl x14, dststride, #1 // dststridel | 390 | lsl x14, dststride, #1 // dststridel |
| 350 | lsl x13, srcstride, #1 // srcstridel | 391 | lsl x13, srcstride, #1 // srcstridel |
| 351 | .endif | 392 | .endif |
| | 393 | 1: |
| 352 | add x10, dst, dststride // dstb | 394 | add x10, dst, dststride // dstb |
| 353 | add x12, src, srcstride // srcb | 395 | add x12, src, srcstride // srcb |
| 354 | 0: ld1 {v16.8b, v17.8b}, [src], x13 | 396 | 0: ld1 {v16.8b, v17.8b}, [src], x13 |
| @@ -415,16 +457,16 @@ function ff_hevc_put_hevc_\type\()_h12_8_neon, export=1 · 60 unmodified lines |
| 415 | sxtw height, heightw | 457 | sxtw height, heightw |
| 416 | .ifc \type, qpel_bi | 458 | .ifc \type, qpel_bi |
| 417 | ldrh w8, [sp] // width | 459 | ldrh w8, [sp] // width |
| 418 | mov x16, #(MAX_PB_SIZE << 2) // src2bstridel | 460 | mov x16, #(HEVC_MAX_PB_SIZE << 2) // src2bstridel |
| 419 | lsl x17, height, #7 // src2b reset (height * (MAX_PB_SIZE << 1)) | 461 | lsl x17, height, #7 // src2b reset (height * (HEVC_MAX_PB_SIZE << 1)) |
| 420 | add x15, x4, #(MAX_PB_SIZE << 1) // src2b | 462 | add x15, x4, #(HEVC_MAX_PB_SIZE << 1) // src2b |
| 421 | .endif | 463 | .endif |
| 422 | sub src, src, #3 | 464 | sub src, src, #3 |
| 423 | mov mx, x30 | 465 | mov mx, x30 |
| 424 | .ifc \type, qpel | 466 | .ifc \type, qpel |
| 425 | mov dststride, #(MAX_PB_SIZE << 1) | 467 | mov dststride, #(HEVC_MAX_PB_SIZE << 1) |
| 426 | lsl x13, srcstride, #1 // srcstridel | 468 | lsl x13, srcstride, #1 // srcstridel |
| 427 | mov x14, #((MAX_PB_SIZE << 2) - 16) | 469 | mov x14, #((HEVC_MAX_PB_SIZE << 2) - 16) |
| 428 | .else | 470 | .else |
| 429 | lsl x14, dststride, #1 // dststridel | 471 | lsl x14, dststride, #1 // dststridel |
| 430 | lsl x13, srcstride, #1 // srcstridel | 472 | lsl x13, srcstride, #1 // srcstridel |
| @@ -497,25 +539,45 @@ function ff_hevc_put_hevc_\type\()_h12_8_neon, export=1 · 66 unmodified lines |
| 497 | ret mx | 539 | ret mx |
| 498 | endfunc | 540 | endfunc |
| 499 | | 541 | |
| | 542 | .ifnc \type, qpel_bi |
| | 543 | function ff_vvc_put_\type\()_h16_8_neon, export=1 |
| | 544 | vvc_load_filter mx |
| | 545 | sxtw height, heightw |
| | 546 | mov mx, x30 |
| | 547 | sub src, src, #3 |
| | 548 | mov mx, x30 |
| | 549 | .ifc \type, qpel |
| | 550 | mov dststride, #(VVC_MAX_PB_SIZE << 1) |
| | 551 | lsl x13, srcstride, #1 // srcstridel |
| | 552 | mov x14, #(VVC_MAX_PB_SIZE << 2) |
| | 553 | .else |
| | 554 | lsl x14, dststride, #1 // dststridel |
| | 555 | lsl x13, srcstride, #1 // srcstridel |
| | 556 | .endif |
| | 557 | b 0f |
| | 558 | endfunc |
| | 559 | .endif // !qpel_bi |
| | 560 | |
| 500 | function ff_hevc_put_hevc_\type\()_h16_8_neon, export=1 | 561 | function ff_hevc_put_hevc_\type\()_h16_8_neon, export=1 |
| 501 | load_filter mx | 562 | load_filter mx |
| 502 | sxtw height, heightw | 563 | sxtw height, heightw |
| 503 | mov mx, x30 | 564 | mov mx, x30 |
| 504 | .ifc \type, qpel_bi | 565 | .ifc \type, qpel_bi |
| 505 | ldrh w8, [sp] // width | 566 | ldrh w8, [sp] // width |
| 506 | mov x16, #(MAX_PB_SIZE << 2) // src2bstridel | 567 | mov x16, #(HEVC_MAX_PB_SIZE << 2) // src2bstridel |
| 507 | add x15, x4, #(MAX_PB_SIZE << 1) // src2b | 568 | add x15, x4, #(HEVC_MAX_PB_SIZE << 1) // src2b |
| 508 | .endif | 569 | .endif |
| 509 | sub src, src, #3 | 570 | sub src, src, #3 |
| 510 | mov mx, x30 | 571 | mov mx, x30 |
| 511 | .ifc \type, qpel | 572 | .ifc \type, qpel |
| 512 | mov dststride, #(MAX_PB_SIZE << 1) | 573 | mov dststride, #(HEVC_MAX_PB_SIZE << 1) |
| 513 | lsl x13, srcstride, #1 // srcstridel | 574 | lsl x13, srcstride, #1 // srcstridel |
| 514 | mov x14, #(MAX_PB_SIZE << 2) | 575 | mov x14, #(HEVC_MAX_PB_SIZE << 2) |
| 515 | .else | 576 | .else |
| 516 | lsl x14, dststride, #1 // dststridel | 577 | lsl x14, dststride, #1 // dststridel |
| 517 | lsl x13, srcstride, #1 // srcstridel | 578 | lsl x13, srcstride, #1 // srcstridel |
| 518 | .endif | 579 | .endif |
| | 580 | 0: |
| 519 | add x10, dst, dststride // dstb | 581 | add x10, dst, dststride // dstb |
| 520 | add x12, src, srcstride // srcb | 582 | add x12, src, srcstride // srcb |
| 521 | | 583 | |
| @@ -555,29 +617,51 @@ function ff_hevc_put_hevc_\type\()_h16_8_neon, export=1 · 33 unmodified lines |
| 555 | ret mx | 617 | ret mx |
| 556 | endfunc | 618 | endfunc |
| 557 | | 619 | |
| | 620 | .ifnc \type, qpel_bi |
| | 621 | function ff_vvc_put_\type\()_h32_8_neon, export=1 |
| | 622 | vvc_load_filter mx |
| | 623 | sxtw height, heightw |
| | 624 | mov mx, x30 |
| | 625 | sub src, src, #3 |
| | 626 | mov mx, x30 |
| | 627 | .ifc \type, qpel |
| | 628 | mov dststride, #(VVC_MAX_PB_SIZE << 1) |
| | 629 | lsl x13, srcstride, #1 // srcstridel |
| | 630 | mov x14, #(VVC_MAX_PB_SIZE << 2) |
| | 631 | sub x14, x14, width, uxtw #1 |
| | 632 | .else |
| | 633 | lsl x14, dststride, #1 // dststridel |
| | 634 | lsl x13, srcstride, #1 // srcstridel |
| | 635 | sub x14, x14, width, uxtw |
| | 636 | .endif |
| | 637 | b 1f |
| | 638 | endfunc |
| | 639 | .endif // !qpel_bi |
| | 640 | |
| 558 | function ff_hevc_put_hevc_\type\()_h32_8_neon, export=1 | 641 | function ff_hevc_put_hevc_\type\()_h32_8_neon, export=1 |
| 559 | load_filter mx | 642 | load_filter mx |
| 560 | sxtw height, heightw | 643 | sxtw height, heightw |
| 561 | mov mx, x30 | 644 | mov mx, x30 |
| 562 | .ifc \type, qpel_bi | 645 | .ifc \type, qpel_bi |
| 563 | ldrh w8, [sp] // width | 646 | ldrh w8, [sp] // width |
| 564 | mov x16, #(MAX_PB_SIZE << 2) // src2bstridel | 647 | mov x16, #(HEVC_MAX_PB_SIZE << 2) // src2bstridel |
| 565 | lsl x17, x5, #7 // src2b reset | 648 | lsl x17, x5, #7 // src2b reset |
| 566 | add x15, x4, #(MAX_PB_SIZE << 1) // src2b | 649 | add x15, x4, #(HEVC_MAX_PB_SIZE << 1) // src2b |
| 567 | sub x16, x16, width, uxtw #1 | 650 | sub x16, x16, width, uxtw #1 |
| 568 | .endif | 651 | .endif |
| 569 | sub src, src, #3 | 652 | sub src, src, #3 |
| 570 | mov mx, x30 | 653 | mov mx, x30 |
| 571 | .ifc \type, qpel | 654 | .ifc \type, qpel |
| 572 | mov dststride, #(MAX_PB_SIZE << 1) | 655 | mov dststride, #(HEVC_MAX_PB_SIZE << 1) |
| 573 | lsl x13, srcstride, #1 // srcstridel | 656 | lsl x13, srcstride, #1 // srcstridel |
| 574 | mov x14, #(MAX_PB_SIZE << 2) | 657 | mov x14, #(HEVC_MAX_PB_SIZE << 2) |
| 575 | sub x14, x14, width, uxtw #1 | 658 | sub x14, x14, width, uxtw #1 |
| 576 | .else | 659 | .else |
| 577 | lsl x14, dststride, #1 // dststridel | 660 | lsl x14, dststride, #1 // dststridel |
| 578 | lsl x13, srcstride, #1 // srcstridel | 661 | lsl x13, srcstride, #1 // srcstridel |
| 579 | sub x14, x14, width, uxtw | 662 | sub x14, x14, width, uxtw |
| 580 | .endif | 663 | .endif |
| | 664 | 1: |
| 581 | sub x13, x13, width, uxtw | 665 | sub x13, x13, width, uxtw |
| 582 | sub x13, x13, #8 | 666 | sub x13, x13, #8 |
| 583 | add x10, dst, dststride // dstb | 667 | add x10, dst, dststride // dstb |
| @@ -651,7 +735,7 @@ put_hevc qpel_bi · 67 unmodified lines |
| 651 | function ff_hevc_put_hevc_qpel_v4_8_neon, export=1 | 735 | function ff_hevc_put_hevc_qpel_v4_8_neon, export=1 |
| 652 | load_qpel_filterb x5, x4 | 736 | load_qpel_filterb x5, x4 |
| 653 | sub x1, x1, x2, lsl #1 | 737 | sub x1, x1, x2, lsl #1 |
| 654 | mov x9, #(MAX_PB_SIZE * 2) | 738 | mov x9, #(HEVC_MAX_PB_SIZE * 2) |
| 655 | sub x1, x1, x2 | 739 | sub x1, x1, x2 |
| 656 | ldr s16, [x1] | 740 | ldr s16, [x1] |
| 657 | ldr s17, [x1, x2] | 741 | ldr s17, [x1, x2] |
| @@ -680,7 +764,7 @@ endfunc · 22 unmodified lines |
| 680 | function ff_hevc_put_hevc_qpel_v6_8_neon, export=1 | 764 | function ff_hevc_put_hevc_qpel_v6_8_neon, export=1 |
| 681 | load_qpel_filterb x5, x4 | 765 | load_qpel_filterb x5, x4 |
| 682 | sub x1, x1, x2, lsl #1 | 766 | sub x1, x1, x2, lsl #1 |
| 683 | mov x9, #(MAX_PB_SIZE * 2 - 8) | 767 | mov x9, #(HEVC_MAX_PB_SIZE * 2 - 8) |
| 684 | sub x1, x1, x2 | 768 | sub x1, x1, x2 |
| 685 | ldr d16, [x1] | 769 | ldr d16, [x1] |
| 686 | ldr d17, [x1, x2] | 770 | ldr d17, [x1, x2] |
| @@ -709,7 +793,7 @@ endfunc · 22 unmodified lines |
| 709 | function ff_hevc_put_hevc_qpel_v8_8_neon, export=1 | 793 | function ff_hevc_put_hevc_qpel_v8_8_neon, export=1 |
| 710 | load_qpel_filterb x5, x4 | 794 | load_qpel_filterb x5, x4 |
| 711 | sub x1, x1, x2, lsl #1 | 795 | sub x1, x1, x2, lsl #1 |
| 712 | mov x9, #(MAX_PB_SIZE * 2) | 796 | mov x9, #(HEVC_MAX_PB_SIZE * 2) |
| 713 | sub x1, x1, x2 | 797 | sub x1, x1, x2 |
| 714 | ldr d16, [x1] | 798 | ldr d16, [x1] |
| 715 | ldr d17, [x1, x2] | 799 | ldr d17, [x1, x2] |
| @@ -737,7 +821,7 @@ endfunc · 21 unmodified lines |
| 737 | function ff_hevc_put_hevc_qpel_v12_8_neon, export=1 | 821 | function ff_hevc_put_hevc_qpel_v12_8_neon, export=1 |
| 738 | load_qpel_filterb x5, x4 | 822 | load_qpel_filterb x5, x4 |
| 739 | sub x1, x1, x2, lsl #1 | 823 | sub x1, x1, x2, lsl #1 |
| 740 | mov x9, #(MAX_PB_SIZE * 2 - 16) | 824 | mov x9, #(HEVC_MAX_PB_SIZE * 2 - 16) |
| 741 | sub x1, x1, x2 | 825 | sub x1, x1, x2 |
| 742 | ldr q16, [x1] | 826 | ldr q16, [x1] |
| 743 | ldr q17, [x1, x2] | 827 | ldr q17, [x1, x2] |
| @@ -768,7 +852,7 @@ endfunc · 24 unmodified lines |
| 768 | function ff_hevc_put_hevc_qpel_v16_8_neon, export=1 | 852 | function ff_hevc_put_hevc_qpel_v16_8_neon, export=1 |
| 769 | load_qpel_filterb x5, x4 | 853 | load_qpel_filterb x5, x4 |
| 770 | sub x1, x1, x2, lsl #1 | 854 | sub x1, x1, x2, lsl #1 |
| 771 | mov x9, #(MAX_PB_SIZE * 2) | 855 | mov x9, #(HEVC_MAX_PB_SIZE * 2) |
| 772 | sub x1, x1, x2 | 856 | sub x1, x1, x2 |
| 773 | ldr q16, [x1] | 857 | ldr q16, [x1] |
| 774 | ldr q17, [x1, x2] | 858 | ldr q17, [x1, x2] |
| @@ -802,7 +886,7 @@ function ff_hevc_put_hevc_qpel_v24_8_neon, export=1 · 27 unmodified lines |
| 802 | load_qpel_filterb x5, x4 | 886 | load_qpel_filterb x5, x4 |
| 803 | sub x1, x1, x2, lsl #1 | 887 | sub x1, x1, x2, lsl #1 |
| 804 | sub x1, x1, x2 | 888 | sub x1, x1, x2 |
| 805 | mov x9, #(MAX_PB_SIZE * 2) | 889 | mov x9, #(HEVC_MAX_PB_SIZE * 2) |
| 806 | ld1 {v16.16b, v17.16b}, [x1], x2 | 890 | ld1 {v16.16b, v17.16b}, [x1], x2 |
| 807 | ld1 {v18.16b, v19.16b}, [x1], x2 | 891 | ld1 {v18.16b, v19.16b}, [x1], x2 |
| 808 | ld1 {v20.16b, v21.16b}, [x1], x2 | 892 | ld1 {v20.16b, v21.16b}, [x1], x2 |
| @@ -833,7 +917,7 @@ function ff_hevc_put_hevc_qpel_v32_8_neon, export=1 · 24 unmodified lines |
| 833 | st1 {v8.8b-v11.8b}, [sp] | 917 | st1 {v8.8b-v11.8b}, [sp] |
| 834 | load_qpel_filterb x5, x4 | 918 | load_qpel_filterb x5, x4 |
| 835 | sub x1, x1, x2, lsl #1 | 919 | sub x1, x1, x2, lsl #1 |
| 836 | mov x9, #(MAX_PB_SIZE * 2) | 920 | mov x9, #(HEVC_MAX_PB_SIZE * 2) |
| 837 | sub x1, x1, x2 | 921 | sub x1, x1, x2 |
| 838 | ld1 {v16.16b, v17.16b}, [x1], x2 | 922 | ld1 {v16.16b, v17.16b}, [x1], x2 |
| 839 | ld1 {v18.16b, v19.16b}, [x1], x2 | 923 | ld1 {v18.16b, v19.16b}, [x1], x2 |
| @@ -883,7 +967,7 @@ function ff_hevc_put_hevc_qpel_v64_8_neon, export=1 · 43 unmodified lines |
| 883 | load_qpel_filterb x5, x4 | 967 | load_qpel_filterb x5, x4 |
| 884 | sub x1, x1, x2, lsl #1 | 968 | sub x1, x1, x2, lsl #1 |
| 885 | sub x1, x1, x2 | 969 | sub x1, x1, x2 |
| 886 | mov x9, #(MAX_PB_SIZE * 2) | 970 | mov x9, #(HEVC_MAX_PB_SIZE * 2) |
| 887 | 0: mov x8, x1 // src | 971 | 0: mov x8, x1 // src |
| 888 | ld1 {v16.16b, v17.16b}, [x8], x2 | 972 | ld1 {v16.16b, v17.16b}, [x8], x2 |
| 889 | mov w11, w3 // height | 973 | mov w11, w3 // height |
| @@ -921,7 +1005,7 @@ function ff_hevc_put_hevc_qpel_bi_v4_8_neon, export=1 · 31 unmodified lines |
| 921 | load_qpel_filterb x7, x6 | 1005 | load_qpel_filterb x7, x6 |
| 922 | sub x2, x2, x3, lsl #1 | 1006 | sub x2, x2, x3, lsl #1 |
| 923 | sub x2, x2, x3 | 1007 | sub x2, x2, x3 |
| 924 | mov x12, #(MAX_PB_SIZE * 2) | 1008 | mov x12, #(HEVC_MAX_PB_SIZE * 2) |
| 925 | ld1 {v16.s}[0], [x2], x3 | 1009 | ld1 {v16.s}[0], [x2], x3 |
| 926 | ld1 {v17.s}[0], [x2], x3 | 1010 | ld1 {v17.s}[0], [x2], x3 |
| 927 | ld1 {v18.s}[0], [x2], x3 | 1011 | ld1 {v18.s}[0], [x2], x3 |
| @@ -951,7 +1035,7 @@ function ff_hevc_put_hevc_qpel_bi_v6_8_neon, export=1 · 23 unmodified lines |
| 951 | ld1 {v16.8b}, [x2], x3 | 1035 | ld1 {v16.8b}, [x2], x3 |
| 952 | sub x1, x1, #4 | 1036 | sub x1, x1, #4 |
| 953 | ld1 {v17.8b}, [x2], x3 | 1037 | ld1 {v17.8b}, [x2], x3 |
| 954 | mov x12, #(MAX_PB_SIZE * 2) | 1038 | mov x12, #(HEVC_MAX_PB_SIZE * 2) |
| 955 | ld1 {v18.8b}, [x2], x3 | 1039 | ld1 {v18.8b}, [x2], x3 |
| 956 | ld1 {v19.8b}, [x2], x3 | 1040 | ld1 {v19.8b}, [x2], x3 |
| 957 | ld1 {v20.8b}, [x2], x3 | 1041 | ld1 {v20.8b}, [x2], x3 |
| @@ -977,7 +1061,7 @@ function ff_hevc_put_hevc_qpel_bi_v8_8_neon, export=1 · 19 unmodified lines |
| 977 | load_qpel_filterb x7, x6 | 1061 | load_qpel_filterb x7, x6 |
| 978 | sub x2, x2, x3, lsl #1 | 1062 | sub x2, x2, x3, lsl #1 |
| 979 | sub x2, x2, x3 | 1063 | sub x2, x2, x3 |
| 980 | mov x12, #(MAX_PB_SIZE * 2) | 1064 | mov x12, #(HEVC_MAX_PB_SIZE * 2) |
| 981 | ld1 {v16.8b}, [x2], x3 | 1065 | ld1 {v16.8b}, [x2], x3 |
| 982 | ld1 {v17.8b}, [x2], x3 | 1066 | ld1 {v17.8b}, [x2], x3 |
| 983 | ld1 {v18.8b}, [x2], x3 | 1067 | ld1 {v18.8b}, [x2], x3 |
| @@ -1006,7 +1090,7 @@ function ff_hevc_put_hevc_qpel_bi_v12_8_neon, export=1 · 22 unmodified lines |
| 1006 | sub x2, x2, x3 | 1090 | sub x2, x2, x3 |
| 1007 | sub x1, x1, #8 | 1091 | sub x1, x1, #8 |
| 1008 | ld1 {v16.16b}, [x2], x3 | 1092 | ld1 {v16.16b}, [x2], x3 |
| 1009 | mov x12, #(MAX_PB_SIZE * 2) | 1093 | mov x12, #(HEVC_MAX_PB_SIZE * 2) |
| 1010 | ld1 {v17.16b}, [x2], x3 | 1094 | ld1 {v17.16b}, [x2], x3 |
| 1011 | ld1 {v18.16b}, [x2], x3 | 1095 | ld1 {v18.16b}, [x2], x3 |
| 1012 | ld1 {v19.16b}, [x2], x3 | 1096 | ld1 {v19.16b}, [x2], x3 |
| @@ -1037,7 +1121,7 @@ function ff_hevc_put_hevc_qpel_bi_v16_8_neon, export=1 · 24 unmodified lines |
| 1037 | load_qpel_filterb x7, x6 | 1121 | load_qpel_filterb x7, x6 |
| 1038 | sub x2, x2, x3, lsl #1 | 1122 | sub x2, x2, x3, lsl #1 |
| 1039 | sub x2, x2, x3 | 1123 | sub x2, x2, x3 |
| 1040 | mov x12, #(MAX_PB_SIZE * 2) | 1124 | mov x12, #(HEVC_MAX_PB_SIZE * 2) |
| 1041 | ld1 {v16.16b}, [x2], x3 | 1125 | ld1 {v16.16b}, [x2], x3 |
| 1042 | ld1 {v17.16b}, [x2], x3 | 1126 | ld1 {v17.16b}, [x2], x3 |
| 1043 | ld1 {v18.16b}, [x2], x3 | 1127 | ld1 {v18.16b}, [x2], x3 |
| @@ -1092,7 +1176,7 @@ function ff_hevc_put_hevc_qpel_bi_v32_8_neon, export=1 · 48 unmodified lines |
| 1092 | sub x2, x2, x3 | 1176 | sub x2, x2, x3 |
| 1093 | load_qpel_filterb x7, x6 | 1177 | load_qpel_filterb x7, x6 |
| 1094 | ldr w6, [sp, #64] | 1178 | ldr w6, [sp, #64] |
| 1095 | mov x12, #(MAX_PB_SIZE * 2) | 1179 | mov x12, #(HEVC_MAX_PB_SIZE * 2) |
| 1096 | 0: mov x8, x2 // src | 1180 | 0: mov x8, x2 // src |
| 1097 | ld1 {v16.16b, v17.16b}, [x8], x3 | 1181 | ld1 {v16.16b, v17.16b}, [x8], x3 |
| 1098 | mov w11, w5 // height | 1182 | mov w11, w5 // height |
| @@ -2147,7 +2231,7 @@ function ff_hevc_put_hevc_qpel_uni_w_v64_8_neon, export=1 · 1048 unmodified lines |
| 2147 | endfunc | 2231 | endfunc |
| 2148 | | 2232 | |
| 2149 | function hevc_put_hevc_qpel_uni_hv4_8_end_neon | 2233 | function hevc_put_hevc_qpel_uni_hv4_8_end_neon |
| 2150 | mov x9, #(MAX_PB_SIZE * 2) | 2234 | mov x9, #(HEVC_MAX_PB_SIZE * 2) |
| 2151 | load_qpel_filterh x6, x5 | 2235 | load_qpel_filterh x6, x5 |
| 2152 | ldr d16, [sp] | 2236 | ldr d16, [sp] |
| 2153 | ldr d17, [sp, x9] | 2237 | ldr d17, [sp, x9] |
| @@ -2174,7 +2258,7 @@ function hevc_put_hevc_qpel_uni_hv4_8_end_neon · 20 unmodified lines |
| 2174 | endfunc | 2258 | endfunc |
| 2175 | | 2259 | |
| 2176 | function hevc_put_hevc_qpel_uni_hv6_8_end_neon | 2260 | function hevc_put_hevc_qpel_uni_hv6_8_end_neon |
| 2177 | mov x9, #(MAX_PB_SIZE * 2) | 2261 | mov x9, #(HEVC_MAX_PB_SIZE * 2) |
| 2178 | load_qpel_filterh x6, x5 | 2262 | load_qpel_filterh x6, x5 |
| 2179 | sub x1, x1, #4 | 2263 | sub x1, x1, #4 |
| 2180 | ldr q16, [sp] | 2264 | ldr q16, [sp] |
| @@ -2204,7 +2288,7 @@ function hevc_put_hevc_qpel_uni_hv6_8_end_neon · 23 unmodified lines |
| 2204 | endfunc | 2288 | endfunc |
| 2205 | | 2289 | |
| 2206 | function hevc_put_hevc_qpel_uni_hv8_8_end_neon | 2290 | function hevc_put_hevc_qpel_uni_hv8_8_end_neon |
| 2207 | mov x9, #(MAX_PB_SIZE * 2) | 2291 | mov x9, #(HEVC_MAX_PB_SIZE * 2) |
| 2208 | load_qpel_filterh x6, x5 | 2292 | load_qpel_filterh x6, x5 |
| 2209 | ldr q16, [sp] | 2293 | ldr q16, [sp] |
| 2210 | ldr q17, [sp, x9] | 2294 | ldr q17, [sp, x9] |
| @@ -2232,7 +2316,7 @@ function hevc_put_hevc_qpel_uni_hv8_8_end_neon · 21 unmodified lines |
| 2232 | endfunc | 2316 | endfunc |
| 2233 | | 2317 | |
| 2234 | function hevc_put_hevc_qpel_uni_hv12_8_end_neon | 2318 | function hevc_put_hevc_qpel_uni_hv12_8_end_neon |
| 2235 | mov x9, #(MAX_PB_SIZE * 2) | 2319 | mov x9, #(HEVC_MAX_PB_SIZE * 2) |
| 2236 | load_qpel_filterh x6, x5 | 2320 | load_qpel_filterh x6, x5 |
| 2237 | sub x1, x1, #8 | 2321 | sub x1, x1, #8 |
| 2238 | ld1 {v16.8h, v17.8h}, [sp], x9 | 2322 | ld1 {v16.8h, v17.8h}, [sp], x9 |
| @@ -2260,7 +2344,7 @@ function hevc_put_hevc_qpel_uni_hv12_8_end_neon · 21 unmodified lines |
| 2260 | endfunc | 2344 | endfunc |
| 2261 | | 2345 | |
| 2262 | function hevc_put_hevc_qpel_uni_hv16_8_end_neon | 2346 | function hevc_put_hevc_qpel_uni_hv16_8_end_neon |
| 2263 | mov x9, #(MAX_PB_SIZE * 2) | 2347 | mov x9, #(HEVC_MAX_PB_SIZE * 2) |
| 2264 | load_qpel_filterh x6, x5 | 2348 | load_qpel_filterh x6, x5 |
| 2265 | sub w12, w9, w7, lsl #1 | 2349 | sub w12, w9, w7, lsl #1 |
| 2266 | 0: mov x8, sp // src | 2350 | 0: mov x8, sp // src |
| @@ -3355,7 +3439,7 @@ endfunc · 1088 unmodified lines |
| 3355 | | 3439 | |
| 3356 | function ff_hevc_put_hevc_qpel_h4_8_neon_i8mm, export=1 | 3440 | function ff_hevc_put_hevc_qpel_h4_8_neon_i8mm, export=1 |
| 3357 | QPEL_H_HEADER | 3441 | QPEL_H_HEADER |
| 3358 | mov x10, #MAX_PB_SIZE * 2 | 3442 | mov x10, #HEVC_MAX_PB_SIZE * 2 |
| 3359 | 1: | 3443 | 1: |
| 3360 | ld1 {v0.16b}, [x1], x2 | 3444 | ld1 {v0.16b}, [x1], x2 |
| 3361 | ext v1.16b, v0.16b, v0.16b, #1 | 3445 | ext v1.16b, v0.16b, v0.16b, #1 |
| @@ -3378,7 +3462,7 @@ endfunc · 16 unmodified lines |
| 3378 | | 3462 | |
| 3379 | function ff_hevc_put_hevc_qpel_h6_8_neon_i8mm, export=1 | 3463 | function ff_hevc_put_hevc_qpel_h6_8_neon_i8mm, export=1 |
| 3380 | QPEL_H_HEADER | 3464 | QPEL_H_HEADER |
| 3381 | mov x10, #MAX_PB_SIZE * 2 | 3465 | mov x10, #HEVC_MAX_PB_SIZE * 2 |
| 3382 | add x15, x0, #8 | 3466 | add x15, x0, #8 |
| 3383 | 1: | 3467 | 1: |
| 3384 | ld1 {v0.16b}, [x1], x2 | 3468 | ld1 {v0.16b}, [x1], x2 |
| @@ -3411,7 +3495,7 @@ endfunc · 26 unmodified lines |
| 3411 | | 3495 | |
| 3412 | function ff_hevc_put_hevc_qpel_h8_8_neon_i8mm, export=1 | 3496 | function ff_hevc_put_hevc_qpel_h8_8_neon_i8mm, export=1 |
| 3413 | QPEL_H_HEADER | 3497 | QPEL_H_HEADER |
| 3414 | mov x10, #MAX_PB_SIZE * 2 | 3498 | mov x10, #HEVC_MAX_PB_SIZE * 2 |
| 3415 | 1: | 3499 | 1: |
| 3416 | ld1 {v0.16b}, [x1], x2 | 3500 | ld1 {v0.16b}, [x1], x2 |
| 3417 | ext v1.16b, v0.16b, v0.16b, #1 | 3501 | ext v1.16b, v0.16b, v0.16b, #1 |
| @@ -3457,7 +3541,7 @@ endfunc · 39 unmodified lines |
| 3457 | | 3541 | |
| 3458 | function ff_hevc_put_hevc_qpel_h12_8_neon_i8mm, export=1 | 3542 | function ff_hevc_put_hevc_qpel_h12_8_neon_i8mm, export=1 |
| 3459 | QPEL_H_HEADER | 3543 | QPEL_H_HEADER |
| 3460 | mov x10, #MAX_PB_SIZE * 2 | 3544 | mov x10, #HEVC_MAX_PB_SIZE * 2 |
| 3461 | add x15, x0, #16 | 3545 | add x15, x0, #16 |
| 3462 | 1: | 3546 | 1: |
| 3463 | ld1 {v16.16b, v17.16b}, [x1], x2 | 3547 | ld1 {v16.16b, v17.16b}, [x1], x2 |
| @@ -3495,7 +3579,7 @@ endfunc · 31 unmodified lines |
| 3495 | | 3579 | |
| 3496 | function ff_hevc_put_hevc_qpel_h16_8_neon_i8mm, export=1 | 3580 | function ff_hevc_put_hevc_qpel_h16_8_neon_i8mm, export=1 |
| 3497 | QPEL_H_HEADER | 3581 | QPEL_H_HEADER |
| 3498 | mov x10, #MAX_PB_SIZE * 2 | 3582 | mov x10, #HEVC_MAX_PB_SIZE * 2 |
| 3499 | 1: | 3583 | 1: |
| 3500 | ld1 {v16.16b, v17.16b}, [x1], x2 | 3584 | ld1 {v16.16b, v17.16b}, [x1], x2 |
| 3501 | ext v1.16b, v16.16b, v17.16b, #1 | 3585 | ext v1.16b, v16.16b, v17.16b, #1 |
| @@ -3533,7 +3617,7 @@ endfunc · 31 unmodified lines |
| 3533 | | 3617 | |
| 3534 | function ff_hevc_put_hevc_qpel_h24_8_neon_i8mm, export=1 | 3618 | function ff_hevc_put_hevc_qpel_h24_8_neon_i8mm, export=1 |
| 3535 | QPEL_H_HEADER | 3619 | QPEL_H_HEADER |
| 3536 | mov x10, #MAX_PB_SIZE * 2 | 3620 | mov x10, #HEVC_MAX_PB_SIZE * 2 |
| 3537 | add x15, x0, #32 | 3621 | add x15, x0, #32 |
| 3538 | 1: | 3622 | 1: |
| 3539 | ld1 {v16.16b, v17.16b}, [x1], x2 | 3623 | ld1 {v16.16b, v17.16b}, [x1], x2 |
| @@ -3585,7 +3669,7 @@ endfunc · 45 unmodified lines |
| 3585 | | 3669 | |
| 3586 | function ff_hevc_put_hevc_qpel_h32_8_neon_i8mm, export=1 | 3670 | function ff_hevc_put_hevc_qpel_h32_8_neon_i8mm, export=1 |
| 3587 | QPEL_H_HEADER | 3671 | QPEL_H_HEADER |
| 3588 | mov x10, #MAX_PB_SIZE * 2 | 3672 | mov x10, #HEVC_MAX_PB_SIZE * 2 |
| 3589 | add x15, x0, #32 | 3673 | add x15, x0, #32 |
| 3590 | 1: | 3674 | 1: |
| 3591 | ld1 {v16.16b, v17.16b, v18.16b}, [x1], x2 | 3675 | ld1 {v16.16b, v17.16b, v18.16b}, [x1], x2 |
| @@ -3642,7 +3726,7 @@ endfunc · 50 unmodified lines |
| 3642 | | 3726 | |
| 3643 | function ff_hevc_put_hevc_qpel_h48_8_neon_i8mm, export=1 | 3727 | function ff_hevc_put_hevc_qpel_h48_8_neon_i8mm, export=1 |
| 3644 | QPEL_H_HEADER | 3728 | QPEL_H_HEADER |
| 3645 | mov x10, #MAX_PB_SIZE * 2 - 64 | 3729 | mov x10, #HEVC_MAX_PB_SIZE * 2 - 64 |
| 3646 | 1: | 3730 | 1: |
| 3647 | ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x1], x2 | 3731 | ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x1], x2 |
| 3648 | ext v1.16b, v16.16b, v17.16b, #1 | 3732 | ext v1.16b, v16.16b, v17.16b, #1 |
| @@ -4173,7 +4257,7 @@ DISABLE_I8MM · 524 unmodified lines |
| 4173 | stp x24, x25, [sp, #48] | 4257 | stp x24, x25, [sp, #48] |
| 4174 | stp x26, x27, [sp, #64] | 4258 | stp x26, x27, [sp, #64] |
| 4175 | mov x19, sp | 4259 | mov x19, sp |
| 4176 | mov x11, #(MAX_PB_SIZE*(MAX_PB_SIZE+8)*2) | 4260 | mov x11, #(HEVC_MAX_PB_SIZE*(HEVC_MAX_PB_SIZE+8)*2) |
| 4177 | sub sp, sp, x11 | 4261 | sub sp, sp, x11 |
| 4178 | mov x20, x0 | 4262 | mov x20, x0 |
| 4179 | mov x21, x1 | 4263 | mov x21, x1 |
| @@ -4204,7 +4288,7 @@ DISABLE_I8MM · 24 unmodified lines |
| 4204 | add x9, x9, x23, lsl #3 | 4288 | add x9, x9, x23, lsl #3 |
| 4205 | ld1 {v0.8b}, [x9] | 4289 | ld1 {v0.8b}, [x9] |
| 4206 | sxtl v0.8h, v0.8b | 4290 | sxtl v0.8h, v0.8b |
| 4207 | mov x10, #(MAX_PB_SIZE * 2) | 4291 | mov x10, #(HEVC_MAX_PB_SIZE * 2) |
| 4208 | dup v28.4s, w24 | 4292 | dup v28.4s, w24 |
| 4209 | dup v29.4s, w25 | 4293 | dup v29.4s, w25 |
| 4210 | dup v30.4s, w26 | 4294 | dup v30.4s, w26 |
| @@ -4591,7 +4675,7 @@ endfunc · 380 unmodified lines |
| 4591 | qpel_uni_w_hv neon | 4675 | qpel_uni_w_hv neon |
| 4592 | | 4676 | |
| 4593 | function hevc_put_hevc_qpel_bi_hv4_8_end_neon | 4677 | function hevc_put_hevc_qpel_bi_hv4_8_end_neon |
| 4594 | mov x9, #(MAX_PB_SIZE * 2) | 4678 | mov x9, #(HEVC_MAX_PB_SIZE * 2) |
| 4595 | load_qpel_filterh x7, x6 | 4679 | load_qpel_filterh x7, x6 |
| 4596 | ld1 {v16.4h}, [sp], x9 | 4680 | ld1 {v16.4h}, [sp], x9 |
| 4597 | ld1 {v17.4h}, [sp], x9 | 4681 | ld1 {v17.4h}, [sp], x9 |
| @@ -4617,7 +4701,7 @@ function hevc_put_hevc_qpel_bi_hv4_8_end_neon · 19 unmodified lines |
| 4617 | endfunc | 4701 | endfunc |
| 4618 | | 4702 | |
| 4619 | function hevc_put_hevc_qpel_bi_hv6_8_end_neon | 4703 | function hevc_put_hevc_qpel_bi_hv6_8_end_neon |
| 4620 | mov x9, #(MAX_PB_SIZE * 2) | 4704 | mov x9, #(HEVC_MAX_PB_SIZE * 2) |
| 4621 | load_qpel_filterh x7, x6 | 4705 | load_qpel_filterh x7, x6 |
| 4622 | sub x1, x1, #4 | 4706 | sub x1, x1, #4 |
| 4623 | ld1 {v16.8h}, [sp], x9 | 4707 | ld1 {v16.8h}, [sp], x9 |
| @@ -4648,7 +4732,7 @@ function hevc_put_hevc_qpel_bi_hv6_8_end_neon · 24 unmodified lines |
| 4648 | endfunc | 4732 | endfunc |
| 4649 | | 4733 | |
| 4650 | function hevc_put_hevc_qpel_bi_hv8_8_end_neon | 4734 | function hevc_put_hevc_qpel_bi_hv8_8_end_neon |
| 4651 | mov x9, #(MAX_PB_SIZE * 2) | 4735 | mov x9, #(HEVC_MAX_PB_SIZE * 2) |
| 4652 | load_qpel_filterh x7, x6 | 4736 | load_qpel_filterh x7, x6 |
| 4653 | ld1 {v16.8h}, [sp], x9 | 4737 | ld1 {v16.8h}, [sp], x9 |
| 4654 | ld1 {v17.8h}, [sp], x9 | 4738 | ld1 {v17.8h}, [sp], x9 |
| @@ -4678,7 +4762,7 @@ endfunc · 23 unmodified lines |
| 4678 | | 4762 | |
| 4679 | function hevc_put_hevc_qpel_bi_hv16_8_end_neon | 4763 | function hevc_put_hevc_qpel_bi_hv16_8_end_neon |
| 4680 | load_qpel_filterh x7, x8 | 4764 | load_qpel_filterh x7, x8 |
| 4681 | mov x9, #(MAX_PB_SIZE * 2) | 4765 | mov x9, #(HEVC_MAX_PB_SIZE * 2) |
| 4682 | mov x10, x6 | 4766 | mov x10, x6 |
| 4683 | 0: mov x8, sp // src | 4767 | 0: mov x8, sp // src |
| 4684 | ld1 {v16.8h, v17.8h}, [x8], x9 | 4768 | ld1 {v16.8h, v17.8h}, [x8], x9 |