| @@ -4140,9 +4140,15 @@ endfunc · 4139 unmodified lines |
| 4140 | 4140 | DISABLE_I8MM |
| 4141 | 4141 | #endif |
| 4142 | 4142 | |
| 4143 | +function vvc_put_qpel_hv4_8_end_neon |
| 4144 | + vvc_load_qpel_filterh x5 |
| 4145 | + mov x7, #(VVC_MAX_PB_SIZE * 2) |
| 4146 | + b 1f |
| 4147 | +endfunc |
| 4143 | 4148 | |
| 4144 | 4149 | function hevc_put_hevc_qpel_hv4_8_end_neon |
| 4145 | 4150 | load_qpel_filterh x5, x4 |
| 4151 | +1: |
| 4146 | 4152 | ldr d16, [sp] |
| 4147 | 4153 | ldr d17, [sp, x7] |
| 4148 | 4154 | add sp, sp, x7, lsl #1 |
| @@ -4194,9 +4200,16 @@ function hevc_put_hevc_qpel_hv6_8_end_neon · 45 unmodified lines |
| 4194 | 4200 | ret |
| 4195 | 4201 | endfunc |
| 4196 | 4202 | |
| 4203 | +function vvc_put_qpel_hv8_8_end_neon |
| 4204 | + vvc_load_qpel_filterh x5 |
| 4205 | + mov x7, #(VVC_MAX_PB_SIZE * 2) |
| 4206 | + b 1f |
| 4207 | +endfunc |
| 4208 | + |
| 4197 | 4209 | function hevc_put_hevc_qpel_hv8_8_end_neon |
| 4198 | 4210 | mov x7, #128 |
| 4199 | 4211 | load_qpel_filterh x5, x4 |
| 4212 | +1: |
| 4200 | 4213 | ldr q16, [sp] |
| 4201 | 4214 | ldr q17, [sp, x7] |
| 4202 | 4215 | add sp, sp, x7, lsl #1 |
| @@ -4247,9 +4260,16 @@ function hevc_put_hevc_qpel_hv12_8_end_neon · 44 unmodified lines |
| 4247 | 4260 | ret |
| 4248 | 4261 | endfunc |
| 4249 | 4262 | |
| 4263 | +function vvc_put_qpel_hv16_8_end_neon |
| 4264 | + vvc_load_qpel_filterh x5 |
| 4265 | + mov x7, #(VVC_MAX_PB_SIZE * 2) |
| 4266 | + b 1f |
| 4267 | +endfunc |
| 4268 | + |
| 4250 | 4269 | function hevc_put_hevc_qpel_hv16_8_end_neon |
| 4251 | 4270 | mov x7, #128 |
| 4252 | 4271 | load_qpel_filterh x5, x4 |
| 4272 | +1: |
| 4253 | 4273 | ld1 {v16.8h, v17.8h}, [sp], x7 |
| 4254 | 4274 | ld1 {v18.8h, v19.8h}, [sp], x7 |
| 4255 | 4275 | ld1 {v20.8h, v21.8h}, [sp], x7 |
| @@ -4272,6 +4292,12 @@ function hevc_put_hevc_qpel_hv16_8_end_neon · 16 unmodified lines |
| 4272 | 4292 | ret |
| 4273 | 4293 | endfunc |
| 4274 | 4294 | |
| 4295 | +function vvc_put_qpel_hv32_8_end_neon |
| 4296 | + vvc_load_qpel_filterh x5 |
| 4297 | + mov x7, #(VVC_MAX_PB_SIZE * 2) |
| 4298 | + b 0f |
| 4299 | +endfunc |
| 4300 | + |
| 4275 | 4301 | function hevc_put_hevc_qpel_hv32_8_end_neon |
| 4276 | 4302 | mov x7, #128 |
| 4277 | 4303 | load_qpel_filterh x5, x4 |
| @@ -4325,6 +4351,25 @@ function ff_hevc_put_hevc_qpel_hv4_8_\suffix, export=1 · 47 unmodified lines |
| 4325 | 4351 | b hevc_put_hevc_qpel_hv4_8_end_neon |
| 4326 | 4352 | endfunc |
| 4327 | 4353 | |
| 4354 | +function ff_vvc_put_qpel_hv4_8_\suffix, export=1 |
| 4355 | + add w10, w3, #8 |
| 4356 | + lsl x10, x10, #8 |
| 4357 | + mov x14, sp |
| 4358 | + sub sp, sp, x10 // tmp_array |
| 4359 | + stp x5, x30, [sp, #-48]! |
| 4360 | + stp x0, x3, [sp, #16] |
| 4361 | + str x14, [sp, #32] |
| 4362 | + add x0, sp, #48 |
| 4363 | + sub x1, x1, x2, lsl #1 |
| 4364 | + add x3, x3, #7 |
| 4365 | + sub x1, x1, x2 |
| 4366 | + bl X(ff_vvc_put_qpel_h4_8_\suffix) |
| 4367 | + ldr x14, [sp, #32] |
| 4368 | + ldp x0, x3, [sp, #16] |
| 4369 | + ldp x5, x30, [sp], #48 |
| 4370 | + b vvc_put_qpel_hv4_8_end_neon |
| 4371 | +endfunc |
| 4372 | + |
| 4328 | 4373 | function ff_hevc_put_hevc_qpel_hv6_8_\suffix, export=1 |
| 4329 | 4374 | add w10, w3, #8 |
| 4330 | 4375 | mov x7, #128 |
| @@ -4364,6 +4409,25 @@ function ff_hevc_put_hevc_qpel_hv8_8_\suffix, export=1 · 33 unmodified lines |
| 4364 | 4409 | b hevc_put_hevc_qpel_hv8_8_end_neon |
| 4365 | 4410 | endfunc |
| 4366 | 4411 | |
| 4412 | +function ff_vvc_put_qpel_hv8_8_\suffix, export=1 |
| 4413 | + add w10, w3, #8 |
| 4414 | + lsl x10, x10, #8 |
| 4415 | + sub x1, x1, x2, lsl #1 |
| 4416 | + mov x14, sp |
| 4417 | + sub sp, sp, x10 // tmp_array |
| 4418 | + stp x5, x30, [sp, #-48]! |
| 4419 | + stp x0, x3, [sp, #16] |
| 4420 | + str x14, [sp, #32] |
| 4421 | + add x0, sp, #48 |
| 4422 | + add x3, x3, #7 |
| 4423 | + sub x1, x1, x2 |
| 4424 | + bl X(ff_vvc_put_qpel_h8_8_\suffix) |
| 4425 | + ldr x14, [sp, #32] |
| 4426 | + ldp x0, x3, [sp, #16] |
| 4427 | + ldp x5, x30, [sp], #48 |
| 4428 | + b vvc_put_qpel_hv8_8_end_neon |
| 4429 | +endfunc |
| 4430 | + |
| 4367 | 4431 | function ff_hevc_put_hevc_qpel_hv12_8_\suffix, export=1 |
| 4368 | 4432 | add w10, w3, #8 |
| 4369 | 4433 | lsl x10, x10, #7 |
| @@ -4403,6 +4467,25 @@ function ff_hevc_put_hevc_qpel_hv16_8_\suffix, export=1 · 33 unmodified lines |
| 4403 | 4467 | b hevc_put_hevc_qpel_hv16_8_end_neon |
| 4404 | 4468 | endfunc |
| 4405 | 4469 | |
| 4470 | +function ff_vvc_put_qpel_hv16_8_\suffix, export=1 |
| 4471 | + add w10, w3, #8 |
| 4472 | + lsl x10, x10, #8 |
| 4473 | + sub x1, x1, x2, lsl #1 |
| 4474 | + mov x14, sp |
| 4475 | + sub sp, sp, x10 // tmp_array |
| 4476 | + stp x5, x30, [sp, #-48]! |
| 4477 | + stp x0, x3, [sp, #16] |
| 4478 | + str x14, [sp, #32] |
| 4479 | + add x3, x3, #7 |
| 4480 | + add x0, sp, #48 |
| 4481 | + sub x1, x1, x2 |
| 4482 | + bl X(ff_vvc_put_qpel_h16_8_\suffix) |
| 4483 | + ldr x14, [sp, #32] |
| 4484 | + ldp x0, x3, [sp, #16] |
| 4485 | + ldp x5, x30, [sp], #48 |
| 4486 | + b vvc_put_qpel_hv16_8_end_neon |
| 4487 | +endfunc |
| 4488 | + |
| 4406 | 4489 | function ff_hevc_put_hevc_qpel_hv24_8_\suffix, export=1 |
| 4407 | 4490 | stp x4, x5, [sp, #-64]! |
| 4408 | 4491 | stp x2, x3, [sp, #16] |
| @@ -4439,6 +4522,26 @@ function ff_hevc_put_hevc_qpel_hv32_8_\suffix, export=1 · 30 unmodified lines |
| 4439 | 4522 | b hevc_put_hevc_qpel_hv32_8_end_neon |
| 4440 | 4523 | endfunc |
| 4441 | 4524 | |
| 4525 | +function ff_vvc_put_qpel_hv32_8_\suffix, export=1 |
| 4526 | + add w10, w3, #8 |
| 4527 | + sub x1, x1, x2, lsl #1 |
| 4528 | + lsl x10, x10, #8 |
| 4529 | + sub x1, x1, x2 |
| 4530 | + mov x14, sp |
| 4531 | + sub sp, sp, x10 // tmp_array |
| 4532 | + stp x5, x30, [sp, #-48]! |
| 4533 | + stp x0, x3, [sp, #16] |
| 4534 | + str x14, [sp, #32] |
| 4535 | + add x3, x3, #7 |
| 4536 | + add x0, sp, #48 |
| 4537 | + mov w6, #32 |
| 4538 | + bl X(ff_vvc_put_qpel_h32_8_\suffix) |
| 4539 | + ldr x14, [sp, #32] |
| 4540 | + ldp x0, x3, [sp, #16] |
| 4541 | + ldp x5, x30, [sp], #48 |
| 4542 | + b vvc_put_qpel_hv32_8_end_neon |
| 4543 | +endfunc |
| 4544 | + |
| 4442 | 4545 | function ff_hevc_put_hevc_qpel_hv48_8_\suffix, export=1 |
| 4443 | 4546 | stp x4, x5, [sp, #-64]! |
| 4444 | 4547 | stp x2, x3, [sp, #16] |
| @@ -4472,6 +4575,43 @@ function ff_hevc_put_hevc_qpel_hv64_8_\suffix, export=1 · 27 unmodified lines |
| 4472 | 4575 | ldr x30, [sp], #16 |
| 4473 | 4576 | ret |
| 4474 | 4577 | endfunc |
| 4578 | + |
| 4579 | +function ff_vvc_put_qpel_hv64_8_\suffix, export=1 |
| 4580 | + stp x4, x5, [sp, #-64]! |
| 4581 | + stp x2, x3, [sp, #16] |
| 4582 | + stp x0, x1, [sp, #32] |
| 4583 | + str x30, [sp, #48] |
| 4584 | + mov x6, #32 |
| 4585 | + bl X(ff_vvc_put_qpel_hv32_8_\suffix) |
| 4586 | + ldp x0, x1, [sp, #32] |
| 4587 | + ldp x2, x3, [sp, #16] |
| 4588 | + ldp x4, x5, [sp], #48 |
| 4589 | + add x1, x1, #32 |
| 4590 | + add x0, x0, #64 |
| 4591 | + mov x6, #32 |
| 4592 | + bl X(ff_vvc_put_qpel_hv32_8_\suffix) |
| 4593 | + ldr x30, [sp], #16 |
| 4594 | + ret |
| 4595 | +endfunc |
| 4596 | + |
| 4597 | +function ff_vvc_put_qpel_hv128_8_\suffix, export=1 |
| 4598 | + stp x4, x5, [sp, #-64]! |
| 4599 | + stp x2, x3, [sp, #16] |
| 4600 | + stp x0, x1, [sp, #32] |
| 4601 | + str x30, [sp, #48] |
| 4602 | + mov x6, #64 |
| 4603 | + bl X(ff_vvc_put_qpel_hv64_8_\suffix) |
| 4604 | + ldp x0, x1, [sp, #32] |
| 4605 | + ldp x2, x3, [sp, #16] |
| 4606 | + ldp x4, x5, [sp], #48 |
| 4607 | + add x1, x1, #64 |
| 4608 | + add x0, x0, #128 |
| 4609 | + mov x6, #64 |
| 4610 | + bl X(ff_vvc_put_qpel_hv64_8_\suffix) |
| 4611 | + ldr x30, [sp], #16 |
| 4612 | + ret |
| 4613 | +endfunc |
| 4614 | + |
| 4475 | 4615 | .endm |
| 4476 | 4616 | |
| 4477 | 4617 | qpel_hv neon |