[PR] aarch64/h26x: give step macros self-documenting names (PR #23691)
Zhao Zhili via ffmpeg-devel <[email protected]> Fri, 03 Jul 2026 14:31:22 -0000
| Newsgroups | gmane.comp.video.ffmpeg.devel |
|---|---|
| Message-ID | <178308908309.59.8051353380823328153@29965ddac10e> |
PR #23691 opened by Zhao Zhili (quink) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23691 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23691.patch # Summary of changes The h26x NEON epel/qpel helpers use a locally redefined `.macro calc` followed by `.purgem calc` inside each function, with `calc_all<N>` as the unroller. It's hard to read and understand. This patchset replaces `.macro calc / .purgem calc` with named step macros. I split patch 3/3 from patch 2/3, so the change in patch 2/3 is straight forward rename, and patch 3/3 is just move code around with no functional changes. >From cfc65b1402aaf74c5c6071df366eee36d1fa2522 Mon Sep 17 00:00:00 2001 From: Zhao Zhili <[email protected]> Date: Fri, 3 Jul 2026 21:22:39 +0800 Subject: [PATCH 1/3] aarch64/h26x: parameterize calc_all step macro name So callers can pass a named step macro instead of relying on a locally redefined `calc` followed by `.purgem calc`. Signed-off-by: Zhao Zhili <[email protected]> --- libavcodec/aarch64/h26x/epel_neon.S | 40 ++++++++++++++--------------- libavcodec/aarch64/h26x/qpel_neon.S | 36 +++++++++++++------------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/libavcodec/aarch64/h26x/epel_neon.S b/libavcodec/aarch64/h26x/epel_neon.S index 22f58ba5fa..f28bd3faad 100644 --- a/libavcodec/aarch64/h26x/epel_neon.S +++ b/libavcodec/aarch64/h26x/epel_neon.S @@ -93,47 +93,47 @@ endconst sqshrn2 \dst\().8h, \tmp\().4s, #6 .endm -.macro calc_all4 - calc v16, v17, v18, v19 +.macro calc_all4 op=calc + \op v16, v17, v18, v19 b.eq 2f - calc v17, v18, v19, v16 + \op v17, v18, v19, v16 b.eq 2f - calc v18, v19, v16, v17 + \op v18, v19, v16, v17 b.eq 2f - calc v19, v16, v17, v18 + \op v19, v16, v17, v18 b.ne 1b .endm -.macro calc_all8 - calc v16, v17, v18, v19, v20, v21, v22, v23 +.macro calc_all8 op=calc + \op v16, v17, v18, v19, v20, v21, v22, v23 b.eq 2f - calc v18, v19, v20, v21, v22, v23, v16, v17 + \op v18, v19, v20, v21, v22, v23, v16, v17 b.eq 2f - calc v20, v21, v22, v23, v16, v17, v18, v19 + \op v20, v21, v22, v23, v16, v17, v18, v19 b.eq 2f - calc v22, v23, v16, v17, v18, v19, v20, v21 + \op v22, v23, v16, v17, v18, v19, v20, v21 b.ne 1b .endm -.macro calc_all12 - calc v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27 +.macro calc_all12 op=calc + \op v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27 b.eq 2f - calc v19, v20, v21, v22, v23, v24, v25, v26, v27, v16, v17, v18 + \op v19, v20, v21, v22, v23, v24, v25, v26, v27, v16, v17, v18 b.eq 2f - calc v22, v23, v24, v25, v26, v27, v16, v17, v18, v19, v20, v21 + \op v22, v23, v24, v25, v26, v27, v16, v17, v18, v19, v20, v21 b.eq 2f - calc v25, v26, v27, v16, v17, v18, v19, v20, v21, v22, v23, v24 + \op v25, v26, v27, v16, v17, v18, v19, v20, v21, v22, v23, v24 b.ne 1b .endm -.macro calc_all16 - calc v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31 +.macro calc_all16 op=calc + \op v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31 b.eq 2f - calc v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v16, v17, v18, v19 + \op v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v16, v17, v18, v19 b.eq 2f - calc v24, v25, v26, v27, v28, v29, v30, v31, v16, v17, v18, v19, v20, v21, v22, v23 + \op v24, v25, v26, v27, v28, v29, v30, v31, v16, v17, v18, v19, v20, v21, v22, v23 b.eq 2f - calc v28, v29, v30, v31, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27 + \op v28, v29, v30, v31, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27 b.ne 1b .endm diff --git a/libavcodec/aarch64/h26x/qpel_neon.S b/libavcodec/aarch64/h26x/qpel_neon.S index 53a8629363..cdd065c6bd 100644 --- a/libavcodec/aarch64/h26x/qpel_neon.S +++ b/libavcodec/aarch64/h26x/qpel_neon.S @@ -131,41 +131,41 @@ endconst .endif .endm -.macro calc_all - calc v23, v16, v17, v18, v19, v20, v21, v22, v23 +.macro calc_all op=calc + \op v23, v16, v17, v18, v19, v20, v21, v22, v23 b.eq 2f - calc v16, v17, v18, v19, v20, v21, v22, v23, v16 + \op v16, v17, v18, v19, v20, v21, v22, v23, v16 b.eq 2f - calc v17, v18, v19, v20, v21, v22, v23, v16, v17 + \op v17, v18, v19, v20, v21, v22, v23, v16, v17 b.eq 2f - calc v18, v19, v20, v21, v22, v23, v16, v17, v18 + \op v18, v19, v20, v21, v22, v23, v16, v17, v18 b.eq 2f - calc v19, v20, v21, v22, v23, v16, v17, v18, v19 + \op v19, v20, v21, v22, v23, v16, v17, v18, v19 b.eq 2f - calc v20, v21, v22, v23, v16, v17, v18, v19, v20 + \op v20, v21, v22, v23, v16, v17, v18, v19, v20 b.eq 2f - calc v21, v22, v23, v16, v17, v18, v19, v20, v21 + \op v21, v22, v23, v16, v17, v18, v19, v20, v21 b.eq 2f - calc v22, v23, v16, v17, v18, v19, v20, v21, v22 + \op v22, v23, v16, v17, v18, v19, v20, v21, v22 b.hi 1b .endm -.macro calc_all2 - calc v30, v31, v16, v18, v20, v22, v24, v26, v28, v30, v17, v19, v21, v23, v25, v27, v29, v31 +.macro calc_all2 op=calc + \op v30, v31, v16, v18, v20, v22, v24, v26, v28, v30, v17, v19, v21, v23, v25, v27, v29, v31 b.eq 2f - calc v16, v17, v18, v20, v22, v24, v26, v28, v30, v16, v19, v21, v23, v25, v27, v29, v31, v17 + \op v16, v17, v18, v20, v22, v24, v26, v28, v30, v16, v19, v21, v23, v25, v27, v29, v31, v17 b.eq 2f - calc v18, v19, v20, v22, v24, v26, v28, v30, v16, v18, v21, v23, v25, v27, v29, v31, v17, v19 + \op v18, v19, v20, v22, v24, v26, v28, v30, v16, v18, v21, v23, v25, v27, v29, v31, v17, v19 b.eq 2f - calc v20, v21, v22, v24, v26, v28, v30, v16, v18, v20, v23, v25, v27, v29, v31, v17, v19, v21 + \op v20, v21, v22, v24, v26, v28, v30, v16, v18, v20, v23, v25, v27, v29, v31, v17, v19, v21 b.eq 2f - calc v22, v23, v24, v26, v28, v30, v16, v18, v20, v22, v25, v27, v29, v31, v17, v19, v21, v23 + \op v22, v23, v24, v26, v28, v30, v16, v18, v20, v22, v25, v27, v29, v31, v17, v19, v21, v23 b.eq 2f - calc v24, v25, v26, v28, v30, v16, v18, v20, v22, v24, v27, v29, v31, v17, v19, v21, v23, v25 + \op v24, v25, v26, v28, v30, v16, v18, v20, v22, v24, v27, v29, v31, v17, v19, v21, v23, v25 b.eq 2f - calc v26, v27, v28, v30, v16, v18, v20, v22, v24, v26, v29, v31, v17, v19, v21, v23, v25, v27 + \op v26, v27, v28, v30, v16, v18, v20, v22, v24, v26, v29, v31, v17, v19, v21, v23, v25, v27 b.eq 2f - calc v28, v29, v30, v16, v18, v20, v22, v24, v26, v28, v31, v17, v19, v21, v23, v25, v27, v29 + \op v28, v29, v30, v16, v18, v20, v22, v24, v26, v28, v31, v17, v19, v21, v23, v25, v27, v29 b.hi 1b .endm -- 2.52.0 >From f66e56e7ebbc54f3c4866724b04c0a313ad60706 Mon Sep 17 00:00:00 2001 From: Zhao Zhili <[email protected]> Date: Fri, 3 Jul 2026 21:22:39 +0800 Subject: [PATCH 2/3] aarch64/h26x: give step macros distinct names per function Signed-off-by: Zhao Zhili <[email protected]> --- libavcodec/aarch64/h26x/epel_neon.S | 220 +++++++++++----------------- libavcodec/aarch64/h26x/qpel_neon.S | 180 +++++++++-------------- 2 files changed, 160 insertions(+), 240 deletions(-) diff --git a/libavcodec/aarch64/h26x/epel_neon.S b/libavcodec/aarch64/h26x/epel_neon.S index f28bd3faad..32ba266eb0 100644 --- a/libavcodec/aarch64/h26x/epel_neon.S +++ b/libavcodec/aarch64/h26x/epel_neon.S @@ -1102,7 +1102,7 @@ function ff_hevc_put_hevc_epel_bi_v4_8_neon, export=1 ld1 {v16.s}[0], [x2], x3 ld1 {v17.s}[0], [x2], x3 ld1 {v18.s}[0], [x2], x3 -.macro calc src0, src1, src2, src3 +.macro epel_bi_v4_step src0, src1, src2, src3 ld1 {\src3\().s}[0], [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 ld1 {v24.4h}, [x4], x10 @@ -1111,8 +1111,7 @@ function ff_hevc_put_hevc_epel_bi_v4_8_neon, export=1 subs w5, w5, #1 st1 {v4.s}[0], [x0], x1 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_bi_v4_step 2: ret endfunc @@ -1124,7 +1123,7 @@ function ff_hevc_put_hevc_epel_bi_v6_8_neon, export=1 ld1 {v16.8b}, [x2], x3 ld1 {v17.8b}, [x2], x3 ld1 {v18.8b}, [x2], x3 -.macro calc src0, src1, src2, src3 +.macro epel_bi_v6_step src0, src1, src2, src3 ld1 {\src3\().8b}, [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 ld1 {v24.8h}, [x4], x10 @@ -1134,8 +1133,7 @@ function ff_hevc_put_hevc_epel_bi_v6_8_neon, export=1 subs w5, w5, #1 st1 {v4.h}[2], [x0], x1 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_bi_v6_step 2: ret endfunc @@ -1146,7 +1144,7 @@ function ff_hevc_put_hevc_epel_bi_v8_8_neon, export=1 ld1 {v16.8b}, [x2], x3 ld1 {v17.8b}, [x2], x3 ld1 {v18.8b}, [x2], x3 -.macro calc src0, src1, src2, src3 +.macro epel_bi_v8_step src0, src1, src2, src3 ld1 {\src3\().8b}, [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 ld1 {v24.8h}, [x4], x10 @@ -1155,8 +1153,7 @@ function ff_hevc_put_hevc_epel_bi_v8_8_neon, export=1 subs w5, w5, #1 st1 {v4.8b}, [x0], x1 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_bi_v8_step 2: ret endfunc @@ -1168,7 +1165,7 @@ function ff_hevc_put_hevc_epel_bi_v12_8_neon, export=1 ld1 {v16.16b}, [x2], x3 ld1 {v17.16b}, [x2], x3 ld1 {v18.16b}, [x2], x3 -.macro calc src0, src1, src2, src3 +.macro epel_bi_v12_step src0, src1, src2, src3 ld1 {\src3\().16b}, [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 calc_epelb2 v5, \src0, \src1, \src2, \src3 @@ -1181,8 +1178,7 @@ function ff_hevc_put_hevc_epel_bi_v12_8_neon, export=1 subs w5, w5, #1 st1 {v4.s}[2], [x0], x1 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_bi_v12_step 2: ret endfunc @@ -1193,7 +1189,7 @@ function ff_hevc_put_hevc_epel_bi_v16_8_neon, export=1 ld1 {v16.16b}, [x2], x3 ld1 {v17.16b}, [x2], x3 ld1 {v18.16b}, [x2], x3 -.macro calc src0, src1, src2, src3 +.macro epel_bi_v16_step src0, src1, src2, src3 ld1 {\src3\().16b}, [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 calc_epelb2 v5, \src0, \src1, \src2, \src3 @@ -1205,8 +1201,7 @@ function ff_hevc_put_hevc_epel_bi_v16_8_neon, export=1 st1 {v4.16b}, [x0], x1 subs w5, w5, #1 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_bi_v16_step 2: ret endfunc @@ -1217,7 +1212,7 @@ function ff_hevc_put_hevc_epel_bi_v24_8_neon, export=1 ld1 {v16.8b, v17.8b, v18.8b}, [x2], x3 ld1 {v19.8b, v20.8b, v21.8b}, [x2], x3 ld1 {v22.8b, v23.8b, v24.8b}, [x2], x3 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 +.macro epel_bi_v24_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().8b, \src10\().8b, \src11\().8b}, [x2], x3 calc_epelb v4, \src0, \src3, \src6, \src9 calc_epelb v5, \src1, \src4, \src7, \src10 @@ -1232,8 +1227,7 @@ function ff_hevc_put_hevc_epel_bi_v24_8_neon, export=1 subs w5, w5, #1 st1 {v4.8b, v5.8b, v6.8b}, [x0], x1 .endm -1: calc_all12 -.purgem calc +1: calc_all12 epel_bi_v24_step 2: ret endfunc @@ -1244,7 +1238,7 @@ function ff_hevc_put_hevc_epel_bi_v32_8_neon, export=1 ld1 {v16.16b, v17.16b}, [x2], x3 ld1 {v18.16b, v19.16b}, [x2], x3 ld1 {v20.16b, v21.16b}, [x2], x3 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7 +.macro epel_bi_v32_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().16b, \src7\().16b}, [x2], x3 calc_epelb v4, \src0, \src2, \src4, \src6 calc_epelb2 v5, \src0, \src2, \src4, \src6 @@ -1262,8 +1256,7 @@ function ff_hevc_put_hevc_epel_bi_v32_8_neon, export=1 st1 {v4.16b, v5.16b}, [x0], x1 subs w5, w5, #1 .endm -1: calc_all8 -.purgem calc +1: calc_all8 epel_bi_v32_step 2: ret endfunc @@ -1319,15 +1312,14 @@ function ff_hevc_put_hevc_epel_v4_8_neon, export=1 ldr s17, [x1, x2] add x1, x1, x2, lsl #1 ld1 {v18.s}[0], [x1], x2 -.macro calc src0, src1, src2, src3 +.macro epel_v4_step src0, src1, src2, src3 ld1 {\src3\().s}[0], [x1], x2 movi v4.8h, #0 calc_epelb v4, \src0, \src1, \src2, \src3 subs w3, w3, #1 st1 {v4.4h}, [x0], x10 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_v4_step 2: ret endfunc @@ -1339,7 +1331,7 @@ function ff_hevc_put_hevc_epel_v6_8_neon, export=1 ldr d17, [x1, x2] add x1, x1, x2, lsl #1 ld1 {v18.8b}, [x1], x2 -.macro calc src0, src1, src2, src3 +.macro epel_v6_step src0, src1, src2, src3 ld1 {\src3\().8b}, [x1], x2 movi v4.8h, #0 calc_epelb v4, \src0, \src1, \src2, \src3 @@ -1347,8 +1339,7 @@ function ff_hevc_put_hevc_epel_v6_8_neon, export=1 subs w3, w3, #1 st1 {v4.s}[2], [x0], x10 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_v6_step 2: ret endfunc @@ -1360,15 +1351,14 @@ function ff_hevc_put_hevc_epel_v8_8_neon, export=1 ldr d17, [x1, x2] add x1, x1, x2, lsl #1 ld1 {v18.8b}, [x1], x2 -.macro calc src0, src1, src2, src3 +.macro epel_v8_step src0, src1, src2, src3 ld1 {\src3\().8b}, [x1], x2 movi v4.8h, #0 calc_epelb v4, \src0, \src1, \src2, \src3 subs w3, w3, #1 st1 {v4.8h}, [x0], x10 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_v8_step 2: ret endfunc @@ -1380,7 +1370,7 @@ function ff_hevc_put_hevc_epel_v12_8_neon, export=1 ldr q17, [x1, x2] add x1, x1, x2, lsl #1 ld1 {v18.16b}, [x1], x2 -.macro calc src0, src1, src2, src3 +.macro epel_v12_step src0, src1, src2, src3 ld1 {\src3\().16b}, [x1], x2 movi v4.8h, #0 movi v5.8h, #0 @@ -1391,8 +1381,7 @@ function ff_hevc_put_hevc_epel_v12_8_neon, export=1 str d5, [x0, #16] add x0, x0, x10 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_v12_step 2: ret endfunc @@ -1404,7 +1393,7 @@ function ff_hevc_put_hevc_epel_v16_8_neon, export=1 ldr q17, [x1, x2] add x1, x1, x2, lsl #1 ld1 {v18.16b}, [x1], x2 -.macro calc src0, src1, src2, src3 +.macro epel_v16_step src0, src1, src2, src3 ld1 {\src3\().16b}, [x1], x2 movi v4.8h, #0 movi v5.8h, #0 @@ -1413,8 +1402,7 @@ function ff_hevc_put_hevc_epel_v16_8_neon, export=1 subs w3, w3, #1 st1 {v4.8h, v5.8h}, [x0], x10 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_v16_step 2: ret endfunc @@ -1425,7 +1413,7 @@ function ff_hevc_put_hevc_epel_v24_8_neon, export=1 ld1 {v16.8b, v17.8b, v18.8b}, [x1], x2 ld1 {v19.8b, v20.8b, v21.8b}, [x1], x2 ld1 {v22.8b, v23.8b, v24.8b}, [x1], x2 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 +.macro epel_v24_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().8b, \src10\().8b, \src11\().8b}, [x1], x2 movi v4.8h, #0 movi v5.8h, #0 @@ -1436,8 +1424,7 @@ function ff_hevc_put_hevc_epel_v24_8_neon, export=1 subs w3, w3, #1 st1 {v4.8h-v6.8h}, [x0], x10 .endm -1: calc_all12 -.purgem calc +1: calc_all12 epel_v24_step 2: ret endfunc @@ -1448,7 +1435,7 @@ function ff_hevc_put_hevc_epel_v32_8_neon, export=1 ld1 {v16.16b, v17.16b}, [x1], x2 ld1 {v18.16b, v19.16b}, [x1], x2 ld1 {v20.16b, v21.16b}, [x1], x2 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7 +.macro epel_v32_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().16b, \src7\().16b}, [x1], x2 movi v4.8h, #0 movi v5.8h, #0 @@ -1461,8 +1448,7 @@ function ff_hevc_put_hevc_epel_v32_8_neon, export=1 subs w3, w3, #1 st1 {v4.8h-v7.8h}, [x0], x10 .endm -1: calc_all8 -.purgem calc +1: calc_all8 epel_v32_step 2: ret endfunc @@ -1473,7 +1459,7 @@ function ff_hevc_put_hevc_epel_v48_8_neon, export=1 ld1 {v16.16b, v17.16b, v18.16b}, [x1], x2 ld1 {v19.16b, v20.16b, v21.16b}, [x1], x2 ld1 {v22.16b, v23.16b, v24.16b}, [x1], x2 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 +.macro epel_v48_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().16b, \src10\().16b, \src11\().16b}, [x1], x2 movi v4.8h, #0 movi v5.8h, #0 @@ -1491,8 +1477,7 @@ function ff_hevc_put_hevc_epel_v48_8_neon, export=1 subs w3, w3, #1 st1 {v28.8h-v29.8h}, [x0], x10 .endm -1: calc_all12 -.purgem calc +1: calc_all12 epel_v48_step 2: ret endfunc @@ -1504,7 +1489,7 @@ function ff_hevc_put_hevc_epel_v64_8_neon, export=1 ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x1], x2 ld1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x1], x2 ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x1], x2 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 +.macro epel_v64_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\src12\().16b-\src15\().16b}, [x1], x2 movi v4.8h, #0 movi v5.8h, #0 @@ -1526,8 +1511,7 @@ function ff_hevc_put_hevc_epel_v64_8_neon, export=1 subs w3, w3, #1 st1 {v8.8h-v11.8h}, [x0], #64 .endm -1: calc_all16 -.purgem calc +1: calc_all16 epel_v64_step 2: ld1 {v8.8b-v11.8b}, [sp] add sp, sp, #32 ret @@ -1539,15 +1523,14 @@ function ff_hevc_put_hevc_epel_uni_v4_8_neon, export=1 ld1 {v16.s}[0], [x2], x3 ld1 {v17.s}[0], [x2], x3 ld1 {v18.s}[0], [x2], x3 -.macro calc src0, src1, src2, src3 +.macro epel_uni_v4_step src0, src1, src2, src3 ld1 {\src3\().s}[0], [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 sqrshrun v4.8b, v4.8h, #6 subs w4, w4, #1 st1 {v4.s}[0], [x0], x1 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_uni_v4_step 2: ret endfunc @@ -1558,7 +1541,7 @@ function ff_hevc_put_hevc_epel_uni_v6_8_neon, export=1 ld1 {v16.8b}, [x2], x3 ld1 {v17.8b}, [x2], x3 ld1 {v18.8b}, [x2], x3 -.macro calc src0, src1, src2, src3 +.macro epel_uni_v6_step src0, src1, src2, src3 ld1 {\src3\().8b}, [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 sqrshrun v4.8b, v4.8h, #6 @@ -1566,8 +1549,7 @@ function ff_hevc_put_hevc_epel_uni_v6_8_neon, export=1 subs w4, w4, #1 st1 {v4.h}[2], [x0], x1 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_uni_v6_step 2: ret endfunc @@ -1577,15 +1559,14 @@ function ff_hevc_put_hevc_epel_uni_v8_8_neon, export=1 ld1 {v16.8b}, [x2], x3 ld1 {v17.8b}, [x2], x3 ld1 {v18.8b}, [x2], x3 -.macro calc src0, src1, src2, src3 +.macro epel_uni_v8_step src0, src1, src2, src3 ld1 {\src3\().8b}, [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 sqrshrun v4.8b, v4.8h, #6 subs w4, w4, #1 st1 {v4.8b}, [x0], x1 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_uni_v8_step 2: ret endfunc @@ -1596,7 +1577,7 @@ function ff_hevc_put_hevc_epel_uni_v12_8_neon, export=1 ld1 {v16.16b}, [x2], x3 ld1 {v17.16b}, [x2], x3 ld1 {v18.16b}, [x2], x3 -.macro calc src0, src1, src2, src3 +.macro epel_uni_v12_step src0, src1, src2, src3 ld1 {\src3\().16b}, [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 calc_epelb2 v5, \src0, \src1, \src2, \src3 @@ -1606,8 +1587,7 @@ function ff_hevc_put_hevc_epel_uni_v12_8_neon, export=1 st1 {v4.8b}, [x0], #8 st1 {v4.s}[2], [x0], x1 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_uni_v12_step 2: ret endfunc @@ -1617,7 +1597,7 @@ function ff_hevc_put_hevc_epel_uni_v16_8_neon, export=1 ld1 {v16.16b}, [x2], x3 ld1 {v17.16b}, [x2], x3 ld1 {v18.16b}, [x2], x3 -.macro calc src0, src1, src2, src3 +.macro epel_uni_v16_step src0, src1, src2, src3 ld1 {\src3\().16b}, [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 calc_epelb2 v5, \src0, \src1, \src2, \src3 @@ -1626,8 +1606,7 @@ function ff_hevc_put_hevc_epel_uni_v16_8_neon, export=1 subs w4, w4, #1 st1 {v4.16b}, [x0], x1 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_uni_v16_step 2: ret endfunc @@ -1637,7 +1616,7 @@ function ff_hevc_put_hevc_epel_uni_v24_8_neon, export=1 ld1 {v16.8b, v17.8b, v18.8b}, [x2], x3 ld1 {v19.8b, v20.8b, v21.8b}, [x2], x3 ld1 {v22.8b, v23.8b, v24.8b}, [x2], x3 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 +.macro epel_uni_v24_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().8b, \src10\().8b, \src11\().8b}, [x2], x3 calc_epelb v4, \src0, \src3, \src6, \src9 calc_epelb v5, \src1, \src4, \src7, \src10 @@ -1648,8 +1627,7 @@ function ff_hevc_put_hevc_epel_uni_v24_8_neon, export=1 subs w4, w4, #1 st1 {v4.8b-v6.8b}, [x0], x1 .endm -1: calc_all12 -.purgem calc +1: calc_all12 epel_uni_v24_step 2: ret endfunc @@ -1659,7 +1637,7 @@ function ff_hevc_put_hevc_epel_uni_v32_8_neon, export=1 ld1 {v16.16b, v17.16b}, [x2], x3 ld1 {v18.16b, v19.16b}, [x2], x3 ld1 {v20.16b, v21.16b}, [x2], x3 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7 +.macro epel_uni_v32_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().16b, \src7\().16b}, [x2], x3 calc_epelb v4, \src0, \src2, \src4, \src6 calc_epelb2 v5, \src0, \src2, \src4, \src6 @@ -1672,8 +1650,7 @@ function ff_hevc_put_hevc_epel_uni_v32_8_neon, export=1 subs w4, w4, #1 st1 {v4.16b, v5.16b}, [x0], x1 .endm -1: calc_all8 -.purgem calc +1: calc_all8 epel_uni_v32_step 2: ret endfunc @@ -1683,7 +1660,7 @@ function ff_hevc_put_hevc_epel_uni_v48_8_neon, export=1 ld1 {v16.16b, v17.16b, v18.16b}, [x2], x3 ld1 {v19.16b, v20.16b, v21.16b}, [x2], x3 ld1 {v22.16b, v23.16b, v24.16b}, [x2], x3 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 +.macro epel_uni_v48_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().16b, \src10\().16b, \src11\().16b}, [x2], x3 calc_epelb v4, \src0, \src3, \src6, \src9 calc_epelb2 v5, \src0, \src3, \src6, \src9 @@ -1700,8 +1677,7 @@ function ff_hevc_put_hevc_epel_uni_v48_8_neon, export=1 subs w4, w4, #1 st1 {v4.16b, v5.16b, v6.16b}, [x0], x1 .endm -1: calc_all12 -.purgem calc +1: calc_all12 epel_uni_v48_step 2: ret endfunc @@ -1713,7 +1689,7 @@ function ff_hevc_put_hevc_epel_uni_v64_8_neon, export=1 ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x2], x3 ld1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x2], x3 ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x2], x3 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 +.macro epel_uni_v64_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\src12\().16b, \src13\().16b, \src14\().16b, \src15\().16b}, [x2], x3 calc_epelb v10, \src3, \src7, \src11, \src15 calc_epelb2 v11, \src3, \src7, \src11, \src15 @@ -1734,8 +1710,7 @@ function ff_hevc_put_hevc_epel_uni_v64_8_neon, export=1 subs w4, w4, #1 st1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x0], x1 .endm -1: calc_all16 -.purgem calc +1: calc_all16 epel_uni_v64_step 2: ld1 {v8.8b-v11.8b}, [sp], #32 ret endfunc @@ -3079,14 +3054,13 @@ function hevc_put_hevc_epel_hv4_8_end_neon ldr d17, [sp, x10] add sp, sp, x10, lsl #1 ld1 {v18.4h}, [sp], x10 -.macro calc src0, src1, src2, src3 +.macro epel_hv4_end_step src0, src1, src2, src3 ld1 {\src3\().4h}, [sp], x10 calc_epelh v4, \src0, \src1, \src2, \src3 subs w3, w3, #1 st1 {v4.4h}, [x0], x10 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_hv4_end_step 2: ret endfunc @@ -3098,7 +3072,7 @@ function hevc_put_hevc_epel_hv6_8_end_neon ldr q17, [sp, x10] add sp, sp, x10, lsl #1 ld1 {v18.8h}, [sp], x10 -.macro calc src0, src1, src2, src3 +.macro epel_hv6_end_step src0, src1, src2, src3 ld1 {\src3\().8h}, [sp], x10 calc_epelh v4, \src0, \src1, \src2, \src3 calc_epelh2 v4, v5, \src0, \src1, \src2, \src3 @@ -3106,8 +3080,7 @@ function hevc_put_hevc_epel_hv6_8_end_neon subs w3, w3, #1 st1 {v4.s}[2], [x0], x5 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_hv6_end_step 2: ret endfunc @@ -3125,15 +3098,14 @@ function hevc_put_hevc_epel_hv8_8_end_neon ldr q17, [sp, x10] add sp, sp, x10, lsl #1 ld1 {v18.8h}, [sp], x10 -.macro calc src0, src1, src2, src3 +.macro epel_hv8_end_step src0, src1, src2, src3 ld1 {\src3\().8h}, [sp], x10 calc_epelh v4, \src0, \src1, \src2, \src3 calc_epelh2 v4, v5, \src0, \src1, \src2, \src3 subs w3, w3, #1 st1 {v4.8h}, [x0], x10 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_hv8_end_step 2: ret endfunc @@ -3144,7 +3116,7 @@ function hevc_put_hevc_epel_hv12_8_end_neon ld1 {v16.8h, v17.8h}, [sp], x10 ld1 {v18.8h, v19.8h}, [sp], x10 ld1 {v20.8h, v21.8h}, [sp], x10 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7 +.macro epel_hv12_end_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().8h, \src7\().8h}, [sp], x10 calc_epelh v4, \src0, \src2, \src4, \src6 calc_epelh2 v4, v5, \src0, \src2, \src4, \src6 @@ -3153,8 +3125,7 @@ function hevc_put_hevc_epel_hv12_8_end_neon subs w3, w3, #1 st1 {v5.4h}, [x0], x5 .endm -1: calc_all8 -.purgem calc +1: calc_all8 epel_hv12_end_step 2: ret endfunc @@ -3171,7 +3142,7 @@ function hevc_put_hevc_epel_hv16_8_end_neon ld1 {v16.8h, v17.8h}, [sp], x10 ld1 {v18.8h, v19.8h}, [sp], x10 ld1 {v20.8h, v21.8h}, [sp], x10 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7 +.macro epel_hv16_end_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().8h, \src7\().8h}, [sp], x10 calc_epelh v4, \src0, \src2, \src4, \src6 calc_epelh2 v4, v5, \src0, \src2, \src4, \src6 @@ -3180,8 +3151,7 @@ function hevc_put_hevc_epel_hv16_8_end_neon subs w3, w3, #1 st1 {v4.8h, v5.8h}, [x0], x10 .endm -1: calc_all8 -.purgem calc +1: calc_all8 epel_hv16_end_step 2: ret endfunc @@ -3191,7 +3161,7 @@ function hevc_put_hevc_epel_hv24_8_end_neon ld1 {v16.8h, v17.8h, v18.8h}, [sp], x10 ld1 {v19.8h, v20.8h, v21.8h}, [sp], x10 ld1 {v22.8h, v23.8h, v24.8h}, [sp], x10 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 +.macro epel_hv24_end_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().8h-\src11\().8h}, [sp], x10 calc_epelh v4, \src0, \src3, \src6, \src9 calc_epelh2 v4, v5, \src0, \src3, \src6, \src9 @@ -3202,8 +3172,7 @@ function hevc_put_hevc_epel_hv24_8_end_neon subs w3, w3, #1 st1 {v4.8h-v6.8h}, [x0], x10 .endm -1: calc_all12 -.purgem calc +1: calc_all12 epel_hv24_end_step 2: ret endfunc @@ -3505,15 +3474,14 @@ function hevc_put_hevc_epel_uni_hv4_8_end_neon ld1 {v16.4h}, [sp], x10 ld1 {v17.4h}, [sp], x10 ld1 {v18.4h}, [sp], x10 -.macro calc src0, src1, src2, src3 +.macro epel_uni_hv4_end_step src0, src1, src2, src3 ld1 {\src3\().4h}, [sp], x10 calc_epelh v4, \src0, \src1, \src2, \src3 sqrshrun v4.8b, v4.8h, #6 subs w4, w4, #1 st1 {v4.s}[0], [x0], x1 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_uni_hv4_end_step 2: ret endfunc @@ -3524,7 +3492,7 @@ function hevc_put_hevc_epel_uni_hv6_8_end_neon ld1 {v16.8h}, [sp], x10 ld1 {v17.8h}, [sp], x10 ld1 {v18.8h}, [sp], x10 -.macro calc src0, src1, src2, src3 +.macro epel_uni_hv6_end_step src0, src1, src2, src3 ld1 {\src3\().8h}, [sp], x10 calc_epelh v4, \src0, \src1, \src2, \src3 calc_epelh2 v4, v5, \src0, \src1, \src2, \src3 @@ -3533,8 +3501,7 @@ function hevc_put_hevc_epel_uni_hv6_8_end_neon subs w4, w4, #1 st1 {v4.h}[2], [x0], x1 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_uni_hv6_end_step 2: ret endfunc @@ -3544,7 +3511,7 @@ function hevc_put_hevc_epel_uni_hv8_8_end_neon ld1 {v16.8h}, [sp], x10 ld1 {v17.8h}, [sp], x10 ld1 {v18.8h}, [sp], x10 -.macro calc src0, src1, src2, src3 +.macro epel_uni_hv8_end_step src0, src1, src2, src3 ld1 {\src3\().8h}, [sp], x10 calc_epelh v4, \src0, \src1, \src2, \src3 calc_epelh2 v4, v5, \src0, \src1, \src2, \src3 @@ -3552,8 +3519,7 @@ function hevc_put_hevc_epel_uni_hv8_8_end_neon subs w4, w4, #1 st1 {v4.8b}, [x0], x1 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_uni_hv8_end_step 2: ret endfunc @@ -3564,7 +3530,7 @@ function hevc_put_hevc_epel_uni_hv12_8_end_neon ld1 {v16.8h, v17.8h}, [sp], x10 ld1 {v18.8h, v19.8h}, [sp], x10 ld1 {v20.8h, v21.8h}, [sp], x10 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7 +.macro epel_uni_hv12_end_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().8h, \src7\().8h}, [sp], x10 calc_epelh v4, \src0, \src2, \src4, \src6 calc_epelh2 v4, v5, \src0, \src2, \src4, \src6 @@ -3575,8 +3541,7 @@ function hevc_put_hevc_epel_uni_hv12_8_end_neon st1 {v4.s}[2], [x0], x1 subs w4, w4, #1 .endm -1: calc_all8 -.purgem calc +1: calc_all8 epel_uni_hv12_end_step 2: ret endfunc @@ -3586,7 +3551,7 @@ function hevc_put_hevc_epel_uni_hv16_8_end_neon ld1 {v16.8h, v17.8h}, [sp], x10 ld1 {v18.8h, v19.8h}, [sp], x10 ld1 {v20.8h, v21.8h}, [sp], x10 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7 +.macro epel_uni_hv16_end_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().8h, \src7\().8h}, [sp], x10 calc_epelh v4, \src0, \src2, \src4, \src6 calc_epelh2 v4, v5, \src0, \src2, \src4, \src6 @@ -3597,8 +3562,7 @@ function hevc_put_hevc_epel_uni_hv16_8_end_neon subs w4, w4, #1 st1 {v4.16b}, [x0], x1 .endm -1: calc_all8 -.purgem calc +1: calc_all8 epel_uni_hv16_end_step 2: ret endfunc @@ -3608,7 +3572,7 @@ function hevc_put_hevc_epel_uni_hv24_8_end_neon ld1 {v16.8h, v17.8h, v18.8h}, [sp], x10 ld1 {v19.8h, v20.8h, v21.8h}, [sp], x10 ld1 {v22.8h, v23.8h, v24.8h}, [sp], x10 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 +.macro epel_uni_hv24_end_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().8h, \src10\().8h, \src11\().8h}, [sp], x10 calc_epelh v4, \src0, \src3, \src6, \src9 calc_epelh2 v4, v5, \src0, \src3, \src6, \src9 @@ -3622,8 +3586,7 @@ function hevc_put_hevc_epel_uni_hv24_8_end_neon subs w4, w4, #1 st1 {v4.8b, v5.8b, v6.8b}, [x0], x1 .endm -1: calc_all12 -.purgem calc +1: calc_all12 epel_uni_hv24_end_step 2: ret endfunc @@ -4874,7 +4837,7 @@ function hevc_put_hevc_epel_bi_hv4_8_end_neon ld1 {v16.4h}, [sp], x10 ld1 {v17.4h}, [sp], x10 ld1 {v18.4h}, [sp], x10 -.macro calc src0, src1, src2, src3 +.macro epel_bi_hv4_end_step src0, src1, src2, src3 ld1 {\src3\().4h}, [sp], x10 calc_epelh v4, \src0, \src1, \src2, \src3 ld1 {v6.4h}, [x4], x10 @@ -4883,8 +4846,7 @@ function hevc_put_hevc_epel_bi_hv4_8_end_neon subs w5, w5, #1 st1 {v4.s}[0], [x0], x1 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_bi_hv4_end_step 2: ret endfunc @@ -4895,7 +4857,7 @@ function hevc_put_hevc_epel_bi_hv6_8_end_neon ld1 {v16.8h}, [sp], x10 ld1 {v17.8h}, [sp], x10 ld1 {v18.8h}, [sp], x10 -.macro calc src0, src1, src2, src3 +.macro epel_bi_hv6_end_step src0, src1, src2, src3 ld1 {\src3\().8h}, [sp], x10 calc_epelh v4, \src0, \src1, \src2, \src3 calc_epelh2 v4, v5, \src0, \src1, \src2, \src3 @@ -4906,8 +4868,7 @@ function hevc_put_hevc_epel_bi_hv6_8_end_neon subs w5, w5, #1 st1 {v4.h}[2], [x0], x1 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_bi_hv6_end_step 2: ret endfunc @@ -4917,7 +4878,7 @@ function hevc_put_hevc_epel_bi_hv8_8_end_neon ld1 {v16.8h}, [sp], x10 ld1 {v17.8h}, [sp], x10 ld1 {v18.8h}, [sp], x10 -.macro calc src0, src1, src2, src3 +.macro epel_bi_hv8_end_step src0, src1, src2, src3 ld1 {\src3\().8h}, [sp], x10 calc_epelh v4, \src0, \src1, \src2, \src3 calc_epelh2 v4, v5, \src0, \src1, \src2, \src3 @@ -4927,8 +4888,7 @@ function hevc_put_hevc_epel_bi_hv8_8_end_neon subs w5, w5, #1 st1 {v4.8b}, [x0], x1 .endm -1: calc_all4 -.purgem calc +1: calc_all4 epel_bi_hv8_end_step 2: ret endfunc @@ -4939,7 +4899,7 @@ function hevc_put_hevc_epel_bi_hv12_8_end_neon ld1 {v16.8h, v17.8h}, [sp], x10 ld1 {v18.8h, v19.8h}, [sp], x10 ld1 {v20.8h, v21.8h}, [sp], x10 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7 +.macro epel_bi_hv12_end_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().8h, \src7\().8h}, [sp], x10 calc_epelh v4, \src0, \src2, \src4, \src6 calc_epelh2 v4, v5, \src0, \src2, \src4, \src6 @@ -4953,8 +4913,7 @@ function hevc_put_hevc_epel_bi_hv12_8_end_neon subs w5, w5, #1 st1 {v4.s}[2], [x0], x1 .endm -1: calc_all8 -.purgem calc +1: calc_all8 epel_bi_hv12_end_step 2: ret endfunc @@ -4964,7 +4923,7 @@ function hevc_put_hevc_epel_bi_hv16_8_end_neon ld1 {v16.8h, v17.8h}, [sp], x10 ld1 {v18.8h, v19.8h}, [sp], x10 ld1 {v20.8h, v21.8h}, [sp], x10 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7 +.macro epel_bi_hv16_end_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().8h, \src7\().8h}, [sp], x10 calc_epelh v4, \src0, \src2, \src4, \src6 calc_epelh2 v4, v5, \src0, \src2, \src4, \src6 @@ -4978,8 +4937,7 @@ function hevc_put_hevc_epel_bi_hv16_8_end_neon st1 {v4.16b}, [x0], x1 subs w5, w5, #1 .endm -1: calc_all8 -.purgem calc +1: calc_all8 epel_bi_hv16_end_step 2: ret endfunc @@ -4989,7 +4947,7 @@ function hevc_put_hevc_epel_bi_hv24_8_end_neon ld1 {v16.8h, v17.8h, v18.8h}, [sp], x10 ld1 {v19.8h, v20.8h, v21.8h}, [sp], x10 ld1 {v22.8h, v23.8h, v24.8h}, [sp], x10 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 +.macro epel_bi_hv24_end_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().8h, \src10\().8h, \src11\().8h}, [sp], x10 calc_epelh v1, \src0, \src3, \src6, \src9 calc_epelh2 v1, v2, \src0, \src3, \src6, \src9 @@ -5007,8 +4965,7 @@ function hevc_put_hevc_epel_bi_hv24_8_end_neon subs w5, w5, #1 st1 {v1.8b, v2.8b, v3.8b}, [x0], x1 .endm -1: calc_all12 -.purgem calc +1: calc_all12 epel_bi_hv24_end_step 2: ret endfunc @@ -5018,7 +4975,7 @@ function hevc_put_hevc_epel_bi_hv32_8_end_neon ld1 {v16.8h, v17.8h, v18.8h, v19.8h}, [sp], x10 ld1 {v20.8h, v21.8h, v22.8h, v23.8h}, [sp], x10 ld1 {v24.8h, v25.8h, v26.8h, v27.8h}, [sp], x10 -.macro calc src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 +.macro epel_bi_hv32_end_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\src12\().8h, \src13\().8h, \src14\().8h, \src15\().8h}, [sp], x10 calc_epelh v1, \src0, \src4, \src8, \src12 calc_epelh2 v1, v2, \src0, \src4, \src8, \src12 @@ -5040,8 +4997,7 @@ function hevc_put_hevc_epel_bi_hv32_8_end_neon st1 {v1.8b, v2.8b, v3.8b, v4.8b}, [x0], x1 subs w5, w5, #1 .endm -1: calc_all16 -.purgem calc +1: calc_all16 epel_bi_hv32_end_step 2: ldr d8, [sp], #16 ret endfunc diff --git a/libavcodec/aarch64/h26x/qpel_neon.S b/libavcodec/aarch64/h26x/qpel_neon.S index cdd065c6bd..f123f02751 100644 --- a/libavcodec/aarch64/h26x/qpel_neon.S +++ b/libavcodec/aarch64/h26x/qpel_neon.S @@ -961,15 +961,14 @@ function ff_hevc_put_hevc_qpel_v4_8_neon, export=1 add x1, x1, x2, lsl #1 ldr s22, [x1] add x1, x1, x2 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_v4_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().s}[0], [x1], x2 movi v24.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 st1 {v24.4h}, [x0], x9 subs w3, w3, #1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_v4_step 2: ret endfunc @@ -989,7 +988,7 @@ function ff_hevc_put_hevc_qpel_v6_8_neon, export=1 add x1, x1, x2, lsl #1 ldr d22, [x1] add x1, x1, x2 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_v6_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8b}, [x1], x2 movi v24.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 @@ -997,8 +996,7 @@ function ff_hevc_put_hevc_qpel_v6_8_neon, export=1 st1 {v24.s}[2], [x0], x9 subs w3, w3, #1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_v6_step 2: ret endfunc @@ -1018,15 +1016,14 @@ function ff_hevc_put_hevc_qpel_v8_8_neon, export=1 add x1, x1, x2, lsl #1 ldr d22, [x1] add x1, x1, x2 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_v8_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8b}, [x1], x2 movi v24.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 st1 {v24.8h}, [x0], x9 subs w3, w3, #1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_v8_step 2: ret endfunc @@ -1046,7 +1043,7 @@ function ff_hevc_put_hevc_qpel_v12_8_neon, export=1 add x1, x1, x2, lsl #1 ldr q22, [x1] add x1, x1, x2 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_v12_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().16b}, [x1], x2 movi v24.8h, #0 movi v25.8h, #0 @@ -1056,8 +1053,7 @@ function ff_hevc_put_hevc_qpel_v12_8_neon, export=1 subs w3, w3, #1 st1 {v25.4h}, [x0], x9 .endm -1: calc_all -.purgem calc +1: calc_all qpel_v12_step 2: ret endfunc @@ -1077,7 +1073,7 @@ function ff_hevc_put_hevc_qpel_v16_8_neon, export=1 add x1, x1, x2, lsl #1 ldr q22, [x1] add x1, x1, x2 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_v16_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().16b}, [x1], x2 movi v24.8h, #0 movi v25.8h, #0 @@ -1086,8 +1082,7 @@ function ff_hevc_put_hevc_qpel_v16_8_neon, export=1 subs w3, w3, #1 st1 {v24.8h, v25.8h}, [x0], x9 .endm -1: calc_all -.purgem calc +1: calc_all qpel_v16_step 2: ret endfunc @@ -1106,7 +1101,7 @@ function ff_hevc_put_hevc_qpel_v24_8_neon, export=1 ld1 {v24.16b, v25.16b}, [x1], x2 ld1 {v26.16b, v27.16b}, [x1], x2 ld1 {v28.16b, v29.16b}, [x1], x2 -.macro calc tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 +.macro qpel_v24_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\tmp0\().16b, \tmp1\().16b}, [x1], x2 movi v8.8h, #0 movi v9.8h, #0 @@ -1117,8 +1112,7 @@ function ff_hevc_put_hevc_qpel_v24_8_neon, export=1 subs w3, w3, #1 st1 {v8.8h, v9.8h, v10.8h}, [x0], x9 .endm -1: calc_all2 -.purgem calc +1: calc_all2 qpel_v24_step 2: ld1 {v8.8b, v9.8b, v10.8b}, [sp] add sp, sp, #32 ret @@ -1138,7 +1132,7 @@ function ff_hevc_put_hevc_qpel_v32_8_neon, export=1 ld1 {v24.16b, v25.16b}, [x1], x2 ld1 {v26.16b, v27.16b}, [x1], x2 ld1 {v28.16b, v29.16b}, [x1], x2 -.macro calc tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 +.macro qpel_v32_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\tmp0\().16b, \tmp1\().16b}, [x1], x2 movi v8.8h, #0 movi v9.8h, #0 @@ -1151,8 +1145,7 @@ function ff_hevc_put_hevc_qpel_v32_8_neon, export=1 subs w3, w3, #1 st1 {v8.8h-v11.8h}, [x0], x9 .endm -1: calc_all2 -.purgem calc +1: calc_all2 qpel_v32_step 2: ld1 {v8.8b-v11.8b}, [sp], #32 ret endfunc @@ -1192,7 +1185,7 @@ function ff_hevc_put_hevc_qpel_v64_8_neon, export=1 ld1 {v24.16b, v25.16b}, [x8], x2 ld1 {v26.16b, v27.16b}, [x8], x2 ld1 {v28.16b, v29.16b}, [x8], x2 -.macro calc tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 +.macro qpel_v64_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\tmp0\().16b, \tmp1\().16b}, [x8], x2 movi v8.8h, #0 movi v9.8h, #0 @@ -1205,8 +1198,7 @@ function ff_hevc_put_hevc_qpel_v64_8_neon, export=1 subs x11, x11, #1 st1 {v8.8h-v11.8h}, [x10], x9 .endm -1: calc_all2 -.purgem calc +1: calc_all2 qpel_v64_step 2: add x0, x0, #64 add x1, x1, #32 subs w6, w6, #32 @@ -1242,7 +1234,7 @@ function ff_vvc_put_qpel_v4_8_neon, export=1 uxtl v20.8h, v20.8b uxtl v21.8h, v21.8b uxtl v22.8h, v22.8b -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro vvc_qpel_v4_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().s}[0], [x1], x2 uxtl \tmp\().8h, \tmp\().8b calc_qpelh v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqxtn @@ -1250,8 +1242,7 @@ function ff_vvc_put_qpel_v4_8_neon, export=1 st1 {v24.4h}, [x0], x9 .endm 1: - calc_all -.purgem calc + calc_all vvc_qpel_v4_step 2: ret endfunc @@ -1283,7 +1274,7 @@ function ff_vvc_put_qpel_v8_8_neon, export=1 uxtl v20.8h, v20.8b uxtl v21.8h, v21.8b uxtl v22.8h, v22.8b -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro vvc_qpel_v8_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8b}, [x8], x2 uxtl \tmp\().8h, \tmp\().8b calc_qpelh v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqxtn @@ -1292,8 +1283,7 @@ function ff_vvc_put_qpel_v8_8_neon, export=1 st1 {v24.8h}, [x10], x9 .endm 1: - calc_all -.purgem calc + calc_all vvc_qpel_v8_step 2: subs w6, w6, #8 add x0, x0, #16 @@ -1314,7 +1304,7 @@ function ff_hevc_put_hevc_qpel_bi_v4_8_neon, export=1 ld1 {v20.s}[0], [x2], x3 ld1 {v21.s}[0], [x2], x3 ld1 {v22.s}[0], [x2], x3 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_bi_v4_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().s}[0], [x2], x3 movi v24.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 @@ -1324,8 +1314,7 @@ function ff_hevc_put_hevc_qpel_bi_v4_8_neon, export=1 subs w5, w5, #1 st1 {v25.s}[0], [x0], x1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_bi_v4_step 2: ret endfunc @@ -1342,7 +1331,7 @@ function ff_hevc_put_hevc_qpel_bi_v6_8_neon, export=1 ld1 {v20.8b}, [x2], x3 ld1 {v21.8b}, [x2], x3 ld1 {v22.8b}, [x2], x3 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_bi_v6_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8b}, [x2], x3 movi v24.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 @@ -1353,8 +1342,7 @@ function ff_hevc_put_hevc_qpel_bi_v6_8_neon, export=1 subs w5, w5, #1 st1 {v25.h}[2], [x0], x1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_bi_v6_step 2: ret endfunc @@ -1370,7 +1358,7 @@ function ff_hevc_put_hevc_qpel_bi_v8_8_neon, export=1 ld1 {v20.8b}, [x2], x3 ld1 {v21.8b}, [x2], x3 ld1 {v22.8b}, [x2], x3 - .macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 + .macro qpel_bi_v8_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8b}, [x2], x3 movi v24.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 @@ -1380,8 +1368,7 @@ function ff_hevc_put_hevc_qpel_bi_v8_8_neon, export=1 subs w5, w5, #1 st1 {v25.8b}, [x0], x1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_bi_v8_step 2: ret endfunc @@ -1398,7 +1385,7 @@ function ff_hevc_put_hevc_qpel_bi_v12_8_neon, export=1 ld1 {v20.16b}, [x2], x3 ld1 {v21.16b}, [x2], x3 ld1 {v22.16b}, [x2], x3 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_bi_v12_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().16b}, [x2], x3 movi v24.8h, #0 movi v25.8h, #0 @@ -1413,8 +1400,7 @@ function ff_hevc_put_hevc_qpel_bi_v12_8_neon, export=1 subs w5, w5, #1 st1 {v26.s}[2], [x0], x1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_bi_v12_step 2: ret endfunc @@ -1430,7 +1416,7 @@ function ff_hevc_put_hevc_qpel_bi_v16_8_neon, export=1 ld1 {v20.16b}, [x2], x3 ld1 {v21.16b}, [x2], x3 ld1 {v22.16b}, [x2], x3 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_bi_v16_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().16b}, [x2], x3 movi v24.8h, #0 movi v25.8h, #0 @@ -1444,8 +1430,7 @@ function ff_hevc_put_hevc_qpel_bi_v16_8_neon, export=1 sqrshrun2 v26.16b, v25.8h, #7 st1 {v26.16b}, [x0], x1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_bi_v16_step 2: ret endfunc @@ -1491,7 +1476,7 @@ function ff_hevc_put_hevc_qpel_bi_v32_8_neon, export=1 ld1 {v24.16b, v25.16b}, [x8], x3 ld1 {v26.16b, v27.16b}, [x8], x3 ld1 {v28.16b, v29.16b}, [x8], x3 -.macro calc tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 +.macro qpel_bi_v32_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\tmp0\().8h, \tmp1\().8h}, [x8], x3 movi v8.8h, #0 movi v9.8h, #0 @@ -1513,8 +1498,7 @@ function ff_hevc_put_hevc_qpel_bi_v32_8_neon, export=1 subs x11, x11, #1 st1 {v12.16b, v13.16b}, [x10], x1 .endm -1: calc_all2 -.purgem calc +1: calc_all2 qpel_bi_v32_step 2: add x0, x0, #32 // dst add x2, x2, #32 // src add x4, x4, #64 // src2 @@ -1708,15 +1692,14 @@ function ff_hevc_put_hevc_qpel_uni_v4_8_neon, export=1 add x2, x2, x3, lsl #1 ldr s22, [x2] add x2, x2, x3 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_uni_v4_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().s}[0], [x2], x3 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 sqrshrun v24.8b, v24.8h, #6 subs w4, w4, #1 st1 {v24.s}[0], [x0], x1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_uni_v4_step 2: ret endfunc @@ -1736,7 +1719,7 @@ function ff_hevc_put_hevc_qpel_uni_v6_8_neon, export=1 add x2, x2, x3, lsl #1 ldr d22, [x2] add x2, x2, x3 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_uni_v6_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8b}, [x2], x3 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 sqrshrun v24.8b, v24.8h, #6 @@ -1744,8 +1727,7 @@ function ff_hevc_put_hevc_qpel_uni_v6_8_neon, export=1 subs w4, w4, #1 st1 {v24.h}[2], [x0], x1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_uni_v6_step 2: ret endfunc @@ -1764,15 +1746,14 @@ function ff_hevc_put_hevc_qpel_uni_v8_8_neon, export=1 add x2, x2, x3, lsl #1 ldr d22, [x2] add x2, x2, x3 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_uni_v8_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8b}, [x2], x3 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 sqrshrun v24.8b, v24.8h, #6 subs w4, w4, #1 st1 {v24.8b}, [x0], x1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_uni_v8_step 2: ret endfunc @@ -1795,7 +1776,7 @@ function ff_hevc_put_hevc_qpel_uni_v12_8_neon, export=1 add x8, x8, x3, lsl #1 ldr q22, [x8] add x8, x8, x3 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_uni_v12_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().16b}, [x8], x3 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 calc_qpelb2 v25, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 @@ -1805,8 +1786,7 @@ function ff_hevc_put_hevc_qpel_uni_v12_8_neon, export=1 subs x11, x11, #1 st1 {v24.s}[2], [x10], x1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_uni_v12_step 2: add x0, x0, #12 add x2, x2, #12 subs w7, w7, #12 @@ -1832,7 +1812,7 @@ function ff_hevc_put_hevc_qpel_uni_v16_8_neon, export=1 add x8, x8, x3, lsl #1 ldr q22, [x8] add x8, x8, x3 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_uni_v16_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().16b}, [x8], x3 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 calc_qpelb2 v25, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 @@ -1841,8 +1821,7 @@ function ff_hevc_put_hevc_qpel_uni_v16_8_neon, export=1 subs x11, x11, #1 st1 {v24.16b}, [x10], x1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_uni_v16_step 2: add x0, x0, #16 add x2, x2, #16 subs w7, w7, #16 @@ -3148,15 +3127,14 @@ function hevc_put_hevc_qpel_uni_hv4_8_end_neon add sp, sp, x9, lsl #1 ldr d22, [sp] add sp, sp, x9 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_uni_hv4_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().4h}, [sp], x9 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn, #12 sqxtun v1.8b, v1.8h subs w4, w4, #1 st1 {v1.s}[0], [x0], x1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_uni_hv4_end_step 2: mov sp, x14 ret endfunc @@ -3176,7 +3154,7 @@ function hevc_put_hevc_qpel_uni_hv6_8_end_neon add sp, sp, x9, lsl #1 ldr q22, [sp] add sp, sp, x9 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_uni_hv6_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8h}, [sp], x9 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn, #12 calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn2, #12 @@ -3185,8 +3163,7 @@ function hevc_put_hevc_qpel_uni_hv6_8_end_neon subs w4, w4, #1 st1 {v1.h}[2], [x0], x1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_uni_hv6_end_step 2: mov sp, x14 ret endfunc @@ -3205,7 +3182,7 @@ function hevc_put_hevc_qpel_uni_hv8_8_end_neon add sp, sp, x9, lsl #1 ldr q22, [sp] add sp, sp, x9 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_uni_hv8_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8h}, [sp], x9 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn, #12 calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn2, #12 @@ -3213,8 +3190,7 @@ function hevc_put_hevc_qpel_uni_hv8_8_end_neon subs w4, w4, #1 st1 {v1.8b}, [x0], x1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_uni_hv8_end_step 2: mov sp, x14 ret endfunc @@ -3230,7 +3206,7 @@ function hevc_put_hevc_qpel_uni_hv12_8_end_neon ld1 {v24.8h, v25.8h}, [sp], x9 ld1 {v26.8h, v27.8h}, [sp], x9 ld1 {v28.8h, v29.8h}, [sp], x9 -.macro calc tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 +.macro qpel_uni_hv12_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\tmp0\().8h, \tmp1\().8h}, [sp], x9 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn, #12 calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn2, #12 @@ -3241,8 +3217,7 @@ function hevc_put_hevc_qpel_uni_hv12_8_end_neon subs w4, w4, #1 st1 {v1.s}[2], [x0], x1 .endm -1: calc_all2 -.purgem calc +1: calc_all2 qpel_uni_hv12_end_step 2: mov sp, x14 ret endfunc @@ -3261,7 +3236,7 @@ function hevc_put_hevc_qpel_uni_hv16_8_end_neon ld1 {v24.8h, v25.8h}, [x8], x9 ld1 {v26.8h, v27.8h}, [x8], x9 ld1 {v28.8h, v29.8h}, [x8], x9 -.macro calc tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 +.macro qpel_uni_hv16_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\tmp0\().8h, \tmp1\().8h}, [x8], x9 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn, #12 calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn2, #12 @@ -3272,8 +3247,7 @@ function hevc_put_hevc_qpel_uni_hv16_8_end_neon sqxtun2 v1.16b, v2.8h st1 {v1.16b}, [x10], x1 .endm -1: calc_all2 -.purgem calc +1: calc_all2 qpel_uni_hv16_end_step 2: add x0, x0, #16 add sp, sp, #32 subs w7, w7, #16 @@ -4904,14 +4878,13 @@ function hevc_put_hevc_qpel_hv4_8_end_neon add sp, sp, x7, lsl #1 ldr d22, [sp] add sp, sp, x7 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_hv4_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().4h}, [sp], x7 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn subs w3, w3, #1 st1 {v1.4h}, [x0], x7 .endm -1: calc_all -.purgem calc +1: calc_all qpel_hv4_end_step 2: mov sp, x14 ret endfunc @@ -4930,7 +4903,7 @@ function hevc_put_hevc_qpel_hv6_8_end_neon add sp, sp, x7, lsl #1 ldr q22, [sp] add sp, sp, x7 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_hv6_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8h}, [sp], x7 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn2 @@ -4938,8 +4911,7 @@ function hevc_put_hevc_qpel_hv6_8_end_neon subs w3, w3, #1 st1 {v1.s}[2], [x0], x8 .endm -1: calc_all -.purgem calc +1: calc_all qpel_hv6_end_step 2: mov sp, x14 ret endfunc @@ -4965,15 +4937,14 @@ function hevc_put_hevc_qpel_hv8_8_end_neon add sp, sp, x7, lsl #1 ldr q22, [sp] add sp, sp, x7 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_hv8_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8h}, [sp], x7 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn2 subs w3, w3, #1 st1 {v1.8h}, [x0], x7 .endm -1: calc_all -.purgem calc +1: calc_all qpel_hv8_end_step 2: mov sp, x14 ret endfunc @@ -4989,7 +4960,7 @@ function hevc_put_hevc_qpel_hv12_8_end_neon ld1 {v24.8h, v25.8h}, [sp], x7 ld1 {v26.8h, v27.8h}, [sp], x7 ld1 {v28.8h, v29.8h}, [sp], x7 -.macro calc tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 +.macro qpel_hv12_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\tmp0\().8h, \tmp1\().8h}, [sp], x7 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn2 @@ -4998,8 +4969,7 @@ function hevc_put_hevc_qpel_hv12_8_end_neon subs w3, w3, #1 st1 {v2.4h}, [x0], x8 .endm -1: calc_all2 -.purgem calc +1: calc_all2 qpel_hv12_end_step 2: mov sp, x14 ret endfunc @@ -5021,7 +4991,7 @@ function hevc_put_hevc_qpel_hv16_8_end_neon ld1 {v24.8h, v25.8h}, [sp], x7 ld1 {v26.8h, v27.8h}, [sp], x7 ld1 {v28.8h, v29.8h}, [sp], x7 -.macro calc tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 +.macro qpel_hv16_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\tmp0\().8h, \tmp1\().8h}, [sp], x7 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn2 @@ -5030,8 +5000,7 @@ function hevc_put_hevc_qpel_hv16_8_end_neon subs w3, w3, #1 st1 {v1.8h, v2.8h}, [x0], x7 .endm -1: calc_all2 -.purgem calc +1: calc_all2 qpel_hv16_end_step 2: mov sp, x14 ret endfunc @@ -5055,7 +5024,7 @@ function hevc_put_hevc_qpel_hv32_8_end_neon ld1 {v24.8h, v25.8h}, [x8], x7 ld1 {v26.8h, v27.8h}, [x8], x7 ld1 {v28.8h, v29.8h}, [x8], x7 -.macro calc tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 +.macro qpel_hv32_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\tmp0\().8h, \tmp1\().8h}, [x8], x7 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn2 @@ -5064,8 +5033,7 @@ function hevc_put_hevc_qpel_hv32_8_end_neon subs x9, x9, #1 st1 {v1.8h, v2.8h}, [x5], x7 .endm -1: calc_all2 -.purgem calc +1: calc_all2 qpel_hv32_end_step 2: add x0, x0, #32 add sp, sp, #32 subs w6, w6, #16 @@ -6106,7 +6074,7 @@ function hevc_put_hevc_qpel_bi_hv4_8_end_neon ld1 {v20.4h}, [sp], x9 ld1 {v21.4h}, [sp], x9 ld1 {v22.4h}, [sp], x9 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_bi_hv4_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().4h}, [sp], x9 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sshr ld1 {v5.4h}, [x4], x9 // src2 @@ -6116,8 +6084,7 @@ function hevc_put_hevc_qpel_bi_hv4_8_end_neon subs w5, w5, #1 st1 {v1.s}[0], [x0], x1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_bi_hv4_end_step 2: mov sp, x14 ret endfunc @@ -6133,7 +6100,7 @@ function hevc_put_hevc_qpel_bi_hv6_8_end_neon ld1 {v20.8h}, [sp], x9 ld1 {v21.8h}, [sp], x9 ld1 {v22.8h}, [sp], x9 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_bi_hv6_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8h}, [sp], x9 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sshr calc_qpelh2 v2, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sshr @@ -6147,8 +6114,7 @@ function hevc_put_hevc_qpel_bi_hv6_8_end_neon subs w5, w5, #1 st1 {v1.h}[2], [x0], x1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_bi_hv6_end_step 2: mov sp, x14 ret endfunc @@ -6163,7 +6129,7 @@ function hevc_put_hevc_qpel_bi_hv8_8_end_neon ld1 {v20.8h}, [sp], x9 ld1 {v21.8h}, [sp], x9 ld1 {v22.8h}, [sp], x9 -.macro calc tmp, src0, src1, src2, src3, src4, src5, src6, src7 +.macro qpel_bi_hv8_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8h}, [sp], x9 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sshr calc_qpelh2 v2, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sshr @@ -6176,8 +6142,7 @@ function hevc_put_hevc_qpel_bi_hv8_8_end_neon subs w5, w5, #1 st1 {v1.8b}, [x0], x1 .endm -1: calc_all -.purgem calc +1: calc_all qpel_bi_hv8_end_step 2: mov sp, x14 ret endfunc @@ -6197,7 +6162,7 @@ function hevc_put_hevc_qpel_bi_hv16_8_end_neon ld1 {v24.8h, v25.8h}, [x8], x9 ld1 {v26.8h, v27.8h}, [x8], x9 ld1 {v28.8h, v29.8h}, [x8], x9 -.macro calc tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 +.macro qpel_bi_hv16_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\tmp0\().8h, \tmp1\().8h}, [x8], x9 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sshr calc_qpelh2 v2, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sshr @@ -6217,8 +6182,7 @@ function hevc_put_hevc_qpel_bi_hv16_8_end_neon subs x11, x11, #1 st1 {v1.16b}, [x7], x1 .endm -1: calc_all2 -.purgem calc +1: calc_all2 qpel_bi_hv16_end_step 2: add x0, x0, #16 add sp, sp, #32 subs x10, x10, #16 -- 2.52.0 >From e114baa30e030af3b777aa9613bcd31cc0c2e9cf Mon Sep 17 00:00:00 2001 From: Zhao Zhili <[email protected]> Date: Fri, 3 Jul 2026 22:01:55 +0800 Subject: [PATCH 3/3] aarch64/h26x: move step macros before their functions No functional changes. Signed-off-by: Zhao Zhili <[email protected]> --- libavcodec/aarch64/h26x/epel_neon.S | 606 +++++++++++++----------- libavcodec/aarch64/h26x/qpel_neon.S | 707 +++++++++++++++------------- 2 files changed, 697 insertions(+), 616 deletions(-) diff --git a/libavcodec/aarch64/h26x/epel_neon.S b/libavcodec/aarch64/h26x/epel_neon.S index 32ba266eb0..41b62df56d 100644 --- a/libavcodec/aarch64/h26x/epel_neon.S +++ b/libavcodec/aarch64/h26x/epel_neon.S @@ -1095,13 +1095,6 @@ function ff_hevc_put_hevc_epel_bi_h64_8_neon, export=1 ret endfunc -function ff_hevc_put_hevc_epel_bi_v4_8_neon, export=1 - load_epel_filterb x7, x6 - sub x2, x2, x3 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.s}[0], [x2], x3 - ld1 {v17.s}[0], [x2], x3 - ld1 {v18.s}[0], [x2], x3 .macro epel_bi_v4_step src0, src1, src2, src3 ld1 {\src3\().s}[0], [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 @@ -1111,18 +1104,18 @@ function ff_hevc_put_hevc_epel_bi_v4_8_neon, export=1 subs w5, w5, #1 st1 {v4.s}[0], [x0], x1 .endm + +function ff_hevc_put_hevc_epel_bi_v4_8_neon, export=1 + load_epel_filterb x7, x6 + sub x2, x2, x3 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.s}[0], [x2], x3 + ld1 {v17.s}[0], [x2], x3 + ld1 {v18.s}[0], [x2], x3 1: calc_all4 epel_bi_v4_step 2: ret endfunc -function ff_hevc_put_hevc_epel_bi_v6_8_neon, export=1 - load_epel_filterb x7, x6 - sub x2, x2, x3 - sub x1, x1, #4 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.8b}, [x2], x3 - ld1 {v17.8b}, [x2], x3 - ld1 {v18.8b}, [x2], x3 .macro epel_bi_v6_step src0, src1, src2, src3 ld1 {\src3\().8b}, [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 @@ -1133,17 +1126,19 @@ function ff_hevc_put_hevc_epel_bi_v6_8_neon, export=1 subs w5, w5, #1 st1 {v4.h}[2], [x0], x1 .endm -1: calc_all4 epel_bi_v6_step -2: ret -endfunc -function ff_hevc_put_hevc_epel_bi_v8_8_neon, export=1 +function ff_hevc_put_hevc_epel_bi_v6_8_neon, export=1 load_epel_filterb x7, x6 sub x2, x2, x3 + sub x1, x1, #4 mov x10, #(HEVC_MAX_PB_SIZE * 2) ld1 {v16.8b}, [x2], x3 ld1 {v17.8b}, [x2], x3 ld1 {v18.8b}, [x2], x3 +1: calc_all4 epel_bi_v6_step +2: ret +endfunc + .macro epel_bi_v8_step src0, src1, src2, src3 ld1 {\src3\().8b}, [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 @@ -1153,18 +1148,18 @@ function ff_hevc_put_hevc_epel_bi_v8_8_neon, export=1 subs w5, w5, #1 st1 {v4.8b}, [x0], x1 .endm + +function ff_hevc_put_hevc_epel_bi_v8_8_neon, export=1 + load_epel_filterb x7, x6 + sub x2, x2, x3 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.8b}, [x2], x3 + ld1 {v17.8b}, [x2], x3 + ld1 {v18.8b}, [x2], x3 1: calc_all4 epel_bi_v8_step 2: ret endfunc -function ff_hevc_put_hevc_epel_bi_v12_8_neon, export=1 - load_epel_filterb x7, x6 - sub x1, x1, #8 - sub x2, x2, x3 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.16b}, [x2], x3 - ld1 {v17.16b}, [x2], x3 - ld1 {v18.16b}, [x2], x3 .macro epel_bi_v12_step src0, src1, src2, src3 ld1 {\src3\().16b}, [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 @@ -1178,17 +1173,19 @@ function ff_hevc_put_hevc_epel_bi_v12_8_neon, export=1 subs w5, w5, #1 st1 {v4.s}[2], [x0], x1 .endm -1: calc_all4 epel_bi_v12_step -2: ret -endfunc -function ff_hevc_put_hevc_epel_bi_v16_8_neon, export=1 +function ff_hevc_put_hevc_epel_bi_v12_8_neon, export=1 load_epel_filterb x7, x6 + sub x1, x1, #8 sub x2, x2, x3 mov x10, #(HEVC_MAX_PB_SIZE * 2) ld1 {v16.16b}, [x2], x3 ld1 {v17.16b}, [x2], x3 ld1 {v18.16b}, [x2], x3 +1: calc_all4 epel_bi_v12_step +2: ret +endfunc + .macro epel_bi_v16_step src0, src1, src2, src3 ld1 {\src3\().16b}, [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 @@ -1201,17 +1198,18 @@ function ff_hevc_put_hevc_epel_bi_v16_8_neon, export=1 st1 {v4.16b}, [x0], x1 subs w5, w5, #1 .endm + +function ff_hevc_put_hevc_epel_bi_v16_8_neon, export=1 + load_epel_filterb x7, x6 + sub x2, x2, x3 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.16b}, [x2], x3 + ld1 {v17.16b}, [x2], x3 + ld1 {v18.16b}, [x2], x3 1: calc_all4 epel_bi_v16_step 2: ret endfunc -function ff_hevc_put_hevc_epel_bi_v24_8_neon, export=1 - load_epel_filterb x7, x6 - sub x2, x2, x3 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.8b, v17.8b, v18.8b}, [x2], x3 - ld1 {v19.8b, v20.8b, v21.8b}, [x2], x3 - ld1 {v22.8b, v23.8b, v24.8b}, [x2], x3 .macro epel_bi_v24_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().8b, \src10\().8b, \src11\().8b}, [x2], x3 calc_epelb v4, \src0, \src3, \src6, \src9 @@ -1227,17 +1225,18 @@ function ff_hevc_put_hevc_epel_bi_v24_8_neon, export=1 subs w5, w5, #1 st1 {v4.8b, v5.8b, v6.8b}, [x0], x1 .endm + +function ff_hevc_put_hevc_epel_bi_v24_8_neon, export=1 + load_epel_filterb x7, x6 + sub x2, x2, x3 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.8b, v17.8b, v18.8b}, [x2], x3 + ld1 {v19.8b, v20.8b, v21.8b}, [x2], x3 + ld1 {v22.8b, v23.8b, v24.8b}, [x2], x3 1: calc_all12 epel_bi_v24_step 2: ret endfunc -function ff_hevc_put_hevc_epel_bi_v32_8_neon, export=1 - load_epel_filterb x7, x6 - sub x2, x2, x3 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.16b, v17.16b}, [x2], x3 - ld1 {v18.16b, v19.16b}, [x2], x3 - ld1 {v20.16b, v21.16b}, [x2], x3 .macro epel_bi_v32_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().16b, \src7\().16b}, [x2], x3 calc_epelb v4, \src0, \src2, \src4, \src6 @@ -1256,6 +1255,14 @@ function ff_hevc_put_hevc_epel_bi_v32_8_neon, export=1 st1 {v4.16b, v5.16b}, [x0], x1 subs w5, w5, #1 .endm + +function ff_hevc_put_hevc_epel_bi_v32_8_neon, export=1 + load_epel_filterb x7, x6 + sub x2, x2, x3 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.16b, v17.16b}, [x2], x3 + ld1 {v18.16b, v19.16b}, [x2], x3 + ld1 {v20.16b, v21.16b}, [x2], x3 1: calc_all8 epel_bi_v32_step 2: ret endfunc @@ -1304,6 +1311,14 @@ function ff_hevc_put_hevc_epel_bi_v64_8_neon, export=1 ret endfunc +.macro epel_v4_step src0, src1, src2, src3 + ld1 {\src3\().s}[0], [x1], x2 + movi v4.8h, #0 + calc_epelb v4, \src0, \src1, \src2, \src3 + subs w3, w3, #1 + st1 {v4.4h}, [x0], x10 +.endm + function ff_hevc_put_hevc_epel_v4_8_neon, export=1 load_epel_filterb x5, x4 sub x1, x1, x2 @@ -1312,17 +1327,19 @@ function ff_hevc_put_hevc_epel_v4_8_neon, export=1 ldr s17, [x1, x2] add x1, x1, x2, lsl #1 ld1 {v18.s}[0], [x1], x2 -.macro epel_v4_step src0, src1, src2, src3 - ld1 {\src3\().s}[0], [x1], x2 - movi v4.8h, #0 - calc_epelb v4, \src0, \src1, \src2, \src3 - subs w3, w3, #1 - st1 {v4.4h}, [x0], x10 -.endm 1: calc_all4 epel_v4_step 2: ret endfunc +.macro epel_v6_step src0, src1, src2, src3 + ld1 {\src3\().8b}, [x1], x2 + movi v4.8h, #0 + calc_epelb v4, \src0, \src1, \src2, \src3 + st1 {v4.d}[0], [x0], #8 + subs w3, w3, #1 + st1 {v4.s}[2], [x0], x10 +.endm + function ff_hevc_put_hevc_epel_v6_8_neon, export=1 load_epel_filterb x5, x4 sub x1, x1, x2 @@ -1331,18 +1348,18 @@ function ff_hevc_put_hevc_epel_v6_8_neon, export=1 ldr d17, [x1, x2] add x1, x1, x2, lsl #1 ld1 {v18.8b}, [x1], x2 -.macro epel_v6_step src0, src1, src2, src3 - ld1 {\src3\().8b}, [x1], x2 - movi v4.8h, #0 - calc_epelb v4, \src0, \src1, \src2, \src3 - st1 {v4.d}[0], [x0], #8 - subs w3, w3, #1 - st1 {v4.s}[2], [x0], x10 -.endm 1: calc_all4 epel_v6_step 2: ret endfunc +.macro epel_v8_step src0, src1, src2, src3 + ld1 {\src3\().8b}, [x1], x2 + movi v4.8h, #0 + calc_epelb v4, \src0, \src1, \src2, \src3 + subs w3, w3, #1 + st1 {v4.8h}, [x0], x10 +.endm + function ff_hevc_put_hevc_epel_v8_8_neon, export=1 load_epel_filterb x5, x4 sub x1, x1, x2 @@ -1351,25 +1368,10 @@ function ff_hevc_put_hevc_epel_v8_8_neon, export=1 ldr d17, [x1, x2] add x1, x1, x2, lsl #1 ld1 {v18.8b}, [x1], x2 -.macro epel_v8_step src0, src1, src2, src3 - ld1 {\src3\().8b}, [x1], x2 - movi v4.8h, #0 - calc_epelb v4, \src0, \src1, \src2, \src3 - subs w3, w3, #1 - st1 {v4.8h}, [x0], x10 -.endm 1: calc_all4 epel_v8_step 2: ret endfunc -function ff_hevc_put_hevc_epel_v12_8_neon, export=1 - load_epel_filterb x5, x4 - sub x1, x1, x2 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ldr q16, [x1] - ldr q17, [x1, x2] - add x1, x1, x2, lsl #1 - ld1 {v18.16b}, [x1], x2 .macro epel_v12_step src0, src1, src2, src3 ld1 {\src3\().16b}, [x1], x2 movi v4.8h, #0 @@ -1381,11 +1383,8 @@ function ff_hevc_put_hevc_epel_v12_8_neon, export=1 str d5, [x0, #16] add x0, x0, x10 .endm -1: calc_all4 epel_v12_step -2: ret -endfunc -function ff_hevc_put_hevc_epel_v16_8_neon, export=1 +function ff_hevc_put_hevc_epel_v12_8_neon, export=1 load_epel_filterb x5, x4 sub x1, x1, x2 mov x10, #(HEVC_MAX_PB_SIZE * 2) @@ -1393,6 +1392,10 @@ function ff_hevc_put_hevc_epel_v16_8_neon, export=1 ldr q17, [x1, x2] add x1, x1, x2, lsl #1 ld1 {v18.16b}, [x1], x2 +1: calc_all4 epel_v12_step +2: ret +endfunc + .macro epel_v16_step src0, src1, src2, src3 ld1 {\src3\().16b}, [x1], x2 movi v4.8h, #0 @@ -1402,17 +1405,19 @@ function ff_hevc_put_hevc_epel_v16_8_neon, export=1 subs w3, w3, #1 st1 {v4.8h, v5.8h}, [x0], x10 .endm + +function ff_hevc_put_hevc_epel_v16_8_neon, export=1 + load_epel_filterb x5, x4 + sub x1, x1, x2 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ldr q16, [x1] + ldr q17, [x1, x2] + add x1, x1, x2, lsl #1 + ld1 {v18.16b}, [x1], x2 1: calc_all4 epel_v16_step 2: ret endfunc -function ff_hevc_put_hevc_epel_v24_8_neon, export=1 - load_epel_filterb x5, x4 - sub x1, x1, x2 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.8b, v17.8b, v18.8b}, [x1], x2 - ld1 {v19.8b, v20.8b, v21.8b}, [x1], x2 - ld1 {v22.8b, v23.8b, v24.8b}, [x1], x2 .macro epel_v24_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().8b, \src10\().8b, \src11\().8b}, [x1], x2 movi v4.8h, #0 @@ -1424,17 +1429,18 @@ function ff_hevc_put_hevc_epel_v24_8_neon, export=1 subs w3, w3, #1 st1 {v4.8h-v6.8h}, [x0], x10 .endm + +function ff_hevc_put_hevc_epel_v24_8_neon, export=1 + load_epel_filterb x5, x4 + sub x1, x1, x2 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.8b, v17.8b, v18.8b}, [x1], x2 + ld1 {v19.8b, v20.8b, v21.8b}, [x1], x2 + ld1 {v22.8b, v23.8b, v24.8b}, [x1], x2 1: calc_all12 epel_v24_step 2: ret endfunc -function ff_hevc_put_hevc_epel_v32_8_neon, export=1 - load_epel_filterb x5, x4 - sub x1, x1, x2 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.16b, v17.16b}, [x1], x2 - ld1 {v18.16b, v19.16b}, [x1], x2 - ld1 {v20.16b, v21.16b}, [x1], x2 .macro epel_v32_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().16b, \src7\().16b}, [x1], x2 movi v4.8h, #0 @@ -1448,17 +1454,18 @@ function ff_hevc_put_hevc_epel_v32_8_neon, export=1 subs w3, w3, #1 st1 {v4.8h-v7.8h}, [x0], x10 .endm + +function ff_hevc_put_hevc_epel_v32_8_neon, export=1 + load_epel_filterb x5, x4 + sub x1, x1, x2 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.16b, v17.16b}, [x1], x2 + ld1 {v18.16b, v19.16b}, [x1], x2 + ld1 {v20.16b, v21.16b}, [x1], x2 1: calc_all8 epel_v32_step 2: ret endfunc -function ff_hevc_put_hevc_epel_v48_8_neon, export=1 - load_epel_filterb x5, x4 - sub x1, x1, x2 - mov x10, #64 - ld1 {v16.16b, v17.16b, v18.16b}, [x1], x2 - ld1 {v19.16b, v20.16b, v21.16b}, [x1], x2 - ld1 {v22.16b, v23.16b, v24.16b}, [x1], x2 .macro epel_v48_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().16b, \src10\().16b, \src11\().16b}, [x1], x2 movi v4.8h, #0 @@ -1477,18 +1484,18 @@ function ff_hevc_put_hevc_epel_v48_8_neon, export=1 subs w3, w3, #1 st1 {v28.8h-v29.8h}, [x0], x10 .endm + +function ff_hevc_put_hevc_epel_v48_8_neon, export=1 + load_epel_filterb x5, x4 + sub x1, x1, x2 + mov x10, #64 + ld1 {v16.16b, v17.16b, v18.16b}, [x1], x2 + ld1 {v19.16b, v20.16b, v21.16b}, [x1], x2 + ld1 {v22.16b, v23.16b, v24.16b}, [x1], x2 1: calc_all12 epel_v48_step 2: ret endfunc -function ff_hevc_put_hevc_epel_v64_8_neon, export=1 - load_epel_filterb x5, x4 - sub sp, sp, #32 - st1 {v8.8b-v11.8b}, [sp] - sub x1, x1, x2 - ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x1], x2 - ld1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x1], x2 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x1], x2 .macro epel_v64_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\src12\().16b-\src15\().16b}, [x1], x2 movi v4.8h, #0 @@ -1511,18 +1518,21 @@ function ff_hevc_put_hevc_epel_v64_8_neon, export=1 subs w3, w3, #1 st1 {v8.8h-v11.8h}, [x0], #64 .endm + +function ff_hevc_put_hevc_epel_v64_8_neon, export=1 + load_epel_filterb x5, x4 + sub sp, sp, #32 + st1 {v8.8b-v11.8b}, [sp] + sub x1, x1, x2 + ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x1], x2 + ld1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x1], x2 + ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x1], x2 1: calc_all16 epel_v64_step 2: ld1 {v8.8b-v11.8b}, [sp] add sp, sp, #32 ret endfunc -function ff_hevc_put_hevc_epel_uni_v4_8_neon, export=1 - load_epel_filterb x6, x5 - sub x2, x2, x3 - ld1 {v16.s}[0], [x2], x3 - ld1 {v17.s}[0], [x2], x3 - ld1 {v18.s}[0], [x2], x3 .macro epel_uni_v4_step src0, src1, src2, src3 ld1 {\src3\().s}[0], [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 @@ -1530,17 +1540,17 @@ function ff_hevc_put_hevc_epel_uni_v4_8_neon, export=1 subs w4, w4, #1 st1 {v4.s}[0], [x0], x1 .endm + +function ff_hevc_put_hevc_epel_uni_v4_8_neon, export=1 + load_epel_filterb x6, x5 + sub x2, x2, x3 + ld1 {v16.s}[0], [x2], x3 + ld1 {v17.s}[0], [x2], x3 + ld1 {v18.s}[0], [x2], x3 1: calc_all4 epel_uni_v4_step 2: ret endfunc -function ff_hevc_put_hevc_epel_uni_v6_8_neon, export=1 - load_epel_filterb x6, x5 - sub x2, x2, x3 - sub x1, x1, #4 - ld1 {v16.8b}, [x2], x3 - ld1 {v17.8b}, [x2], x3 - ld1 {v18.8b}, [x2], x3 .macro epel_uni_v6_step src0, src1, src2, src3 ld1 {\src3\().8b}, [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 @@ -1549,16 +1559,18 @@ function ff_hevc_put_hevc_epel_uni_v6_8_neon, export=1 subs w4, w4, #1 st1 {v4.h}[2], [x0], x1 .endm + +function ff_hevc_put_hevc_epel_uni_v6_8_neon, export=1 + load_epel_filterb x6, x5 + sub x2, x2, x3 + sub x1, x1, #4 + ld1 {v16.8b}, [x2], x3 + ld1 {v17.8b}, [x2], x3 + ld1 {v18.8b}, [x2], x3 1: calc_all4 epel_uni_v6_step 2: ret endfunc -function ff_hevc_put_hevc_epel_uni_v8_8_neon, export=1 - load_epel_filterb x6, x5 - sub x2, x2, x3 - ld1 {v16.8b}, [x2], x3 - ld1 {v17.8b}, [x2], x3 - ld1 {v18.8b}, [x2], x3 .macro epel_uni_v8_step src0, src1, src2, src3 ld1 {\src3\().8b}, [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 @@ -1566,17 +1578,17 @@ function ff_hevc_put_hevc_epel_uni_v8_8_neon, export=1 subs w4, w4, #1 st1 {v4.8b}, [x0], x1 .endm + +function ff_hevc_put_hevc_epel_uni_v8_8_neon, export=1 + load_epel_filterb x6, x5 + sub x2, x2, x3 + ld1 {v16.8b}, [x2], x3 + ld1 {v17.8b}, [x2], x3 + ld1 {v18.8b}, [x2], x3 1: calc_all4 epel_uni_v8_step 2: ret endfunc -function ff_hevc_put_hevc_epel_uni_v12_8_neon, export=1 - load_epel_filterb x6, x5 - sub x2, x2, x3 - sub x1, x1, #8 - ld1 {v16.16b}, [x2], x3 - ld1 {v17.16b}, [x2], x3 - ld1 {v18.16b}, [x2], x3 .macro epel_uni_v12_step src0, src1, src2, src3 ld1 {\src3\().16b}, [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 @@ -1587,16 +1599,18 @@ function ff_hevc_put_hevc_epel_uni_v12_8_neon, export=1 st1 {v4.8b}, [x0], #8 st1 {v4.s}[2], [x0], x1 .endm + +function ff_hevc_put_hevc_epel_uni_v12_8_neon, export=1 + load_epel_filterb x6, x5 + sub x2, x2, x3 + sub x1, x1, #8 + ld1 {v16.16b}, [x2], x3 + ld1 {v17.16b}, [x2], x3 + ld1 {v18.16b}, [x2], x3 1: calc_all4 epel_uni_v12_step 2: ret endfunc -function ff_hevc_put_hevc_epel_uni_v16_8_neon, export=1 - load_epel_filterb x6, x5 - sub x2, x2, x3 - ld1 {v16.16b}, [x2], x3 - ld1 {v17.16b}, [x2], x3 - ld1 {v18.16b}, [x2], x3 .macro epel_uni_v16_step src0, src1, src2, src3 ld1 {\src3\().16b}, [x2], x3 calc_epelb v4, \src0, \src1, \src2, \src3 @@ -1606,16 +1620,17 @@ function ff_hevc_put_hevc_epel_uni_v16_8_neon, export=1 subs w4, w4, #1 st1 {v4.16b}, [x0], x1 .endm + +function ff_hevc_put_hevc_epel_uni_v16_8_neon, export=1 + load_epel_filterb x6, x5 + sub x2, x2, x3 + ld1 {v16.16b}, [x2], x3 + ld1 {v17.16b}, [x2], x3 + ld1 {v18.16b}, [x2], x3 1: calc_all4 epel_uni_v16_step 2: ret endfunc -function ff_hevc_put_hevc_epel_uni_v24_8_neon, export=1 - load_epel_filterb x6, x5 - sub x2, x2, x3 - ld1 {v16.8b, v17.8b, v18.8b}, [x2], x3 - ld1 {v19.8b, v20.8b, v21.8b}, [x2], x3 - ld1 {v22.8b, v23.8b, v24.8b}, [x2], x3 .macro epel_uni_v24_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().8b, \src10\().8b, \src11\().8b}, [x2], x3 calc_epelb v4, \src0, \src3, \src6, \src9 @@ -1627,16 +1642,17 @@ function ff_hevc_put_hevc_epel_uni_v24_8_neon, export=1 subs w4, w4, #1 st1 {v4.8b-v6.8b}, [x0], x1 .endm + +function ff_hevc_put_hevc_epel_uni_v24_8_neon, export=1 + load_epel_filterb x6, x5 + sub x2, x2, x3 + ld1 {v16.8b, v17.8b, v18.8b}, [x2], x3 + ld1 {v19.8b, v20.8b, v21.8b}, [x2], x3 + ld1 {v22.8b, v23.8b, v24.8b}, [x2], x3 1: calc_all12 epel_uni_v24_step 2: ret endfunc -function ff_hevc_put_hevc_epel_uni_v32_8_neon, export=1 - load_epel_filterb x6, x5 - sub x2, x2, x3 - ld1 {v16.16b, v17.16b}, [x2], x3 - ld1 {v18.16b, v19.16b}, [x2], x3 - ld1 {v20.16b, v21.16b}, [x2], x3 .macro epel_uni_v32_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().16b, \src7\().16b}, [x2], x3 calc_epelb v4, \src0, \src2, \src4, \src6 @@ -1650,16 +1666,17 @@ function ff_hevc_put_hevc_epel_uni_v32_8_neon, export=1 subs w4, w4, #1 st1 {v4.16b, v5.16b}, [x0], x1 .endm + +function ff_hevc_put_hevc_epel_uni_v32_8_neon, export=1 + load_epel_filterb x6, x5 + sub x2, x2, x3 + ld1 {v16.16b, v17.16b}, [x2], x3 + ld1 {v18.16b, v19.16b}, [x2], x3 + ld1 {v20.16b, v21.16b}, [x2], x3 1: calc_all8 epel_uni_v32_step 2: ret endfunc -function ff_hevc_put_hevc_epel_uni_v48_8_neon, export=1 - load_epel_filterb x6, x5 - sub x2, x2, x3 - ld1 {v16.16b, v17.16b, v18.16b}, [x2], x3 - ld1 {v19.16b, v20.16b, v21.16b}, [x2], x3 - ld1 {v22.16b, v23.16b, v24.16b}, [x2], x3 .macro epel_uni_v48_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().16b, \src10\().16b, \src11\().16b}, [x2], x3 calc_epelb v4, \src0, \src3, \src6, \src9 @@ -1677,18 +1694,17 @@ function ff_hevc_put_hevc_epel_uni_v48_8_neon, export=1 subs w4, w4, #1 st1 {v4.16b, v5.16b, v6.16b}, [x0], x1 .endm + +function ff_hevc_put_hevc_epel_uni_v48_8_neon, export=1 + load_epel_filterb x6, x5 + sub x2, x2, x3 + ld1 {v16.16b, v17.16b, v18.16b}, [x2], x3 + ld1 {v19.16b, v20.16b, v21.16b}, [x2], x3 + ld1 {v22.16b, v23.16b, v24.16b}, [x2], x3 1: calc_all12 epel_uni_v48_step 2: ret endfunc -function ff_hevc_put_hevc_epel_uni_v64_8_neon, export=1 - load_epel_filterb x6, x5 - sub sp, sp, #32 - st1 {v8.8b-v11.8b}, [sp] - sub x2, x2, x3 - ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x2], x3 - ld1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x2], x3 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x2], x3 .macro epel_uni_v64_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\src12\().16b, \src13\().16b, \src14\().16b, \src15\().16b}, [x2], x3 calc_epelb v10, \src3, \src7, \src11, \src15 @@ -1710,6 +1726,15 @@ function ff_hevc_put_hevc_epel_uni_v64_8_neon, export=1 subs w4, w4, #1 st1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x0], x1 .endm + +function ff_hevc_put_hevc_epel_uni_v64_8_neon, export=1 + load_epel_filterb x6, x5 + sub sp, sp, #32 + st1 {v8.8b-v11.8b}, [sp] + sub x2, x2, x3 + ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x2], x3 + ld1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x2], x3 + ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x2], x3 1: calc_all16 epel_uni_v64_step 2: ld1 {v8.8b-v11.8b}, [sp], #32 ret @@ -3046,6 +3071,13 @@ function vvc_put_epel_hv4_8_end_neon b 0f endfunc +.macro epel_hv4_end_step src0, src1, src2, src3 + ld1 {\src3\().4h}, [sp], x10 + calc_epelh v4, \src0, \src1, \src2, \src3 + subs w3, w3, #1 + st1 {v4.4h}, [x0], x10 +.endm + function hevc_put_hevc_epel_hv4_8_end_neon load_epel_filterh x5, x4 mov x10, #(HEVC_MAX_PB_SIZE * 2) @@ -3054,16 +3086,19 @@ function hevc_put_hevc_epel_hv4_8_end_neon ldr d17, [sp, x10] add sp, sp, x10, lsl #1 ld1 {v18.4h}, [sp], x10 -.macro epel_hv4_end_step src0, src1, src2, src3 - ld1 {\src3\().4h}, [sp], x10 - calc_epelh v4, \src0, \src1, \src2, \src3 - subs w3, w3, #1 - st1 {v4.4h}, [x0], x10 -.endm 1: calc_all4 epel_hv4_end_step 2: ret endfunc +.macro epel_hv6_end_step src0, src1, src2, src3 + ld1 {\src3\().8h}, [sp], x10 + calc_epelh v4, \src0, \src1, \src2, \src3 + calc_epelh2 v4, v5, \src0, \src1, \src2, \src3 + st1 {v4.d}[0], [x0], #8 + subs w3, w3, #1 + st1 {v4.s}[2], [x0], x5 +.endm + function hevc_put_hevc_epel_hv6_8_end_neon load_epel_filterh x5, x4 mov x5, #120 @@ -3072,14 +3107,6 @@ function hevc_put_hevc_epel_hv6_8_end_neon ldr q17, [sp, x10] add sp, sp, x10, lsl #1 ld1 {v18.8h}, [sp], x10 -.macro epel_hv6_end_step src0, src1, src2, src3 - ld1 {\src3\().8h}, [sp], x10 - calc_epelh v4, \src0, \src1, \src2, \src3 - calc_epelh2 v4, v5, \src0, \src1, \src2, \src3 - st1 {v4.d}[0], [x0], #8 - subs w3, w3, #1 - st1 {v4.s}[2], [x0], x5 -.endm 1: calc_all4 epel_hv6_end_step 2: ret endfunc @@ -3090,6 +3117,14 @@ function vvc_put_epel_hv8_8_end_neon b 0f endfunc +.macro epel_hv8_end_step src0, src1, src2, src3 + ld1 {\src3\().8h}, [sp], x10 + calc_epelh v4, \src0, \src1, \src2, \src3 + calc_epelh2 v4, v5, \src0, \src1, \src2, \src3 + subs w3, w3, #1 + st1 {v4.8h}, [x0], x10 +.endm + function hevc_put_hevc_epel_hv8_8_end_neon load_epel_filterh x5, x4 mov x10, #(HEVC_MAX_PB_SIZE * 2) @@ -3098,24 +3133,10 @@ function hevc_put_hevc_epel_hv8_8_end_neon ldr q17, [sp, x10] add sp, sp, x10, lsl #1 ld1 {v18.8h}, [sp], x10 -.macro epel_hv8_end_step src0, src1, src2, src3 - ld1 {\src3\().8h}, [sp], x10 - calc_epelh v4, \src0, \src1, \src2, \src3 - calc_epelh2 v4, v5, \src0, \src1, \src2, \src3 - subs w3, w3, #1 - st1 {v4.8h}, [x0], x10 -.endm 1: calc_all4 epel_hv8_end_step 2: ret endfunc -function hevc_put_hevc_epel_hv12_8_end_neon - load_epel_filterh x5, x4 - mov x5, #112 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.8h, v17.8h}, [sp], x10 - ld1 {v18.8h, v19.8h}, [sp], x10 - ld1 {v20.8h, v21.8h}, [sp], x10 .macro epel_hv12_end_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().8h, \src7\().8h}, [sp], x10 calc_epelh v4, \src0, \src2, \src4, \src6 @@ -3125,6 +3146,14 @@ function hevc_put_hevc_epel_hv12_8_end_neon subs w3, w3, #1 st1 {v5.4h}, [x0], x5 .endm + +function hevc_put_hevc_epel_hv12_8_end_neon + load_epel_filterh x5, x4 + mov x5, #112 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.8h, v17.8h}, [sp], x10 + ld1 {v18.8h, v19.8h}, [sp], x10 + ld1 {v20.8h, v21.8h}, [sp], x10 1: calc_all8 epel_hv12_end_step 2: ret endfunc @@ -3135,13 +3164,6 @@ function vvc_put_epel_hv16_8_end_neon b 0f endfunc -function hevc_put_hevc_epel_hv16_8_end_neon - load_epel_filterh x5, x4 - mov x10, #(HEVC_MAX_PB_SIZE * 2) -0: - ld1 {v16.8h, v17.8h}, [sp], x10 - ld1 {v18.8h, v19.8h}, [sp], x10 - ld1 {v20.8h, v21.8h}, [sp], x10 .macro epel_hv16_end_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().8h, \src7\().8h}, [sp], x10 calc_epelh v4, \src0, \src2, \src4, \src6 @@ -3151,16 +3173,18 @@ function hevc_put_hevc_epel_hv16_8_end_neon subs w3, w3, #1 st1 {v4.8h, v5.8h}, [x0], x10 .endm + +function hevc_put_hevc_epel_hv16_8_end_neon + load_epel_filterh x5, x4 + mov x10, #(HEVC_MAX_PB_SIZE * 2) +0: + ld1 {v16.8h, v17.8h}, [sp], x10 + ld1 {v18.8h, v19.8h}, [sp], x10 + ld1 {v20.8h, v21.8h}, [sp], x10 1: calc_all8 epel_hv16_end_step 2: ret endfunc -function hevc_put_hevc_epel_hv24_8_end_neon - load_epel_filterh x5, x4 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.8h, v17.8h, v18.8h}, [sp], x10 - ld1 {v19.8h, v20.8h, v21.8h}, [sp], x10 - ld1 {v22.8h, v23.8h, v24.8h}, [sp], x10 .macro epel_hv24_end_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().8h-\src11\().8h}, [sp], x10 calc_epelh v4, \src0, \src3, \src6, \src9 @@ -3172,6 +3196,13 @@ function hevc_put_hevc_epel_hv24_8_end_neon subs w3, w3, #1 st1 {v4.8h-v6.8h}, [x0], x10 .endm + +function hevc_put_hevc_epel_hv24_8_end_neon + load_epel_filterh x5, x4 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.8h, v17.8h, v18.8h}, [sp], x10 + ld1 {v19.8h, v20.8h, v21.8h}, [sp], x10 + ld1 {v22.8h, v23.8h, v24.8h}, [sp], x10 1: calc_all12 epel_hv24_end_step 2: ret endfunc @@ -3468,12 +3499,6 @@ endfunc epel_hv neon -function hevc_put_hevc_epel_uni_hv4_8_end_neon - load_epel_filterh x6, x5 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.4h}, [sp], x10 - ld1 {v17.4h}, [sp], x10 - ld1 {v18.4h}, [sp], x10 .macro epel_uni_hv4_end_step src0, src1, src2, src3 ld1 {\src3\().4h}, [sp], x10 calc_epelh v4, \src0, \src1, \src2, \src3 @@ -3481,17 +3506,17 @@ function hevc_put_hevc_epel_uni_hv4_8_end_neon subs w4, w4, #1 st1 {v4.s}[0], [x0], x1 .endm + +function hevc_put_hevc_epel_uni_hv4_8_end_neon + load_epel_filterh x6, x5 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.4h}, [sp], x10 + ld1 {v17.4h}, [sp], x10 + ld1 {v18.4h}, [sp], x10 1: calc_all4 epel_uni_hv4_end_step 2: ret endfunc -function hevc_put_hevc_epel_uni_hv6_8_end_neon - load_epel_filterh x6, x5 - sub x1, x1, #4 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.8h}, [sp], x10 - ld1 {v17.8h}, [sp], x10 - ld1 {v18.8h}, [sp], x10 .macro epel_uni_hv6_end_step src0, src1, src2, src3 ld1 {\src3\().8h}, [sp], x10 calc_epelh v4, \src0, \src1, \src2, \src3 @@ -3501,16 +3526,18 @@ function hevc_put_hevc_epel_uni_hv6_8_end_neon subs w4, w4, #1 st1 {v4.h}[2], [x0], x1 .endm -1: calc_all4 epel_uni_hv6_end_step -2: ret -endfunc -function hevc_put_hevc_epel_uni_hv8_8_end_neon +function hevc_put_hevc_epel_uni_hv6_8_end_neon load_epel_filterh x6, x5 + sub x1, x1, #4 mov x10, #(HEVC_MAX_PB_SIZE * 2) ld1 {v16.8h}, [sp], x10 ld1 {v17.8h}, [sp], x10 ld1 {v18.8h}, [sp], x10 +1: calc_all4 epel_uni_hv6_end_step +2: ret +endfunc + .macro epel_uni_hv8_end_step src0, src1, src2, src3 ld1 {\src3\().8h}, [sp], x10 calc_epelh v4, \src0, \src1, \src2, \src3 @@ -3519,17 +3546,17 @@ function hevc_put_hevc_epel_uni_hv8_8_end_neon subs w4, w4, #1 st1 {v4.8b}, [x0], x1 .endm + +function hevc_put_hevc_epel_uni_hv8_8_end_neon + load_epel_filterh x6, x5 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.8h}, [sp], x10 + ld1 {v17.8h}, [sp], x10 + ld1 {v18.8h}, [sp], x10 1: calc_all4 epel_uni_hv8_end_step 2: ret endfunc -function hevc_put_hevc_epel_uni_hv12_8_end_neon - load_epel_filterh x6, x5 - sub x1, x1, #8 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.8h, v17.8h}, [sp], x10 - ld1 {v18.8h, v19.8h}, [sp], x10 - ld1 {v20.8h, v21.8h}, [sp], x10 .macro epel_uni_hv12_end_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().8h, \src7\().8h}, [sp], x10 calc_epelh v4, \src0, \src2, \src4, \src6 @@ -3541,16 +3568,18 @@ function hevc_put_hevc_epel_uni_hv12_8_end_neon st1 {v4.s}[2], [x0], x1 subs w4, w4, #1 .endm -1: calc_all8 epel_uni_hv12_end_step -2: ret -endfunc -function hevc_put_hevc_epel_uni_hv16_8_end_neon +function hevc_put_hevc_epel_uni_hv12_8_end_neon load_epel_filterh x6, x5 + sub x1, x1, #8 mov x10, #(HEVC_MAX_PB_SIZE * 2) ld1 {v16.8h, v17.8h}, [sp], x10 ld1 {v18.8h, v19.8h}, [sp], x10 ld1 {v20.8h, v21.8h}, [sp], x10 +1: calc_all8 epel_uni_hv12_end_step +2: ret +endfunc + .macro epel_uni_hv16_end_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().8h, \src7\().8h}, [sp], x10 calc_epelh v4, \src0, \src2, \src4, \src6 @@ -3562,16 +3591,17 @@ function hevc_put_hevc_epel_uni_hv16_8_end_neon subs w4, w4, #1 st1 {v4.16b}, [x0], x1 .endm + +function hevc_put_hevc_epel_uni_hv16_8_end_neon + load_epel_filterh x6, x5 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.8h, v17.8h}, [sp], x10 + ld1 {v18.8h, v19.8h}, [sp], x10 + ld1 {v20.8h, v21.8h}, [sp], x10 1: calc_all8 epel_uni_hv16_end_step 2: ret endfunc -function hevc_put_hevc_epel_uni_hv24_8_end_neon - load_epel_filterh x6, x5 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.8h, v17.8h, v18.8h}, [sp], x10 - ld1 {v19.8h, v20.8h, v21.8h}, [sp], x10 - ld1 {v22.8h, v23.8h, v24.8h}, [sp], x10 .macro epel_uni_hv24_end_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().8h, \src10\().8h, \src11\().8h}, [sp], x10 calc_epelh v4, \src0, \src3, \src6, \src9 @@ -3586,6 +3616,13 @@ function hevc_put_hevc_epel_uni_hv24_8_end_neon subs w4, w4, #1 st1 {v4.8b, v5.8b, v6.8b}, [x0], x1 .endm + +function hevc_put_hevc_epel_uni_hv24_8_end_neon + load_epel_filterh x6, x5 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.8h, v17.8h, v18.8h}, [sp], x10 + ld1 {v19.8h, v20.8h, v21.8h}, [sp], x10 + ld1 {v22.8h, v23.8h, v24.8h}, [sp], x10 1: calc_all12 epel_uni_hv24_end_step 2: ret endfunc @@ -4831,12 +4868,6 @@ endfunc epel_uni_w_hv neon -function hevc_put_hevc_epel_bi_hv4_8_end_neon - load_epel_filterh x7, x6 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.4h}, [sp], x10 - ld1 {v17.4h}, [sp], x10 - ld1 {v18.4h}, [sp], x10 .macro epel_bi_hv4_end_step src0, src1, src2, src3 ld1 {\src3\().4h}, [sp], x10 calc_epelh v4, \src0, \src1, \src2, \src3 @@ -4846,17 +4877,17 @@ function hevc_put_hevc_epel_bi_hv4_8_end_neon subs w5, w5, #1 st1 {v4.s}[0], [x0], x1 .endm + +function hevc_put_hevc_epel_bi_hv4_8_end_neon + load_epel_filterh x7, x6 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.4h}, [sp], x10 + ld1 {v17.4h}, [sp], x10 + ld1 {v18.4h}, [sp], x10 1: calc_all4 epel_bi_hv4_end_step 2: ret endfunc -function hevc_put_hevc_epel_bi_hv6_8_end_neon - load_epel_filterh x7, x6 - sub x1, x1, #4 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.8h}, [sp], x10 - ld1 {v17.8h}, [sp], x10 - ld1 {v18.8h}, [sp], x10 .macro epel_bi_hv6_end_step src0, src1, src2, src3 ld1 {\src3\().8h}, [sp], x10 calc_epelh v4, \src0, \src1, \src2, \src3 @@ -4868,16 +4899,18 @@ function hevc_put_hevc_epel_bi_hv6_8_end_neon subs w5, w5, #1 st1 {v4.h}[2], [x0], x1 .endm -1: calc_all4 epel_bi_hv6_end_step -2: ret -endfunc -function hevc_put_hevc_epel_bi_hv8_8_end_neon +function hevc_put_hevc_epel_bi_hv6_8_end_neon load_epel_filterh x7, x6 + sub x1, x1, #4 mov x10, #(HEVC_MAX_PB_SIZE * 2) ld1 {v16.8h}, [sp], x10 ld1 {v17.8h}, [sp], x10 ld1 {v18.8h}, [sp], x10 +1: calc_all4 epel_bi_hv6_end_step +2: ret +endfunc + .macro epel_bi_hv8_end_step src0, src1, src2, src3 ld1 {\src3\().8h}, [sp], x10 calc_epelh v4, \src0, \src1, \src2, \src3 @@ -4888,17 +4921,17 @@ function hevc_put_hevc_epel_bi_hv8_8_end_neon subs w5, w5, #1 st1 {v4.8b}, [x0], x1 .endm + +function hevc_put_hevc_epel_bi_hv8_8_end_neon + load_epel_filterh x7, x6 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.8h}, [sp], x10 + ld1 {v17.8h}, [sp], x10 + ld1 {v18.8h}, [sp], x10 1: calc_all4 epel_bi_hv8_end_step 2: ret endfunc -function hevc_put_hevc_epel_bi_hv12_8_end_neon - load_epel_filterh x7, x6 - sub x1, x1, #8 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.8h, v17.8h}, [sp], x10 - ld1 {v18.8h, v19.8h}, [sp], x10 - ld1 {v20.8h, v21.8h}, [sp], x10 .macro epel_bi_hv12_end_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().8h, \src7\().8h}, [sp], x10 calc_epelh v4, \src0, \src2, \src4, \src6 @@ -4913,16 +4946,18 @@ function hevc_put_hevc_epel_bi_hv12_8_end_neon subs w5, w5, #1 st1 {v4.s}[2], [x0], x1 .endm -1: calc_all8 epel_bi_hv12_end_step -2: ret -endfunc -function hevc_put_hevc_epel_bi_hv16_8_end_neon +function hevc_put_hevc_epel_bi_hv12_8_end_neon load_epel_filterh x7, x6 + sub x1, x1, #8 mov x10, #(HEVC_MAX_PB_SIZE * 2) ld1 {v16.8h, v17.8h}, [sp], x10 ld1 {v18.8h, v19.8h}, [sp], x10 ld1 {v20.8h, v21.8h}, [sp], x10 +1: calc_all8 epel_bi_hv12_end_step +2: ret +endfunc + .macro epel_bi_hv16_end_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().8h, \src7\().8h}, [sp], x10 calc_epelh v4, \src0, \src2, \src4, \src6 @@ -4937,16 +4972,17 @@ function hevc_put_hevc_epel_bi_hv16_8_end_neon st1 {v4.16b}, [x0], x1 subs w5, w5, #1 .endm + +function hevc_put_hevc_epel_bi_hv16_8_end_neon + load_epel_filterh x7, x6 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.8h, v17.8h}, [sp], x10 + ld1 {v18.8h, v19.8h}, [sp], x10 + ld1 {v20.8h, v21.8h}, [sp], x10 1: calc_all8 epel_bi_hv16_end_step 2: ret endfunc -function hevc_put_hevc_epel_bi_hv24_8_end_neon - load_epel_filterh x7, x6 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.8h, v17.8h, v18.8h}, [sp], x10 - ld1 {v19.8h, v20.8h, v21.8h}, [sp], x10 - ld1 {v22.8h, v23.8h, v24.8h}, [sp], x10 .macro epel_bi_hv24_end_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().8h, \src10\().8h, \src11\().8h}, [sp], x10 calc_epelh v1, \src0, \src3, \src6, \src9 @@ -4965,16 +5001,17 @@ function hevc_put_hevc_epel_bi_hv24_8_end_neon subs w5, w5, #1 st1 {v1.8b, v2.8b, v3.8b}, [x0], x1 .endm + +function hevc_put_hevc_epel_bi_hv24_8_end_neon + load_epel_filterh x7, x6 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.8h, v17.8h, v18.8h}, [sp], x10 + ld1 {v19.8h, v20.8h, v21.8h}, [sp], x10 + ld1 {v22.8h, v23.8h, v24.8h}, [sp], x10 1: calc_all12 epel_bi_hv24_end_step 2: ret endfunc -function hevc_put_hevc_epel_bi_hv32_8_end_neon - load_epel_filterh x7, x6 - mov x10, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v16.8h, v17.8h, v18.8h, v19.8h}, [sp], x10 - ld1 {v20.8h, v21.8h, v22.8h, v23.8h}, [sp], x10 - ld1 {v24.8h, v25.8h, v26.8h, v27.8h}, [sp], x10 .macro epel_bi_hv32_end_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\src12\().8h, \src13\().8h, \src14\().8h, \src15\().8h}, [sp], x10 calc_epelh v1, \src0, \src4, \src8, \src12 @@ -4997,6 +5034,13 @@ function hevc_put_hevc_epel_bi_hv32_8_end_neon st1 {v1.8b, v2.8b, v3.8b, v4.8b}, [x0], x1 subs w5, w5, #1 .endm + +function hevc_put_hevc_epel_bi_hv32_8_end_neon + load_epel_filterh x7, x6 + mov x10, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.8h, v17.8h, v18.8h, v19.8h}, [sp], x10 + ld1 {v20.8h, v21.8h, v22.8h, v23.8h}, [sp], x10 + ld1 {v24.8h, v25.8h, v26.8h, v27.8h}, [sp], x10 1: calc_all16 epel_bi_hv32_end_step 2: ldr d8, [sp], #16 ret diff --git a/libavcodec/aarch64/h26x/qpel_neon.S b/libavcodec/aarch64/h26x/qpel_neon.S index f123f02751..9e38b648cc 100644 --- a/libavcodec/aarch64/h26x/qpel_neon.S +++ b/libavcodec/aarch64/h26x/qpel_neon.S @@ -945,6 +945,14 @@ put_hevc qpel put_hevc qpel_uni put_hevc qpel_bi +.macro qpel_v4_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().s}[0], [x1], x2 + movi v24.8h, #0 + calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + st1 {v24.4h}, [x0], x9 + subs w3, w3, #1 +.endm + function ff_hevc_put_hevc_qpel_v4_8_neon, export=1 load_qpel_filterb x5, x4 sub x1, x1, x2, lsl #1 @@ -961,17 +969,19 @@ function ff_hevc_put_hevc_qpel_v4_8_neon, export=1 add x1, x1, x2, lsl #1 ldr s22, [x1] add x1, x1, x2 -.macro qpel_v4_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().s}[0], [x1], x2 - movi v24.8h, #0 - calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - st1 {v24.4h}, [x0], x9 - subs w3, w3, #1 -.endm 1: calc_all qpel_v4_step 2: ret endfunc +.macro qpel_v6_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().8b}, [x1], x2 + movi v24.8h, #0 + calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + st1 {v24.4h}, [x0], #8 + st1 {v24.s}[2], [x0], x9 + subs w3, w3, #1 +.endm + function ff_hevc_put_hevc_qpel_v6_8_neon, export=1 load_qpel_filterb x5, x4 sub x1, x1, x2, lsl #1 @@ -988,18 +998,18 @@ function ff_hevc_put_hevc_qpel_v6_8_neon, export=1 add x1, x1, x2, lsl #1 ldr d22, [x1] add x1, x1, x2 -.macro qpel_v6_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().8b}, [x1], x2 - movi v24.8h, #0 - calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - st1 {v24.4h}, [x0], #8 - st1 {v24.s}[2], [x0], x9 - subs w3, w3, #1 -.endm 1: calc_all qpel_v6_step 2: ret endfunc +.macro qpel_v8_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().8b}, [x1], x2 + movi v24.8h, #0 + calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + st1 {v24.8h}, [x0], x9 + subs w3, w3, #1 +.endm + function ff_hevc_put_hevc_qpel_v8_8_neon, export=1 load_qpel_filterb x5, x4 sub x1, x1, x2, lsl #1 @@ -1016,17 +1026,21 @@ function ff_hevc_put_hevc_qpel_v8_8_neon, export=1 add x1, x1, x2, lsl #1 ldr d22, [x1] add x1, x1, x2 -.macro qpel_v8_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().8b}, [x1], x2 - movi v24.8h, #0 - calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - st1 {v24.8h}, [x0], x9 - subs w3, w3, #1 -.endm 1: calc_all qpel_v8_step 2: ret endfunc +.macro qpel_v12_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().16b}, [x1], x2 + movi v24.8h, #0 + movi v25.8h, #0 + calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + calc_qpelb2 v25, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + st1 {v24.8h}, [x0], #16 + subs w3, w3, #1 + st1 {v25.4h}, [x0], x9 +.endm + function ff_hevc_put_hevc_qpel_v12_8_neon, export=1 load_qpel_filterb x5, x4 sub x1, x1, x2, lsl #1 @@ -1043,19 +1057,19 @@ function ff_hevc_put_hevc_qpel_v12_8_neon, export=1 add x1, x1, x2, lsl #1 ldr q22, [x1] add x1, x1, x2 -.macro qpel_v12_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 +1: calc_all qpel_v12_step +2: ret +endfunc + +.macro qpel_v16_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().16b}, [x1], x2 movi v24.8h, #0 movi v25.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 calc_qpelb2 v25, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - st1 {v24.8h}, [x0], #16 subs w3, w3, #1 - st1 {v25.4h}, [x0], x9 + st1 {v24.8h, v25.8h}, [x0], x9 .endm -1: calc_all qpel_v12_step -2: ret -endfunc function ff_hevc_put_hevc_qpel_v16_8_neon, export=1 load_qpel_filterb x5, x4 @@ -1073,20 +1087,24 @@ function ff_hevc_put_hevc_qpel_v16_8_neon, export=1 add x1, x1, x2, lsl #1 ldr q22, [x1] add x1, x1, x2 -.macro qpel_v16_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().16b}, [x1], x2 - movi v24.8h, #0 - movi v25.8h, #0 - calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - calc_qpelb2 v25, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - subs w3, w3, #1 - st1 {v24.8h, v25.8h}, [x0], x9 -.endm 1: calc_all qpel_v16_step 2: ret endfunc +.macro qpel_v24_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 + ld1 {\tmp0\().16b, \tmp1\().16b}, [x1], x2 + movi v8.8h, #0 + movi v9.8h, #0 + movi v10.8h, #0 + calc_qpelb v8, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + calc_qpelb2 v9, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + calc_qpelb v10, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15 + subs w3, w3, #1 + st1 {v8.8h, v9.8h, v10.8h}, [x0], x9 +.endm + // todo: reads #32 bytes + function ff_hevc_put_hevc_qpel_v24_8_neon, export=1 sub sp, sp, #32 st1 {v8.8b, v9.8b, v10.8b}, [sp] @@ -1101,23 +1119,26 @@ function ff_hevc_put_hevc_qpel_v24_8_neon, export=1 ld1 {v24.16b, v25.16b}, [x1], x2 ld1 {v26.16b, v27.16b}, [x1], x2 ld1 {v28.16b, v29.16b}, [x1], x2 -.macro qpel_v24_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 - ld1 {\tmp0\().16b, \tmp1\().16b}, [x1], x2 - movi v8.8h, #0 - movi v9.8h, #0 - movi v10.8h, #0 - calc_qpelb v8, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - calc_qpelb2 v9, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - calc_qpelb v10, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15 - subs w3, w3, #1 - st1 {v8.8h, v9.8h, v10.8h}, [x0], x9 -.endm 1: calc_all2 qpel_v24_step 2: ld1 {v8.8b, v9.8b, v10.8b}, [sp] add sp, sp, #32 ret endfunc +.macro qpel_v32_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 + ld1 {\tmp0\().16b, \tmp1\().16b}, [x1], x2 + movi v8.8h, #0 + movi v9.8h, #0 + movi v10.8h, #0 + movi v11.8h, #0 + calc_qpelb v8, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + calc_qpelb2 v9, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + calc_qpelb v10, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15 + calc_qpelb2 v11, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15 + subs w3, w3, #1 + st1 {v8.8h-v11.8h}, [x0], x9 +.endm + function ff_hevc_put_hevc_qpel_v32_8_neon, export=1 sub sp, sp, #32 st1 {v8.8b-v11.8b}, [sp] @@ -1132,19 +1153,6 @@ function ff_hevc_put_hevc_qpel_v32_8_neon, export=1 ld1 {v24.16b, v25.16b}, [x1], x2 ld1 {v26.16b, v27.16b}, [x1], x2 ld1 {v28.16b, v29.16b}, [x1], x2 -.macro qpel_v32_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 - ld1 {\tmp0\().16b, \tmp1\().16b}, [x1], x2 - movi v8.8h, #0 - movi v9.8h, #0 - movi v10.8h, #0 - movi v11.8h, #0 - calc_qpelb v8, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - calc_qpelb2 v9, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - calc_qpelb v10, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15 - calc_qpelb2 v11, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15 - subs w3, w3, #1 - st1 {v8.8h-v11.8h}, [x0], x9 -.endm 1: calc_all2 qpel_v32_step 2: ld1 {v8.8b-v11.8b}, [sp], #32 ret @@ -1168,6 +1176,20 @@ function ff_hevc_put_hevc_qpel_v48_8_neon, export=1 ret endfunc +.macro qpel_v64_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 + ld1 {\tmp0\().16b, \tmp1\().16b}, [x8], x2 + movi v8.8h, #0 + movi v9.8h, #0 + movi v10.8h, #0 + movi v11.8h, #0 + calc_qpelb v8, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + calc_qpelb2 v9, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + calc_qpelb v10, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15 + calc_qpelb2 v11, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15 + subs x11, x11, #1 + st1 {v8.8h-v11.8h}, [x10], x9 +.endm + function ff_hevc_put_hevc_qpel_v64_8_neon, export=1 sub sp, sp, #32 st1 {v8.8b-v11.8b}, [sp] @@ -1185,19 +1207,6 @@ function ff_hevc_put_hevc_qpel_v64_8_neon, export=1 ld1 {v24.16b, v25.16b}, [x8], x2 ld1 {v26.16b, v27.16b}, [x8], x2 ld1 {v28.16b, v29.16b}, [x8], x2 -.macro qpel_v64_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 - ld1 {\tmp0\().16b, \tmp1\().16b}, [x8], x2 - movi v8.8h, #0 - movi v9.8h, #0 - movi v10.8h, #0 - movi v11.8h, #0 - calc_qpelb v8, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - calc_qpelb2 v9, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - calc_qpelb v10, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15 - calc_qpelb2 v11, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15 - subs x11, x11, #1 - st1 {v8.8h-v11.8h}, [x10], x9 -.endm 1: calc_all2 qpel_v64_step 2: add x0, x0, #64 add x1, x1, #32 @@ -1211,6 +1220,14 @@ endfunc * [-, +, -, +, +, -, +, -], * vvc doesn't meet the requirement. */ +.macro vvc_qpel_v4_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().s}[0], [x1], x2 + uxtl \tmp\().8h, \tmp\().8b + calc_qpelh v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqxtn + subs w3, w3, #1 + st1 {v24.4h}, [x0], x9 +.endm + function ff_vvc_put_qpel_v4_8_neon, export=1 vvc_load_qpel_filterh x5 sub x1, x1, x2, lsl #1 @@ -1234,19 +1251,21 @@ function ff_vvc_put_qpel_v4_8_neon, export=1 uxtl v20.8h, v20.8b uxtl v21.8h, v21.8b uxtl v22.8h, v22.8b -.macro vvc_qpel_v4_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().s}[0], [x1], x2 - uxtl \tmp\().8h, \tmp\().8b - calc_qpelh v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqxtn - subs w3, w3, #1 - st1 {v24.4h}, [x0], x9 -.endm 1: calc_all vvc_qpel_v4_step 2: ret endfunc +.macro vvc_qpel_v8_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().8b}, [x8], x2 + uxtl \tmp\().8h, \tmp\().8b + calc_qpelh v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqxtn + calc_qpelh2 v24, v25, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqxtn2 + subs w11, w11, #1 + st1 {v24.8h}, [x10], x9 +.endm + function ff_vvc_put_qpel_v8_8_neon, export=1 vvc_load_qpel_filterh x5 sub x1, x1, x2, lsl #1 @@ -1274,14 +1293,6 @@ function ff_vvc_put_qpel_v8_8_neon, export=1 uxtl v20.8h, v20.8b uxtl v21.8h, v21.8b uxtl v22.8h, v22.8b -.macro vvc_qpel_v8_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().8b}, [x8], x2 - uxtl \tmp\().8h, \tmp\().8b - calc_qpelh v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqxtn - calc_qpelh2 v24, v25, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqxtn2 - subs w11, w11, #1 - st1 {v24.8h}, [x10], x9 -.endm 1: calc_all vvc_qpel_v8_step 2: @@ -1292,6 +1303,17 @@ function ff_vvc_put_qpel_v8_8_neon, export=1 ret endfunc +.macro qpel_bi_v4_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().s}[0], [x2], x3 + movi v24.8h, #0 + calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + ld1 {v25.4h}, [x4], x12 // src2 + sqadd v24.8h, v24.8h, v25.8h + sqrshrun v25.8b, v24.8h, #7 + subs w5, w5, #1 + st1 {v25.s}[0], [x0], x1 +.endm + function ff_hevc_put_hevc_qpel_bi_v4_8_neon, export=1 load_qpel_filterb x7, x6 sub x2, x2, x3, lsl #1 @@ -1304,20 +1326,22 @@ function ff_hevc_put_hevc_qpel_bi_v4_8_neon, export=1 ld1 {v20.s}[0], [x2], x3 ld1 {v21.s}[0], [x2], x3 ld1 {v22.s}[0], [x2], x3 -.macro qpel_bi_v4_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().s}[0], [x2], x3 - movi v24.8h, #0 - calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - ld1 {v25.4h}, [x4], x12 // src2 - sqadd v24.8h, v24.8h, v25.8h - sqrshrun v25.8b, v24.8h, #7 - subs w5, w5, #1 - st1 {v25.s}[0], [x0], x1 -.endm 1: calc_all qpel_bi_v4_step 2: ret endfunc +.macro qpel_bi_v6_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().8b}, [x2], x3 + movi v24.8h, #0 + calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + ld1 {v25.8h}, [x4], x12 // src2 + sqadd v24.8h, v24.8h, v25.8h + sqrshrun v25.8b, v24.8h, #7 + st1 {v25.s}[0], [x0], #4 + subs w5, w5, #1 + st1 {v25.h}[2], [x0], x1 +.endm + function ff_hevc_put_hevc_qpel_bi_v6_8_neon, export=1 load_qpel_filterb x7, x6 sub x2, x2, x3, lsl #1 @@ -1331,21 +1355,21 @@ function ff_hevc_put_hevc_qpel_bi_v6_8_neon, export=1 ld1 {v20.8b}, [x2], x3 ld1 {v21.8b}, [x2], x3 ld1 {v22.8b}, [x2], x3 -.macro qpel_bi_v6_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().8b}, [x2], x3 - movi v24.8h, #0 - calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - ld1 {v25.8h}, [x4], x12 // src2 - sqadd v24.8h, v24.8h, v25.8h - sqrshrun v25.8b, v24.8h, #7 - st1 {v25.s}[0], [x0], #4 - subs w5, w5, #1 - st1 {v25.h}[2], [x0], x1 -.endm 1: calc_all qpel_bi_v6_step 2: ret endfunc + .macro qpel_bi_v8_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().8b}, [x2], x3 + movi v24.8h, #0 + calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + ld1 {v25.8h}, [x4], x12 // src2 + sqadd v24.8h, v24.8h, v25.8h + sqrshrun v25.8b, v24.8h, #7 + subs w5, w5, #1 + st1 {v25.8b}, [x0], x1 +.endm + function ff_hevc_put_hevc_qpel_bi_v8_8_neon, export=1 load_qpel_filterb x7, x6 sub x2, x2, x3, lsl #1 @@ -1358,33 +1382,10 @@ function ff_hevc_put_hevc_qpel_bi_v8_8_neon, export=1 ld1 {v20.8b}, [x2], x3 ld1 {v21.8b}, [x2], x3 ld1 {v22.8b}, [x2], x3 - .macro qpel_bi_v8_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().8b}, [x2], x3 - movi v24.8h, #0 - calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - ld1 {v25.8h}, [x4], x12 // src2 - sqadd v24.8h, v24.8h, v25.8h - sqrshrun v25.8b, v24.8h, #7 - subs w5, w5, #1 - st1 {v25.8b}, [x0], x1 -.endm 1: calc_all qpel_bi_v8_step 2: ret endfunc -function ff_hevc_put_hevc_qpel_bi_v12_8_neon, export=1 - load_qpel_filterb x7, x6 - sub x2, x2, x3, lsl #1 - sub x2, x2, x3 - sub x1, x1, #8 - ld1 {v16.16b}, [x2], x3 - mov x12, #(HEVC_MAX_PB_SIZE * 2) - ld1 {v17.16b}, [x2], x3 - ld1 {v18.16b}, [x2], x3 - ld1 {v19.16b}, [x2], x3 - ld1 {v20.16b}, [x2], x3 - ld1 {v21.16b}, [x2], x3 - ld1 {v22.16b}, [x2], x3 .macro qpel_bi_v12_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().16b}, [x2], x3 movi v24.8h, #0 @@ -1400,22 +1401,24 @@ function ff_hevc_put_hevc_qpel_bi_v12_8_neon, export=1 subs w5, w5, #1 st1 {v26.s}[2], [x0], x1 .endm -1: calc_all qpel_bi_v12_step -2: ret -endfunc -function ff_hevc_put_hevc_qpel_bi_v16_8_neon, export=1 +function ff_hevc_put_hevc_qpel_bi_v12_8_neon, export=1 load_qpel_filterb x7, x6 sub x2, x2, x3, lsl #1 sub x2, x2, x3 - mov x12, #(HEVC_MAX_PB_SIZE * 2) + sub x1, x1, #8 ld1 {v16.16b}, [x2], x3 + mov x12, #(HEVC_MAX_PB_SIZE * 2) ld1 {v17.16b}, [x2], x3 ld1 {v18.16b}, [x2], x3 ld1 {v19.16b}, [x2], x3 ld1 {v20.16b}, [x2], x3 ld1 {v21.16b}, [x2], x3 ld1 {v22.16b}, [x2], x3 +1: calc_all qpel_bi_v12_step +2: ret +endfunc + .macro qpel_bi_v16_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().16b}, [x2], x3 movi v24.8h, #0 @@ -1430,6 +1433,19 @@ function ff_hevc_put_hevc_qpel_bi_v16_8_neon, export=1 sqrshrun2 v26.16b, v25.8h, #7 st1 {v26.16b}, [x0], x1 .endm + +function ff_hevc_put_hevc_qpel_bi_v16_8_neon, export=1 + load_qpel_filterb x7, x6 + sub x2, x2, x3, lsl #1 + sub x2, x2, x3 + mov x12, #(HEVC_MAX_PB_SIZE * 2) + ld1 {v16.16b}, [x2], x3 + ld1 {v17.16b}, [x2], x3 + ld1 {v18.16b}, [x2], x3 + ld1 {v19.16b}, [x2], x3 + ld1 {v20.16b}, [x2], x3 + ld1 {v21.16b}, [x2], x3 + ld1 {v22.16b}, [x2], x3 1: calc_all qpel_bi_v16_step 2: ret endfunc @@ -1455,27 +1471,6 @@ function ff_hevc_put_hevc_qpel_bi_v24_8_neon, export=1 ret endfunc -function ff_hevc_put_hevc_qpel_bi_v32_8_neon, export=1 - stp d8, d9, [sp, #-64]! - stp d10, d11, [sp, #16] - stp d12, d13, [sp, #32] - stp d14, d15, [sp, #48] - sub x2, x2, x3, lsl #1 - sub x2, x2, x3 - load_qpel_filterb x7, x6 - ldr w6, [sp, #64] - mov x12, #(HEVC_MAX_PB_SIZE * 2) -0: mov x8, x2 // src - ld1 {v16.16b, v17.16b}, [x8], x3 - mov w11, w5 // height - ld1 {v18.16b, v19.16b}, [x8], x3 - mov x10, x0 // dst - ld1 {v20.16b, v21.16b}, [x8], x3 - mov x9, x4 // src2 - ld1 {v22.16b, v23.16b}, [x8], x3 - ld1 {v24.16b, v25.16b}, [x8], x3 - ld1 {v26.16b, v27.16b}, [x8], x3 - ld1 {v28.16b, v29.16b}, [x8], x3 .macro qpel_bi_v32_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\tmp0\().8h, \tmp1\().8h}, [x8], x3 movi v8.8h, #0 @@ -1498,6 +1493,28 @@ function ff_hevc_put_hevc_qpel_bi_v32_8_neon, export=1 subs x11, x11, #1 st1 {v12.16b, v13.16b}, [x10], x1 .endm + +function ff_hevc_put_hevc_qpel_bi_v32_8_neon, export=1 + stp d8, d9, [sp, #-64]! + stp d10, d11, [sp, #16] + stp d12, d13, [sp, #32] + stp d14, d15, [sp, #48] + sub x2, x2, x3, lsl #1 + sub x2, x2, x3 + load_qpel_filterb x7, x6 + ldr w6, [sp, #64] + mov x12, #(HEVC_MAX_PB_SIZE * 2) +0: mov x8, x2 // src + ld1 {v16.16b, v17.16b}, [x8], x3 + mov w11, w5 // height + ld1 {v18.16b, v19.16b}, [x8], x3 + mov x10, x0 // dst + ld1 {v20.16b, v21.16b}, [x8], x3 + mov x9, x4 // src2 + ld1 {v22.16b, v23.16b}, [x8], x3 + ld1 {v24.16b, v25.16b}, [x8], x3 + ld1 {v26.16b, v27.16b}, [x8], x3 + ld1 {v28.16b, v29.16b}, [x8], x3 1: calc_all2 qpel_bi_v32_step 2: add x0, x0, #32 // dst add x2, x2, #32 // src @@ -1677,6 +1694,14 @@ function ff_vvc_put_pel_uni_pixels128_8_neon, export=1 ret endfunc +.macro qpel_uni_v4_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().s}[0], [x2], x3 + calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + sqrshrun v24.8b, v24.8h, #6 + subs w4, w4, #1 + st1 {v24.s}[0], [x0], x1 +.endm + function ff_hevc_put_hevc_qpel_uni_v4_8_neon, export=1 load_qpel_filterb x6, x5 sub x2, x2, x3, lsl #1 @@ -1692,17 +1717,19 @@ function ff_hevc_put_hevc_qpel_uni_v4_8_neon, export=1 add x2, x2, x3, lsl #1 ldr s22, [x2] add x2, x2, x3 -.macro qpel_uni_v4_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().s}[0], [x2], x3 - calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - sqrshrun v24.8b, v24.8h, #6 - subs w4, w4, #1 - st1 {v24.s}[0], [x0], x1 -.endm 1: calc_all qpel_uni_v4_step 2: ret endfunc +.macro qpel_uni_v6_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().8b}, [x2], x3 + calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + sqrshrun v24.8b, v24.8h, #6 + st1 {v24.s}[0], [x0], #4 + subs w4, w4, #1 + st1 {v24.h}[2], [x0], x1 +.endm + function ff_hevc_put_hevc_qpel_uni_v6_8_neon, export=1 load_qpel_filterb x6, x5 sub x2, x2, x3, lsl #1 @@ -1719,18 +1746,18 @@ function ff_hevc_put_hevc_qpel_uni_v6_8_neon, export=1 add x2, x2, x3, lsl #1 ldr d22, [x2] add x2, x2, x3 -.macro qpel_uni_v6_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().8b}, [x2], x3 - calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - sqrshrun v24.8b, v24.8h, #6 - st1 {v24.s}[0], [x0], #4 - subs w4, w4, #1 - st1 {v24.h}[2], [x0], x1 -.endm 1: calc_all qpel_uni_v6_step 2: ret endfunc +.macro qpel_uni_v8_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().8b}, [x2], x3 + calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + sqrshrun v24.8b, v24.8h, #6 + subs w4, w4, #1 + st1 {v24.8b}, [x0], x1 +.endm + function ff_hevc_put_hevc_qpel_uni_v8_8_neon, export=1 load_qpel_filterb x6, x5 sub x2, x2, x3, lsl #1 @@ -1746,17 +1773,21 @@ function ff_hevc_put_hevc_qpel_uni_v8_8_neon, export=1 add x2, x2, x3, lsl #1 ldr d22, [x2] add x2, x2, x3 -.macro qpel_uni_v8_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().8b}, [x2], x3 - calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - sqrshrun v24.8b, v24.8h, #6 - subs w4, w4, #1 - st1 {v24.8b}, [x0], x1 -.endm 1: calc_all qpel_uni_v8_step 2: ret endfunc +.macro qpel_uni_v12_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().16b}, [x8], x3 + calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + calc_qpelb2 v25, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + sqrshrun v24.8b, v24.8h, #6 + sqrshrun2 v24.16b, v25.8h, #6 + st1 {v24.8b}, [x10], #8 + subs x11, x11, #1 + st1 {v24.s}[2], [x10], x1 +.endm + function ff_hevc_put_hevc_qpel_uni_v12_8_neon, export=1 load_qpel_filterb x6, x5 sub x2, x2, x3, lsl #1 @@ -1776,16 +1807,6 @@ function ff_hevc_put_hevc_qpel_uni_v12_8_neon, export=1 add x8, x8, x3, lsl #1 ldr q22, [x8] add x8, x8, x3 -.macro qpel_uni_v12_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().16b}, [x8], x3 - calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - calc_qpelb2 v25, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - sqrshrun v24.8b, v24.8h, #6 - sqrshrun2 v24.16b, v25.8h, #6 - st1 {v24.8b}, [x10], #8 - subs x11, x11, #1 - st1 {v24.s}[2], [x10], x1 -.endm 1: calc_all qpel_uni_v12_step 2: add x0, x0, #12 add x2, x2, #12 @@ -1794,6 +1815,16 @@ function ff_hevc_put_hevc_qpel_uni_v12_8_neon, export=1 ret endfunc +.macro qpel_uni_v16_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().16b}, [x8], x3 + calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + calc_qpelb2 v25, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 + sqrshrun v24.8b, v24.8h, #6 + sqrshrun2 v24.16b, v25.8h, #6 + subs x11, x11, #1 + st1 {v24.16b}, [x10], x1 +.endm + function ff_hevc_put_hevc_qpel_uni_v16_8_neon, export=1 load_qpel_filterb x6, x5 sub x2, x2, x3, lsl #1 @@ -1812,15 +1843,6 @@ function ff_hevc_put_hevc_qpel_uni_v16_8_neon, export=1 add x8, x8, x3, lsl #1 ldr q22, [x8] add x8, x8, x3 -.macro qpel_uni_v16_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().16b}, [x8], x3 - calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - calc_qpelb2 v25, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 - sqrshrun v24.8b, v24.8h, #6 - sqrshrun2 v24.16b, v25.8h, #6 - subs x11, x11, #1 - st1 {v24.16b}, [x10], x1 -.endm 1: calc_all qpel_uni_v16_step 2: add x0, x0, #16 add x2, x2, #16 @@ -3113,6 +3135,14 @@ function ff_hevc_put_hevc_qpel_uni_w_v48_8_neon, export=1 ret endfunc +.macro qpel_uni_hv4_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().4h}, [sp], x9 + calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn, #12 + sqxtun v1.8b, v1.8h + subs w4, w4, #1 + st1 {v1.s}[0], [x0], x1 +.endm + function hevc_put_hevc_qpel_uni_hv4_8_end_neon mov x9, #(HEVC_MAX_PB_SIZE * 2) load_qpel_filterh x6, x5 @@ -3127,18 +3157,21 @@ function hevc_put_hevc_qpel_uni_hv4_8_end_neon add sp, sp, x9, lsl #1 ldr d22, [sp] add sp, sp, x9 -.macro qpel_uni_hv4_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().4h}, [sp], x9 - calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn, #12 - sqxtun v1.8b, v1.8h - subs w4, w4, #1 - st1 {v1.s}[0], [x0], x1 -.endm 1: calc_all qpel_uni_hv4_end_step 2: mov sp, x14 ret endfunc +.macro qpel_uni_hv6_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().8h}, [sp], x9 + calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn, #12 + calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn2, #12 + sqxtun v1.8b, v1.8h + st1 {v1.s}[0], [x0], #4 + subs w4, w4, #1 + st1 {v1.h}[2], [x0], x1 +.endm + function hevc_put_hevc_qpel_uni_hv6_8_end_neon mov x9, #(HEVC_MAX_PB_SIZE * 2) load_qpel_filterh x6, x5 @@ -3154,20 +3187,20 @@ function hevc_put_hevc_qpel_uni_hv6_8_end_neon add sp, sp, x9, lsl #1 ldr q22, [sp] add sp, sp, x9 -.macro qpel_uni_hv6_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().8h}, [sp], x9 - calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn, #12 - calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn2, #12 - sqxtun v1.8b, v1.8h - st1 {v1.s}[0], [x0], #4 - subs w4, w4, #1 - st1 {v1.h}[2], [x0], x1 -.endm 1: calc_all qpel_uni_hv6_end_step 2: mov sp, x14 ret endfunc +.macro qpel_uni_hv8_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().8h}, [sp], x9 + calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn, #12 + calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn2, #12 + sqxtun v1.8b, v1.8h + subs w4, w4, #1 + st1 {v1.8b}, [x0], x1 +.endm + function hevc_put_hevc_qpel_uni_hv8_8_end_neon mov x9, #(HEVC_MAX_PB_SIZE * 2) load_qpel_filterh x6, x5 @@ -3182,19 +3215,23 @@ function hevc_put_hevc_qpel_uni_hv8_8_end_neon add sp, sp, x9, lsl #1 ldr q22, [sp] add sp, sp, x9 -.macro qpel_uni_hv8_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().8h}, [sp], x9 - calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn, #12 - calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn2, #12 - sqxtun v1.8b, v1.8h - subs w4, w4, #1 - st1 {v1.8b}, [x0], x1 -.endm 1: calc_all qpel_uni_hv8_end_step 2: mov sp, x14 ret endfunc +.macro qpel_uni_hv12_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 + ld1 {\tmp0\().8h, \tmp1\().8h}, [sp], x9 + calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn, #12 + calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn2, #12 + calc_qpelh v2, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15, sqrshrn, #12 + sqxtun v1.8b, v1.8h + sqxtun2 v1.16b, v2.8h + st1 {v1.8b}, [x0], #8 + subs w4, w4, #1 + st1 {v1.s}[2], [x0], x1 +.endm + function hevc_put_hevc_qpel_uni_hv12_8_end_neon mov x9, #(HEVC_MAX_PB_SIZE * 2) load_qpel_filterh x6, x5 @@ -3206,22 +3243,23 @@ function hevc_put_hevc_qpel_uni_hv12_8_end_neon ld1 {v24.8h, v25.8h}, [sp], x9 ld1 {v26.8h, v27.8h}, [sp], x9 ld1 {v28.8h, v29.8h}, [sp], x9 -.macro qpel_uni_hv12_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 - ld1 {\tmp0\().8h, \tmp1\().8h}, [sp], x9 - calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn, #12 - calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn2, #12 - calc_qpelh v2, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15, sqrshrn, #12 - sqxtun v1.8b, v1.8h - sqxtun2 v1.16b, v2.8h - st1 {v1.8b}, [x0], #8 - subs w4, w4, #1 - st1 {v1.s}[2], [x0], x1 -.endm 1: calc_all2 qpel_uni_hv12_end_step 2: mov sp, x14 ret endfunc +.macro qpel_uni_hv16_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 + ld1 {\tmp0\().8h, \tmp1\().8h}, [x8], x9 + calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn, #12 + calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn2, #12 + calc_qpelh v2, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15, sqrshrn, #12 + calc_qpelh2 v2, v3, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15, sqrshrn2, #12 + sqxtun v1.8b, v1.8h + subs x11, x11, #1 + sqxtun2 v1.16b, v2.8h + st1 {v1.16b}, [x10], x1 +.endm + function hevc_put_hevc_qpel_uni_hv16_8_end_neon mov x9, #(HEVC_MAX_PB_SIZE * 2) load_qpel_filterh x6, x5 @@ -3236,17 +3274,6 @@ function hevc_put_hevc_qpel_uni_hv16_8_end_neon ld1 {v24.8h, v25.8h}, [x8], x9 ld1 {v26.8h, v27.8h}, [x8], x9 ld1 {v28.8h, v29.8h}, [x8], x9 -.macro qpel_uni_hv16_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 - ld1 {\tmp0\().8h, \tmp1\().8h}, [x8], x9 - calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn, #12 - calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqrshrn2, #12 - calc_qpelh v2, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15, sqrshrn, #12 - calc_qpelh2 v2, v3, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15, sqrshrn2, #12 - sqxtun v1.8b, v1.8h - subs x11, x11, #1 - sqxtun2 v1.16b, v2.8h - st1 {v1.16b}, [x10], x1 -.endm 1: calc_all2 qpel_uni_hv16_end_step 2: add x0, x0, #16 add sp, sp, #32 @@ -4864,6 +4891,13 @@ function vvc_put_qpel_hv4_8_end_neon b 1f endfunc +.macro qpel_hv4_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().4h}, [sp], x7 + calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn + subs w3, w3, #1 + st1 {v1.4h}, [x0], x7 +.endm + function hevc_put_hevc_qpel_hv4_8_end_neon load_qpel_filterh x5, x4 1: @@ -4878,17 +4912,20 @@ function hevc_put_hevc_qpel_hv4_8_end_neon add sp, sp, x7, lsl #1 ldr d22, [sp] add sp, sp, x7 -.macro qpel_hv4_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().4h}, [sp], x7 - calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn - subs w3, w3, #1 - st1 {v1.4h}, [x0], x7 -.endm 1: calc_all qpel_hv4_end_step 2: mov sp, x14 ret endfunc +.macro qpel_hv6_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().8h}, [sp], x7 + calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn + calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn2 + st1 {v1.4h}, [x0], #8 + subs w3, w3, #1 + st1 {v1.s}[2], [x0], x8 +.endm + function hevc_put_hevc_qpel_hv6_8_end_neon mov x8, #120 load_qpel_filterh x5, x4 @@ -4903,14 +4940,6 @@ function hevc_put_hevc_qpel_hv6_8_end_neon add sp, sp, x7, lsl #1 ldr q22, [sp] add sp, sp, x7 -.macro qpel_hv6_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().8h}, [sp], x7 - calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn - calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn2 - st1 {v1.4h}, [x0], #8 - subs w3, w3, #1 - st1 {v1.s}[2], [x0], x8 -.endm 1: calc_all qpel_hv6_end_step 2: mov sp, x14 ret @@ -4922,6 +4951,14 @@ function vvc_put_qpel_hv8_8_end_neon b 1f endfunc +.macro qpel_hv8_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 + ld1 {\tmp\().8h}, [sp], x7 + calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn + calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn2 + subs w3, w3, #1 + st1 {v1.8h}, [x0], x7 +.endm + function hevc_put_hevc_qpel_hv8_8_end_neon mov x7, #128 load_qpel_filterh x5, x4 @@ -4937,18 +4974,21 @@ function hevc_put_hevc_qpel_hv8_8_end_neon add sp, sp, x7, lsl #1 ldr q22, [sp] add sp, sp, x7 -.macro qpel_hv8_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 - ld1 {\tmp\().8h}, [sp], x7 - calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn - calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn2 - subs w3, w3, #1 - st1 {v1.8h}, [x0], x7 -.endm 1: calc_all qpel_hv8_end_step 2: mov sp, x14 ret endfunc +.macro qpel_hv12_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 + ld1 {\tmp0\().8h, \tmp1\().8h}, [sp], x7 + calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn + calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn2 + calc_qpelh v2, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15, sqshrn + st1 {v1.8h}, [x0], #16 + subs w3, w3, #1 + st1 {v2.4h}, [x0], x8 +.endm + function hevc_put_hevc_qpel_hv12_8_end_neon mov x7, #128 load_qpel_filterh x5, x4 @@ -4960,15 +5000,6 @@ function hevc_put_hevc_qpel_hv12_8_end_neon ld1 {v24.8h, v25.8h}, [sp], x7 ld1 {v26.8h, v27.8h}, [sp], x7 ld1 {v28.8h, v29.8h}, [sp], x7 -.macro qpel_hv12_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 - ld1 {\tmp0\().8h, \tmp1\().8h}, [sp], x7 - calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn - calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn2 - calc_qpelh v2, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15, sqshrn - st1 {v1.8h}, [x0], #16 - subs w3, w3, #1 - st1 {v2.4h}, [x0], x8 -.endm 1: calc_all2 qpel_hv12_end_step 2: mov sp, x14 ret @@ -4980,6 +5011,16 @@ function vvc_put_qpel_hv16_8_end_neon b 1f endfunc +.macro qpel_hv16_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 + ld1 {\tmp0\().8h, \tmp1\().8h}, [sp], x7 + calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn + calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn2 + calc_qpelh v2, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15, sqshrn + calc_qpelh2 v2, v3, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15, sqshrn2 + subs w3, w3, #1 + st1 {v1.8h, v2.8h}, [x0], x7 +.endm + function hevc_put_hevc_qpel_hv16_8_end_neon mov x7, #128 load_qpel_filterh x5, x4 @@ -4991,15 +5032,6 @@ function hevc_put_hevc_qpel_hv16_8_end_neon ld1 {v24.8h, v25.8h}, [sp], x7 ld1 {v26.8h, v27.8h}, [sp], x7 ld1 {v28.8h, v29.8h}, [sp], x7 -.macro qpel_hv16_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 - ld1 {\tmp0\().8h, \tmp1\().8h}, [sp], x7 - calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn - calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn2 - calc_qpelh v2, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15, sqshrn - calc_qpelh2 v2, v3, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15, sqshrn2 - subs w3, w3, #1 - st1 {v1.8h, v2.8h}, [x0], x7 -.endm 1: calc_all2 qpel_hv16_end_step 2: mov sp, x14 ret @@ -5011,6 +5043,16 @@ function vvc_put_qpel_hv32_8_end_neon b 0f endfunc +.macro qpel_hv32_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 + ld1 {\tmp0\().8h, \tmp1\().8h}, [x8], x7 + calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn + calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn2 + calc_qpelh v2, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15, sqshrn + calc_qpelh2 v2, v3, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15, sqshrn2 + subs x9, x9, #1 + st1 {v1.8h, v2.8h}, [x5], x7 +.endm + function hevc_put_hevc_qpel_hv32_8_end_neon mov x7, #128 load_qpel_filterh x5, x4 @@ -5024,15 +5066,6 @@ function hevc_put_hevc_qpel_hv32_8_end_neon ld1 {v24.8h, v25.8h}, [x8], x7 ld1 {v26.8h, v27.8h}, [x8], x7 ld1 {v28.8h, v29.8h}, [x8], x7 -.macro qpel_hv32_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 - ld1 {\tmp0\().8h, \tmp1\().8h}, [x8], x7 - calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn - calc_qpelh2 v1, v2, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sqshrn2 - calc_qpelh v2, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15, sqshrn - calc_qpelh2 v2, v3, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15, sqshrn2 - subs x9, x9, #1 - st1 {v1.8h, v2.8h}, [x5], x7 -.endm 1: calc_all2 qpel_hv32_end_step 2: add x0, x0, #32 add sp, sp, #32 @@ -6064,16 +6097,6 @@ endfunc qpel_uni_w_hv neon -function hevc_put_hevc_qpel_bi_hv4_8_end_neon - mov x9, #(HEVC_MAX_PB_SIZE * 2) - load_qpel_filterh x7, x6 - ld1 {v16.4h}, [sp], x9 - ld1 {v17.4h}, [sp], x9 - ld1 {v18.4h}, [sp], x9 - ld1 {v19.4h}, [sp], x9 - ld1 {v20.4h}, [sp], x9 - ld1 {v21.4h}, [sp], x9 - ld1 {v22.4h}, [sp], x9 .macro qpel_bi_hv4_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().4h}, [sp], x9 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sshr @@ -6084,22 +6107,22 @@ function hevc_put_hevc_qpel_bi_hv4_8_end_neon subs w5, w5, #1 st1 {v1.s}[0], [x0], x1 .endm + +function hevc_put_hevc_qpel_bi_hv4_8_end_neon + mov x9, #(HEVC_MAX_PB_SIZE * 2) + load_qpel_filterh x7, x6 + ld1 {v16.4h}, [sp], x9 + ld1 {v17.4h}, [sp], x9 + ld1 {v18.4h}, [sp], x9 + ld1 {v19.4h}, [sp], x9 + ld1 {v20.4h}, [sp], x9 + ld1 {v21.4h}, [sp], x9 + ld1 {v22.4h}, [sp], x9 1: calc_all qpel_bi_hv4_end_step 2: mov sp, x14 ret endfunc -function hevc_put_hevc_qpel_bi_hv6_8_end_neon - mov x9, #(HEVC_MAX_PB_SIZE * 2) - load_qpel_filterh x7, x6 - sub x1, x1, #4 - ld1 {v16.8h}, [sp], x9 - ld1 {v17.8h}, [sp], x9 - ld1 {v18.8h}, [sp], x9 - ld1 {v19.8h}, [sp], x9 - ld1 {v20.8h}, [sp], x9 - ld1 {v21.8h}, [sp], x9 - ld1 {v22.8h}, [sp], x9 .macro qpel_bi_hv6_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8h}, [sp], x9 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sshr @@ -6114,14 +6137,11 @@ function hevc_put_hevc_qpel_bi_hv6_8_end_neon subs w5, w5, #1 st1 {v1.h}[2], [x0], x1 .endm -1: calc_all qpel_bi_hv6_end_step -2: mov sp, x14 - ret -endfunc -function hevc_put_hevc_qpel_bi_hv8_8_end_neon +function hevc_put_hevc_qpel_bi_hv6_8_end_neon mov x9, #(HEVC_MAX_PB_SIZE * 2) load_qpel_filterh x7, x6 + sub x1, x1, #4 ld1 {v16.8h}, [sp], x9 ld1 {v17.8h}, [sp], x9 ld1 {v18.8h}, [sp], x9 @@ -6129,6 +6149,11 @@ function hevc_put_hevc_qpel_bi_hv8_8_end_neon ld1 {v20.8h}, [sp], x9 ld1 {v21.8h}, [sp], x9 ld1 {v22.8h}, [sp], x9 +1: calc_all qpel_bi_hv6_end_step +2: mov sp, x14 + ret +endfunc + .macro qpel_bi_hv8_end_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8h}, [sp], x9 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sshr @@ -6142,26 +6167,22 @@ function hevc_put_hevc_qpel_bi_hv8_8_end_neon subs w5, w5, #1 st1 {v1.8b}, [x0], x1 .endm + +function hevc_put_hevc_qpel_bi_hv8_8_end_neon + mov x9, #(HEVC_MAX_PB_SIZE * 2) + load_qpel_filterh x7, x6 + ld1 {v16.8h}, [sp], x9 + ld1 {v17.8h}, [sp], x9 + ld1 {v18.8h}, [sp], x9 + ld1 {v19.8h}, [sp], x9 + ld1 {v20.8h}, [sp], x9 + ld1 {v21.8h}, [sp], x9 + ld1 {v22.8h}, [sp], x9 1: calc_all qpel_bi_hv8_end_step 2: mov sp, x14 ret endfunc -function hevc_put_hevc_qpel_bi_hv16_8_end_neon - load_qpel_filterh x7, x8 - mov x9, #(HEVC_MAX_PB_SIZE * 2) - mov x10, x6 -0: mov x8, sp // src - ld1 {v16.8h, v17.8h}, [x8], x9 - mov w11, w5 // height - ld1 {v18.8h, v19.8h}, [x8], x9 - mov x12, x4 // src2 - ld1 {v20.8h, v21.8h}, [x8], x9 - mov x7, x0 // dst - ld1 {v22.8h, v23.8h}, [x8], x9 - ld1 {v24.8h, v25.8h}, [x8], x9 - ld1 {v26.8h, v27.8h}, [x8], x9 - ld1 {v28.8h, v29.8h}, [x8], x9 .macro qpel_bi_hv16_end_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\tmp0\().8h, \tmp1\().8h}, [x8], x9 calc_qpelh v1, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7, sshr @@ -6182,6 +6203,22 @@ function hevc_put_hevc_qpel_bi_hv16_8_end_neon subs x11, x11, #1 st1 {v1.16b}, [x7], x1 .endm + +function hevc_put_hevc_qpel_bi_hv16_8_end_neon + load_qpel_filterh x7, x8 + mov x9, #(HEVC_MAX_PB_SIZE * 2) + mov x10, x6 +0: mov x8, sp // src + ld1 {v16.8h, v17.8h}, [x8], x9 + mov w11, w5 // height + ld1 {v18.8h, v19.8h}, [x8], x9 + mov x12, x4 // src2 + ld1 {v20.8h, v21.8h}, [x8], x9 + mov x7, x0 // dst + ld1 {v22.8h, v23.8h}, [x8], x9 + ld1 {v24.8h, v25.8h}, [x8], x9 + ld1 {v26.8h, v27.8h}, [x8], x9 + ld1 {v28.8h, v29.8h}, [x8], x9 1: calc_all2 qpel_bi_hv16_end_step 2: add x0, x0, #16 add sp, sp, #32 -- 2.52.0 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]