| @@ -72,6 +72,11 @@ endconst · 71 unmodified lines |
| 72 | sxtl v0.8h, v0.8b | 72 | sxtl v0.8h, v0.8b |
| 73 | .endm | 73 | .endm |
| 74 | | 74 | |
| | 75 | .macro vvc_load_epel_filterh freg |
| | 76 | ld1 {v0.8b}, [\freg] |
| | 77 | sxtl v0.8h, v0.8b |
| | 78 | .endm |
| | 79 | |
| 75 | .macro calc_epelh dst, src0, src1, src2, src3 | 80 | .macro calc_epelh dst, src0, src1, src2, src3 |
| 76 | smull \dst\().4s, \src0\().4h, v0.h[0] | 81 | smull \dst\().4s, \src0\().4h, v0.h[0] |
| 77 | smlal \dst\().4s, \src1\().4h, v0.h[1] | 82 | smlal \dst\().4s, \src1\().4h, v0.h[1] |
| @@ -2299,10 +2304,16 @@ endfunc · 2221 unmodified lines |
| 2299 | DISABLE_I8MM | 2304 | DISABLE_I8MM |
| 2300 | #endif | 2305 | #endif |
| 2301 | | 2306 | |
| | 2307 | function vvc_put_epel_hv4_8_end_neon |
| | 2308 | vvc_load_epel_filterh x5 |
| | 2309 | mov x10, #(VVC_MAX_PB_SIZE * 2) |
| | 2310 | b 0f |
| | 2311 | endfunc |
| 2302 | | 2312 | |
| 2303 | function hevc_put_hevc_epel_hv4_8_end_neon | 2313 | function hevc_put_hevc_epel_hv4_8_end_neon |
| 2304 | load_epel_filterh x5, x4 | 2314 | load_epel_filterh x5, x4 |
| 2305 | mov x10, #(HEVC_MAX_PB_SIZE * 2) | 2315 | mov x10, #(HEVC_MAX_PB_SIZE * 2) |
| | 2316 | 0: |
| 2306 | ldr d16, [sp] | 2317 | ldr d16, [sp] |
| 2307 | ldr d17, [sp, x10] | 2318 | ldr d17, [sp, x10] |
| 2308 | add sp, sp, x10, lsl #1 | 2319 | add sp, sp, x10, lsl #1 |
| @@ -2339,9 +2350,16 @@ function hevc_put_hevc_epel_hv6_8_end_neon · 30 unmodified lines |
| 2339 | 2: ret | 2350 | 2: ret |
| 2340 | endfunc | 2351 | endfunc |
| 2341 | | 2352 | |
| | 2353 | function vvc_put_epel_hv8_8_end_neon |
| | 2354 | vvc_load_epel_filterh x5 |
| | 2355 | mov x10, #(VVC_MAX_PB_SIZE * 2) |
| | 2356 | b 0f |
| | 2357 | endfunc |
| | 2358 | |
| 2342 | function hevc_put_hevc_epel_hv8_8_end_neon | 2359 | function hevc_put_hevc_epel_hv8_8_end_neon |
| 2343 | load_epel_filterh x5, x4 | 2360 | load_epel_filterh x5, x4 |
| 2344 | mov x10, #(HEVC_MAX_PB_SIZE * 2) | 2361 | mov x10, #(HEVC_MAX_PB_SIZE * 2) |
| | 2362 | 0: |
| 2345 | ldr q16, [sp] | 2363 | ldr q16, [sp] |
| 2346 | ldr q17, [sp, x10] | 2364 | ldr q17, [sp, x10] |
| 2347 | add sp, sp, x10, lsl #1 | 2365 | add sp, sp, x10, lsl #1 |
| @@ -2379,9 +2397,16 @@ function hevc_put_hevc_epel_hv12_8_end_neon · 31 unmodified lines |
| 2379 | 2: ret | 2397 | 2: ret |
| 2380 | endfunc | 2398 | endfunc |
| 2381 | | 2399 | |
| | 2400 | function vvc_put_epel_hv16_8_end_neon |
| | 2401 | vvc_load_epel_filterh x5 |
| | 2402 | mov x10, #(VVC_MAX_PB_SIZE * 2) |
| | 2403 | b 0f |
| | 2404 | endfunc |
| | 2405 | |
| 2382 | function hevc_put_hevc_epel_hv16_8_end_neon | 2406 | function hevc_put_hevc_epel_hv16_8_end_neon |
| 2383 | load_epel_filterh x5, x4 | 2407 | load_epel_filterh x5, x4 |
| 2384 | mov x10, #(HEVC_MAX_PB_SIZE * 2) | 2408 | mov x10, #(HEVC_MAX_PB_SIZE * 2) |
| | 2409 | 0: |
| 2385 | ld1 {v16.8h, v17.8h}, [sp], x10 | 2410 | ld1 {v16.8h, v17.8h}, [sp], x10 |
| 2386 | ld1 {v18.8h, v19.8h}, [sp], x10 | 2411 | ld1 {v18.8h, v19.8h}, [sp], x10 |
| 2387 | ld1 {v20.8h, v21.8h}, [sp], x10 | 2412 | ld1 {v20.8h, v21.8h}, [sp], x10 |
| @@ -2437,6 +2462,21 @@ function ff_hevc_put_hevc_epel_hv4_8_\suffix, export=1 · 49 unmodified lines |
| 2437 | b hevc_put_hevc_epel_hv4_8_end_neon | 2462 | b hevc_put_hevc_epel_hv4_8_end_neon |
| 2438 | endfunc | 2463 | endfunc |
| 2439 | | 2464 | |
| | 2465 | function ff_vvc_put_epel_hv4_8_\suffix, export=1 |
| | 2466 | add w10, w3, #3 |
| | 2467 | lsl x10, x10, #8 |
| | 2468 | sub sp, sp, x10 // tmp_array |
| | 2469 | stp x5, x30, [sp, #-32]! |
| | 2470 | stp x0, x3, [sp, #16] |
| | 2471 | add x0, sp, #32 |
| | 2472 | sub x1, x1, x2 |
| | 2473 | add w3, w3, #3 |
| | 2474 | bl X(ff_vvc_put_epel_h4_8_\suffix) |
| | 2475 | ldp x0, x3, [sp, #16] |
| | 2476 | ldp x5, x30, [sp], #32 |
| | 2477 | b vvc_put_epel_hv4_8_end_neon |
| | 2478 | endfunc |
| | 2479 | |
| 2440 | function ff_hevc_put_hevc_epel_hv6_8_\suffix, export=1 | 2480 | function ff_hevc_put_hevc_epel_hv6_8_\suffix, export=1 |
| 2441 | add w10, w3, #3 | 2481 | add w10, w3, #3 |
| 2442 | lsl x10, x10, #7 | 2482 | lsl x10, x10, #7 |
| @@ -2467,6 +2507,21 @@ function ff_hevc_put_hevc_epel_hv8_8_\suffix, export=1 · 24 unmodified lines |
| 2467 | b hevc_put_hevc_epel_hv8_8_end_neon | 2507 | b hevc_put_hevc_epel_hv8_8_end_neon |
| 2468 | endfunc | 2508 | endfunc |
| 2469 | | 2509 | |
| | 2510 | function ff_vvc_put_epel_hv8_8_\suffix, export=1 |
| | 2511 | add w10, w3, #3 |
| | 2512 | lsl x10, x10, #8 |
| | 2513 | sub sp, sp, x10 // tmp_array |
| | 2514 | stp x5, x30, [sp, #-32]! |
| | 2515 | stp x0, x3, [sp, #16] |
| | 2516 | add x0, sp, #32 |
| | 2517 | sub x1, x1, x2 |
| | 2518 | add w3, w3, #3 |
| | 2519 | bl X(ff_vvc_put_epel_h8_8_\suffix) |
| | 2520 | ldp x0, x3, [sp, #16] |
| | 2521 | ldp x5, x30, [sp], #32 |
| | 2522 | b vvc_put_epel_hv8_8_end_neon |
| | 2523 | endfunc |
| | 2524 | |
| 2470 | function ff_hevc_put_hevc_epel_hv12_8_\suffix, export=1 | 2525 | function ff_hevc_put_hevc_epel_hv12_8_\suffix, export=1 |
| 2471 | add w10, w3, #3 | 2526 | add w10, w3, #3 |
| 2472 | lsl x10, x10, #7 | 2527 | lsl x10, x10, #7 |
| @@ -2497,6 +2552,21 @@ function ff_hevc_put_hevc_epel_hv16_8_\suffix, export=1 · 24 unmodified lines |
| 2497 | b hevc_put_hevc_epel_hv16_8_end_neon | 2552 | b hevc_put_hevc_epel_hv16_8_end_neon |
| 2498 | endfunc | 2553 | endfunc |
| 2499 | | 2554 | |
| | 2555 | function ff_vvc_put_epel_hv16_8_\suffix, export=1 |
| | 2556 | add w10, w3, #3 |
| | 2557 | lsl x10, x10, #8 |
| | 2558 | sub sp, sp, x10 // tmp_array |
| | 2559 | stp x5, x30, [sp, #-32]! |
| | 2560 | stp x0, x3, [sp, #16] |
| | 2561 | add x0, sp, #32 |
| | 2562 | sub x1, x1, x2 |
| | 2563 | add w3, w3, #3 |
| | 2564 | bl X(ff_vvc_put_epel_h16_8_\suffix) |
| | 2565 | ldp x0, x3, [sp, #16] |
| | 2566 | ldp x5, x30, [sp], #32 |
| | 2567 | b vvc_put_epel_hv16_8_end_neon |
| | 2568 | endfunc |
| | 2569 | |
| 2500 | function ff_hevc_put_hevc_epel_hv24_8_\suffix, export=1 | 2570 | function ff_hevc_put_hevc_epel_hv24_8_\suffix, export=1 |
| 2501 | add w10, w3, #3 | 2571 | add w10, w3, #3 |
| 2502 | lsl x10, x10, #7 | 2572 | lsl x10, x10, #7 |
| @@ -2530,6 +2600,24 @@ function ff_hevc_put_hevc_epel_hv32_8_\suffix, export=1 · 27 unmodified lines |
| 2530 | ret | 2600 | ret |
| 2531 | endfunc | 2601 | endfunc |
| 2532 | | 2602 | |
| | 2603 | function ff_vvc_put_epel_hv32_8_\suffix, export=1 |
| | 2604 | stp x4, x5, [sp, #-64]! |
| | 2605 | stp x2, x3, [sp, #16] |
| | 2606 | stp x0, x1, [sp, #32] |
| | 2607 | str x30, [sp, #48] |
| | 2608 | mov x6, #16 |
| | 2609 | bl X(ff_vvc_put_epel_hv16_8_\suffix) |
| | 2610 | ldp x0, x1, [sp, #32] |
| | 2611 | ldp x2, x3, [sp, #16] |
| | 2612 | ldp x4, x5, [sp], #48 |
| | 2613 | add x0, x0, #32 |
| | 2614 | add x1, x1, #16 |
| | 2615 | mov x6, #16 |
| | 2616 | bl X(ff_vvc_put_epel_hv16_8_\suffix) |
| | 2617 | ldr x30, [sp], #16 |
| | 2618 | ret |
| | 2619 | endfunc |
| | 2620 | |
| 2533 | function ff_hevc_put_hevc_epel_hv48_8_\suffix, export=1 | 2621 | function ff_hevc_put_hevc_epel_hv48_8_\suffix, export=1 |
| 2534 | stp x4, x5, [sp, #-64]! | 2622 | stp x4, x5, [sp, #-64]! |
| 2535 | stp x2, x3, [sp, #16] | 2623 | stp x2, x3, [sp, #16] |
| @@ -2579,6 +2667,43 @@ function ff_hevc_put_hevc_epel_hv64_8_\suffix, export=1 · 43 unmodified lines |
| 2579 | ldr x30, [sp], #16 | 2667 | ldr x30, [sp], #16 |
| 2580 | ret | 2668 | ret |
| 2581 | endfunc | 2669 | endfunc |
| | 2670 | |
| | 2671 | function ff_vvc_put_epel_hv64_8_\suffix, export=1 |
| | 2672 | stp x4, x5, [sp, #-64]! |
| | 2673 | stp x2, x3, [sp, #16] |
| | 2674 | stp x0, x1, [sp, #32] |
| | 2675 | str x30, [sp, #48] |
| | 2676 | mov x6, #32 |
| | 2677 | bl X(ff_vvc_put_epel_hv32_8_\suffix) |
| | 2678 | ldp x0, x1, [sp, #32] |
| | 2679 | ldp x2, x3, [sp, #16] |
| | 2680 | ldp x4, x5, [sp], #48 |
| | 2681 | add x0, x0, #64 |
| | 2682 | add x1, x1, #32 |
| | 2683 | mov x6, #32 |
| | 2684 | bl X(ff_vvc_put_epel_hv32_8_\suffix) |
| | 2685 | ldr x30, [sp], #16 |
| | 2686 | ret |
| | 2687 | endfunc |
| | 2688 | |
| | 2689 | function ff_vvc_put_epel_hv128_8_\suffix, export=1 |
| | 2690 | stp x4, x5, [sp, #-64]! |
| | 2691 | stp x2, x3, [sp, #16] |
| | 2692 | stp x0, x1, [sp, #32] |
| | 2693 | str x30, [sp, #48] |
| | 2694 | mov x6, #64 |
| | 2695 | bl X(ff_vvc_put_epel_hv64_8_\suffix) |
| | 2696 | ldp x0, x1, [sp, #32] |
| | 2697 | ldp x2, x3, [sp, #16] |
| | 2698 | ldp x4, x5, [sp], #48 |
| | 2699 | add x0, x0, #128 |
| | 2700 | add x1, x1, #64 |
| | 2701 | mov x6, #64 |
| | 2702 | bl X(ff_vvc_put_epel_hv64_8_\suffix) |
| | 2703 | ldr x30, [sp], #16 |
| | 2704 | ret |
| | 2705 | endfunc |
| | 2706 | |
| 2582 | .endm | 2707 | .endm |
| 2583 | | 2708 | |
| 2584 | epel_hv neon | 2709 | epel_hv neon |