aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2024-03-25 14:25:29 +0200
committerMartin Storsjö <martin@martin.st>2024-03-26 08:59:07 +0200
commit5b5666e5ab5c06964f03c5ae8d769eb7c6118b71 (patch)
tree77f90a90adf7c4c4b8a759eac02b5080ebb54603
parente6d4c0e117edb5daf6982cb80252d6024eac92ae (diff)
downloadffmpeg-5b5666e5ab5c06964f03c5ae8d769eb7c6118b71.tar.gz
aarch64: hevc: Reorder epel_hv functions to prepare for templating
This is a pure reordering of code without changing anything in the individual functions. Signed-off-by: Martin Storsjö <martin@martin.st>
-rw-r--r--libavcodec/aarch64/hevcdsp_epel_neon.S971
1 files changed, 497 insertions, 474 deletions
diff --git a/libavcodec/aarch64/hevcdsp_epel_neon.S b/libavcodec/aarch64/hevcdsp_epel_neon.S
index 6be171ece1..2088630da1 100644
--- a/libavcodec/aarch64/hevcdsp_epel_neon.S
+++ b/libavcodec/aarch64/hevcdsp_epel_neon.S
@@ -2173,21 +2173,9 @@ function ff_hevc_put_hevc_epel_h64_8_neon_i8mm, export=1
ret
endfunc
+DISABLE_I8MM
+#endif
-function ff_hevc_put_hevc_epel_hv4_8_neon_i8mm, export=1
- add w10, w3, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- stp x5, x30, [sp, #-32]!
- stp x0, x3, [sp, #16]
- add x0, sp, #32
- sub x1, x1, x2
- add w3, w3, #3
- bl X(ff_hevc_put_hevc_epel_h4_8_neon_i8mm)
- ldp x0, x3, [sp, #16]
- ldp x5, x30, [sp], #32
- b hevc_put_hevc_epel_hv4_8_end_neon
-endfunc
function hevc_put_hevc_epel_hv4_8_end_neon
load_epel_filterh x5, x4
@@ -2207,21 +2195,6 @@ function hevc_put_hevc_epel_hv4_8_end_neon
2: ret
endfunc
-function ff_hevc_put_hevc_epel_hv6_8_neon_i8mm, export=1
- add w10, w3, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- stp x5, x30, [sp, #-32]!
- stp x0, x3, [sp, #16]
- add x0, sp, #32
- sub x1, x1, x2
- add w3, w3, #3
- bl X(ff_hevc_put_hevc_epel_h6_8_neon_i8mm)
- ldp x0, x3, [sp, #16]
- ldp x5, x30, [sp], #32
- b hevc_put_hevc_epel_hv6_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_hv6_8_end_neon
load_epel_filterh x5, x4
mov x5, #120
@@ -2243,21 +2216,6 @@ function hevc_put_hevc_epel_hv6_8_end_neon
2: ret
endfunc
-function ff_hevc_put_hevc_epel_hv8_8_neon_i8mm, export=1
- add w10, w3, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- stp x5, x30, [sp, #-32]!
- stp x0, x3, [sp, #16]
- add x0, sp, #32
- sub x1, x1, x2
- add w3, w3, #3
- bl X(ff_hevc_put_hevc_epel_h8_8_neon_i8mm)
- ldp x0, x3, [sp, #16]
- ldp x5, x30, [sp], #32
- b hevc_put_hevc_epel_hv8_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_hv8_8_end_neon
load_epel_filterh x5, x4
mov x10, #(MAX_PB_SIZE * 2)
@@ -2277,21 +2235,6 @@ function hevc_put_hevc_epel_hv8_8_end_neon
2: ret
endfunc
-function ff_hevc_put_hevc_epel_hv12_8_neon_i8mm, export=1
- add w10, w3, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- stp x5, x30, [sp, #-32]!
- stp x0, x3, [sp, #16]
- add x0, sp, #32
- sub x1, x1, x2
- add w3, w3, #3
- bl X(ff_hevc_put_hevc_epel_h12_8_neon_i8mm)
- ldp x0, x3, [sp, #16]
- ldp x5, x30, [sp], #32
- b hevc_put_hevc_epel_hv12_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_hv12_8_end_neon
load_epel_filterh x5, x4
mov x5, #112
@@ -2313,21 +2256,6 @@ function hevc_put_hevc_epel_hv12_8_end_neon
2: ret
endfunc
-function ff_hevc_put_hevc_epel_hv16_8_neon_i8mm, export=1
- add w10, w3, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- stp x5, x30, [sp, #-32]!
- stp x0, x3, [sp, #16]
- add x0, sp, #32
- sub x1, x1, x2
- add w3, w3, #3
- bl X(ff_hevc_put_hevc_epel_h16_8_neon_i8mm)
- ldp x0, x3, [sp, #16]
- ldp x5, x30, [sp], #32
- b hevc_put_hevc_epel_hv16_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_hv16_8_end_neon
load_epel_filterh x5, x4
mov x10, #(MAX_PB_SIZE * 2)
@@ -2348,21 +2276,6 @@ function hevc_put_hevc_epel_hv16_8_end_neon
2: ret
endfunc
-function ff_hevc_put_hevc_epel_hv24_8_neon_i8mm, export=1
- add w10, w3, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- stp x5, x30, [sp, #-32]!
- stp x0, x3, [sp, #16]
- add x0, sp, #32
- sub x1, x1, x2
- add w3, w3, #3
- bl X(ff_hevc_put_hevc_epel_h24_8_neon_i8mm)
- ldp x0, x3, [sp, #16]
- ldp x5, x30, [sp], #32
- b hevc_put_hevc_epel_hv24_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_hv24_8_end_neon
load_epel_filterh x5, x4
mov x10, #(MAX_PB_SIZE * 2)
@@ -2385,6 +2298,99 @@ function hevc_put_hevc_epel_hv24_8_end_neon
2: ret
endfunc
+#if HAVE_I8MM
+ENABLE_I8MM
+
+function ff_hevc_put_hevc_epel_hv4_8_neon_i8mm, export=1
+ add w10, w3, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ stp x5, x30, [sp, #-32]!
+ stp x0, x3, [sp, #16]
+ add x0, sp, #32
+ sub x1, x1, x2
+ add w3, w3, #3
+ bl X(ff_hevc_put_hevc_epel_h4_8_neon_i8mm)
+ ldp x0, x3, [sp, #16]
+ ldp x5, x30, [sp], #32
+ b hevc_put_hevc_epel_hv4_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_hv6_8_neon_i8mm, export=1
+ add w10, w3, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ stp x5, x30, [sp, #-32]!
+ stp x0, x3, [sp, #16]
+ add x0, sp, #32
+ sub x1, x1, x2
+ add w3, w3, #3
+ bl X(ff_hevc_put_hevc_epel_h6_8_neon_i8mm)
+ ldp x0, x3, [sp, #16]
+ ldp x5, x30, [sp], #32
+ b hevc_put_hevc_epel_hv6_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_hv8_8_neon_i8mm, export=1
+ add w10, w3, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ stp x5, x30, [sp, #-32]!
+ stp x0, x3, [sp, #16]
+ add x0, sp, #32
+ sub x1, x1, x2
+ add w3, w3, #3
+ bl X(ff_hevc_put_hevc_epel_h8_8_neon_i8mm)
+ ldp x0, x3, [sp, #16]
+ ldp x5, x30, [sp], #32
+ b hevc_put_hevc_epel_hv8_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_hv12_8_neon_i8mm, export=1
+ add w10, w3, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ stp x5, x30, [sp, #-32]!
+ stp x0, x3, [sp, #16]
+ add x0, sp, #32
+ sub x1, x1, x2
+ add w3, w3, #3
+ bl X(ff_hevc_put_hevc_epel_h12_8_neon_i8mm)
+ ldp x0, x3, [sp, #16]
+ ldp x5, x30, [sp], #32
+ b hevc_put_hevc_epel_hv12_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_hv16_8_neon_i8mm, export=1
+ add w10, w3, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ stp x5, x30, [sp, #-32]!
+ stp x0, x3, [sp, #16]
+ add x0, sp, #32
+ sub x1, x1, x2
+ add w3, w3, #3
+ bl X(ff_hevc_put_hevc_epel_h16_8_neon_i8mm)
+ ldp x0, x3, [sp, #16]
+ ldp x5, x30, [sp], #32
+ b hevc_put_hevc_epel_hv16_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_hv24_8_neon_i8mm, export=1
+ add w10, w3, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ stp x5, x30, [sp, #-32]!
+ stp x0, x3, [sp, #16]
+ add x0, sp, #32
+ sub x1, x1, x2
+ add w3, w3, #3
+ bl X(ff_hevc_put_hevc_epel_h24_8_neon_i8mm)
+ ldp x0, x3, [sp, #16]
+ ldp x5, x30, [sp], #32
+ b hevc_put_hevc_epel_hv24_8_end_neon
+endfunc
+
function ff_hevc_put_hevc_epel_hv32_8_neon_i8mm, export=1
stp x4, x5, [sp, #-64]!
stp x2, x3, [sp, #16]
@@ -2453,24 +2459,8 @@ function ff_hevc_put_hevc_epel_hv64_8_neon_i8mm, export=1
ret
endfunc
-function ff_hevc_put_hevc_epel_uni_hv4_8_neon_i8mm, export=1
- add w10, w4, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- str x30, [sp, #-48]!
- stp x4, x6, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add w3, w4, #3
- mov x4, x5
- bl X(ff_hevc_put_hevc_epel_h4_8_neon_i8mm)
- ldp x4, x6, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldr x30, [sp], #48
- b hevc_put_hevc_epel_uni_hv4_8_end_neon
-endfunc
+DISABLE_I8MM
+#endif
function hevc_put_hevc_epel_uni_hv4_8_end_neon
load_epel_filterh x6, x5
@@ -2490,25 +2480,6 @@ function hevc_put_hevc_epel_uni_hv4_8_end_neon
2: ret
endfunc
-function ff_hevc_put_hevc_epel_uni_hv6_8_neon_i8mm, export=1
- add w10, w4, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- str x30, [sp, #-48]!
- stp x4, x6, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add w3, w4, #3
- mov x4, x5
- bl X(ff_hevc_put_hevc_epel_h6_8_neon_i8mm)
- ldp x4, x6, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldr x30, [sp], #48
- b hevc_put_hevc_epel_uni_hv6_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_uni_hv6_8_end_neon
load_epel_filterh x6, x5
sub x1, x1, #4
@@ -2530,25 +2501,6 @@ function hevc_put_hevc_epel_uni_hv6_8_end_neon
2: ret
endfunc
-function ff_hevc_put_hevc_epel_uni_hv8_8_neon_i8mm, export=1
- add w10, w4, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- str x30, [sp, #-48]!
- stp x4, x6, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add w3, w4, #3
- mov x4, x5
- bl X(ff_hevc_put_hevc_epel_h8_8_neon_i8mm)
- ldp x4, x6, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldr x30, [sp], #48
- b hevc_put_hevc_epel_uni_hv8_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_uni_hv8_8_end_neon
load_epel_filterh x6, x5
mov x10, #(MAX_PB_SIZE * 2)
@@ -2568,25 +2520,6 @@ function hevc_put_hevc_epel_uni_hv8_8_end_neon
2: ret
endfunc
-function ff_hevc_put_hevc_epel_uni_hv12_8_neon_i8mm, export=1
- add w10, w4, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- str x30, [sp, #-48]!
- stp x4, x6, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add w3, w4, #3
- mov x4, x5
- bl X(ff_hevc_put_hevc_epel_h12_8_neon_i8mm)
- ldp x4, x6, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldr x30, [sp], #48
- b hevc_put_hevc_epel_uni_hv12_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_uni_hv12_8_end_neon
load_epel_filterh x6, x5
sub x1, x1, #8
@@ -2610,25 +2543,6 @@ function hevc_put_hevc_epel_uni_hv12_8_end_neon
2: ret
endfunc
-function ff_hevc_put_hevc_epel_uni_hv16_8_neon_i8mm, export=1
- add w10, w4, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- str x30, [sp, #-48]!
- stp x4, x6, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add w3, w4, #3
- mov x4, x5
- bl X(ff_hevc_put_hevc_epel_h16_8_neon_i8mm)
- ldp x4, x6, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldr x30, [sp], #48
- b hevc_put_hevc_epel_uni_hv16_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_uni_hv16_8_end_neon
load_epel_filterh x6, x5
mov x10, #(MAX_PB_SIZE * 2)
@@ -2651,25 +2565,6 @@ function hevc_put_hevc_epel_uni_hv16_8_end_neon
2: ret
endfunc
-function ff_hevc_put_hevc_epel_uni_hv24_8_neon_i8mm, export=1
- add w10, w4, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- str x30, [sp, #-48]!
- stp x4, x6, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add w3, w4, #3
- mov x4, x5
- bl X(ff_hevc_put_hevc_epel_h24_8_neon_i8mm)
- ldp x4, x6, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldr x30, [sp], #48
- b hevc_put_hevc_epel_uni_hv24_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_uni_hv24_8_end_neon
load_epel_filterh x6, x5
mov x10, #(MAX_PB_SIZE * 2)
@@ -2695,6 +2590,123 @@ function hevc_put_hevc_epel_uni_hv24_8_end_neon
2: ret
endfunc
+#if HAVE_I8MM
+ENABLE_I8MM
+
+function ff_hevc_put_hevc_epel_uni_hv4_8_neon_i8mm, export=1
+ add w10, w4, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ str x30, [sp, #-48]!
+ stp x4, x6, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add w3, w4, #3
+ mov x4, x5
+ bl X(ff_hevc_put_hevc_epel_h4_8_neon_i8mm)
+ ldp x4, x6, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldr x30, [sp], #48
+ b hevc_put_hevc_epel_uni_hv4_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_uni_hv6_8_neon_i8mm, export=1
+ add w10, w4, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ str x30, [sp, #-48]!
+ stp x4, x6, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add w3, w4, #3
+ mov x4, x5
+ bl X(ff_hevc_put_hevc_epel_h6_8_neon_i8mm)
+ ldp x4, x6, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldr x30, [sp], #48
+ b hevc_put_hevc_epel_uni_hv6_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_uni_hv8_8_neon_i8mm, export=1
+ add w10, w4, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ str x30, [sp, #-48]!
+ stp x4, x6, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add w3, w4, #3
+ mov x4, x5
+ bl X(ff_hevc_put_hevc_epel_h8_8_neon_i8mm)
+ ldp x4, x6, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldr x30, [sp], #48
+ b hevc_put_hevc_epel_uni_hv8_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_uni_hv12_8_neon_i8mm, export=1
+ add w10, w4, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ str x30, [sp, #-48]!
+ stp x4, x6, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add w3, w4, #3
+ mov x4, x5
+ bl X(ff_hevc_put_hevc_epel_h12_8_neon_i8mm)
+ ldp x4, x6, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldr x30, [sp], #48
+ b hevc_put_hevc_epel_uni_hv12_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_uni_hv16_8_neon_i8mm, export=1
+ add w10, w4, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ str x30, [sp, #-48]!
+ stp x4, x6, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add w3, w4, #3
+ mov x4, x5
+ bl X(ff_hevc_put_hevc_epel_h16_8_neon_i8mm)
+ ldp x4, x6, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldr x30, [sp], #48
+ b hevc_put_hevc_epel_uni_hv16_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_uni_hv24_8_neon_i8mm, export=1
+ add w10, w4, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ str x30, [sp, #-48]!
+ stp x4, x6, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add w3, w4, #3
+ mov x4, x5
+ bl X(ff_hevc_put_hevc_epel_h24_8_neon_i8mm)
+ ldp x4, x6, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldr x30, [sp], #48
+ b hevc_put_hevc_epel_uni_hv24_8_end_neon
+endfunc
+
function ff_hevc_put_hevc_epel_uni_hv32_8_neon_i8mm, export=1
stp x5, x6, [sp, #-64]!
stp x3, x4, [sp, #16]
@@ -3098,6 +3110,8 @@ function ff_hevc_put_hevc_epel_uni_w_h64_8_neon_i8mm, export=1
b.hi 1b
ret
endfunc
+DISABLE_I8MM
+#endif
.macro epel_uni_w_hv_start
mov x15, x5 //denom
@@ -3202,28 +3216,6 @@ endfunc
-function ff_hevc_put_hevc_epel_uni_w_hv4_8_neon_i8mm, export=1
- epel_uni_w_hv_start
- sxtw x4, w4
-
- add x10, x4, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- str x30, [sp, #-48]!
- stp x4, x6, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add x3, x4, #3
- mov x4, x5
- bl X(ff_hevc_put_hevc_epel_h4_8_neon_i8mm)
- ldp x4, x6, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldr x30, [sp], #48
- b hevc_put_hevc_epel_uni_w_hv4_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_uni_w_hv4_8_end_neon
load_epel_filterh x6, x5
mov x10, #(MAX_PB_SIZE * 2)
@@ -3273,28 +3265,6 @@ function hevc_put_hevc_epel_uni_w_hv4_8_end_neon
ret
endfunc
-function ff_hevc_put_hevc_epel_uni_w_hv6_8_neon_i8mm, export=1
- epel_uni_w_hv_start
- sxtw x4, w4
-
- add x10, x4, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- str x30, [sp, #-48]!
- stp x4, x6, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add x3, x4, #3
- mov x4, x5
- bl X(ff_hevc_put_hevc_epel_h6_8_neon_i8mm)
- ldp x4, x6, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldr x30, [sp], #48
- b hevc_put_hevc_epel_uni_w_hv6_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_uni_w_hv6_8_end_neon
load_epel_filterh x6, x5
sub x1, x1, #4
@@ -3349,28 +3319,6 @@ function hevc_put_hevc_epel_uni_w_hv6_8_end_neon
ret
endfunc
-function ff_hevc_put_hevc_epel_uni_w_hv8_8_neon_i8mm, export=1
- epel_uni_w_hv_start
- sxtw x4, w4
-
- add x10, x4, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- str x30, [sp, #-48]!
- stp x4, x6, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add x3, x4, #3
- mov x4, x5
- bl X(ff_hevc_put_hevc_epel_h8_8_neon_i8mm)
- ldp x4, x6, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldr x30, [sp], #48
- b hevc_put_hevc_epel_uni_w_hv8_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_uni_w_hv8_8_end_neon
load_epel_filterh x6, x5
mov x10, #(MAX_PB_SIZE * 2)
@@ -3420,28 +3368,6 @@ function hevc_put_hevc_epel_uni_w_hv8_8_end_neon
ret
endfunc
-function ff_hevc_put_hevc_epel_uni_w_hv12_8_neon_i8mm, export=1
- epel_uni_w_hv_start
- sxtw x4, w4
-
- add x10, x4, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- str x30, [sp, #-48]!
- stp x4, x6, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add x3, x4, #3
- mov x4, x5
- bl X(ff_hevc_put_hevc_epel_h12_8_neon_i8mm)
- ldp x4, x6, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldr x30, [sp], #48
- b hevc_put_hevc_epel_uni_w_hv12_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_uni_w_hv12_8_end_neon
load_epel_filterh x6, x5
sub x1, x1, #8
@@ -3504,28 +3430,6 @@ function hevc_put_hevc_epel_uni_w_hv12_8_end_neon
ret
endfunc
-function ff_hevc_put_hevc_epel_uni_w_hv16_8_neon_i8mm, export=1
- epel_uni_w_hv_start
- sxtw x4, w4
-
- add x10, x4, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- str x30, [sp, #-48]!
- stp x4, x6, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add x3, x4, #3
- mov x4, x5
- bl X(ff_hevc_put_hevc_epel_h16_8_neon_i8mm)
- ldp x4, x6, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldr x30, [sp], #48
- b hevc_put_hevc_epel_uni_w_hv16_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_uni_w_hv16_8_end_neon
load_epel_filterh x6, x5
mov x10, #(MAX_PB_SIZE * 2)
@@ -3587,28 +3491,6 @@ function hevc_put_hevc_epel_uni_w_hv16_8_end_neon
ret
endfunc
-function ff_hevc_put_hevc_epel_uni_w_hv24_8_neon_i8mm, export=1
- epel_uni_w_hv_start
- sxtw x4, w4
-
- add x10, x4, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- str x30, [sp, #-48]!
- stp x4, x6, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add x3, x4, #3
- mov x4, x5
- bl X(ff_hevc_put_hevc_epel_h24_8_neon_i8mm)
- ldp x4, x6, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldr x30, [sp], #48
- b hevc_put_hevc_epel_uni_w_hv24_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_uni_w_hv24_8_end_neon
load_epel_filterh x6, x5
mov x10, #(MAX_PB_SIZE * 2)
@@ -3686,6 +3568,141 @@ function hevc_put_hevc_epel_uni_w_hv24_8_end_neon
ret
endfunc
+#if HAVE_I8MM
+ENABLE_I8MM
+
+function ff_hevc_put_hevc_epel_uni_w_hv4_8_neon_i8mm, export=1
+ epel_uni_w_hv_start
+ sxtw x4, w4
+
+ add x10, x4, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ str x30, [sp, #-48]!
+ stp x4, x6, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add x3, x4, #3
+ mov x4, x5
+ bl X(ff_hevc_put_hevc_epel_h4_8_neon_i8mm)
+ ldp x4, x6, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldr x30, [sp], #48
+ b hevc_put_hevc_epel_uni_w_hv4_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_uni_w_hv6_8_neon_i8mm, export=1
+ epel_uni_w_hv_start
+ sxtw x4, w4
+
+ add x10, x4, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ str x30, [sp, #-48]!
+ stp x4, x6, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add x3, x4, #3
+ mov x4, x5
+ bl X(ff_hevc_put_hevc_epel_h6_8_neon_i8mm)
+ ldp x4, x6, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldr x30, [sp], #48
+ b hevc_put_hevc_epel_uni_w_hv6_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_uni_w_hv8_8_neon_i8mm, export=1
+ epel_uni_w_hv_start
+ sxtw x4, w4
+
+ add x10, x4, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ str x30, [sp, #-48]!
+ stp x4, x6, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add x3, x4, #3
+ mov x4, x5
+ bl X(ff_hevc_put_hevc_epel_h8_8_neon_i8mm)
+ ldp x4, x6, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldr x30, [sp], #48
+ b hevc_put_hevc_epel_uni_w_hv8_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_uni_w_hv12_8_neon_i8mm, export=1
+ epel_uni_w_hv_start
+ sxtw x4, w4
+
+ add x10, x4, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ str x30, [sp, #-48]!
+ stp x4, x6, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add x3, x4, #3
+ mov x4, x5
+ bl X(ff_hevc_put_hevc_epel_h12_8_neon_i8mm)
+ ldp x4, x6, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldr x30, [sp], #48
+ b hevc_put_hevc_epel_uni_w_hv12_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_uni_w_hv16_8_neon_i8mm, export=1
+ epel_uni_w_hv_start
+ sxtw x4, w4
+
+ add x10, x4, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ str x30, [sp, #-48]!
+ stp x4, x6, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add x3, x4, #3
+ mov x4, x5
+ bl X(ff_hevc_put_hevc_epel_h16_8_neon_i8mm)
+ ldp x4, x6, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldr x30, [sp], #48
+ b hevc_put_hevc_epel_uni_w_hv16_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_uni_w_hv24_8_neon_i8mm, export=1
+ epel_uni_w_hv_start
+ sxtw x4, w4
+
+ add x10, x4, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ str x30, [sp, #-48]!
+ stp x4, x6, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add x3, x4, #3
+ mov x4, x5
+ bl X(ff_hevc_put_hevc_epel_h24_8_neon_i8mm)
+ ldp x4, x6, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldr x30, [sp], #48
+ b hevc_put_hevc_epel_uni_w_hv24_8_end_neon
+endfunc
+
function ff_hevc_put_hevc_epel_uni_w_hv32_8_neon_i8mm, export=1
ldp x15, x16, [sp]
mov x17, #16
@@ -3769,26 +3786,9 @@ function ff_hevc_put_hevc_epel_uni_w_hv64_8_neon_i8mm, export=1
ret
endfunc
+DISABLE_I8MM
+#endif
-function ff_hevc_put_hevc_epel_bi_hv4_8_neon_i8mm, export=1
- add w10, w5, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- stp x7, x30, [sp, #-48]!
- stp x4, x5, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add w3, w5, #3
- mov x4, x6
- mov x5, x7
- bl X(ff_hevc_put_hevc_epel_h4_8_neon_i8mm)
- ldp x4, x5, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldp x7, x30, [sp], #48
- b hevc_put_hevc_epel_bi_hv4_8_end_neon
-endfunc
function hevc_put_hevc_epel_bi_hv4_8_end_neon
load_epel_filterh x7, x6
@@ -3810,26 +3810,6 @@ function hevc_put_hevc_epel_bi_hv4_8_end_neon
2: ret
endfunc
-function ff_hevc_put_hevc_epel_bi_hv6_8_neon_i8mm, export=1
- add w10, w5, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- stp x7, x30, [sp, #-48]!
- stp x4, x5, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add w3, w5, #3
- mov x4, x6
- mov x5, x7
- bl X(ff_hevc_put_hevc_epel_h6_8_neon_i8mm)
- ldp x4, x5, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldp x7, x30, [sp], #48
- b hevc_put_hevc_epel_bi_hv6_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_bi_hv6_8_end_neon
load_epel_filterh x7, x6
sub x1, x1, #4
@@ -3853,26 +3833,6 @@ function hevc_put_hevc_epel_bi_hv6_8_end_neon
2: ret
endfunc
-function ff_hevc_put_hevc_epel_bi_hv8_8_neon_i8mm, export=1
- add w10, w5, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- stp x7, x30, [sp, #-48]!
- stp x4, x5, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add w3, w5, #3
- mov x4, x6
- mov x5, x7
- bl X(ff_hevc_put_hevc_epel_h8_8_neon_i8mm)
- ldp x4, x5, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldp x7, x30, [sp], #48
- b hevc_put_hevc_epel_bi_hv8_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_bi_hv8_8_end_neon
load_epel_filterh x7, x6
mov x10, #(MAX_PB_SIZE * 2)
@@ -3894,26 +3854,6 @@ function hevc_put_hevc_epel_bi_hv8_8_end_neon
2: ret
endfunc
-function ff_hevc_put_hevc_epel_bi_hv12_8_neon_i8mm, export=1
- add w10, w5, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- stp x7, x30, [sp, #-48]!
- stp x4, x5, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add w3, w5, #3
- mov x4, x6
- mov x5, x7
- bl X(ff_hevc_put_hevc_epel_h12_8_neon_i8mm)
- ldp x4, x5, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldp x7, x30, [sp], #48
- b hevc_put_hevc_epel_bi_hv12_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_bi_hv12_8_end_neon
load_epel_filterh x7, x6
sub x1, x1, #8
@@ -3940,26 +3880,6 @@ function hevc_put_hevc_epel_bi_hv12_8_end_neon
2: ret
endfunc
-function ff_hevc_put_hevc_epel_bi_hv16_8_neon_i8mm, export=1
- add w10, w5, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- stp x7, x30, [sp, #-48]!
- stp x4, x5, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add w3, w5, #3
- mov x4, x6
- mov x5, x7
- bl X(ff_hevc_put_hevc_epel_h16_8_neon_i8mm)
- ldp x4, x5, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldp x7, x30, [sp], #48
- b hevc_put_hevc_epel_bi_hv16_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_bi_hv16_8_end_neon
load_epel_filterh x7, x6
mov x10, #(MAX_PB_SIZE * 2)
@@ -3985,26 +3905,6 @@ function hevc_put_hevc_epel_bi_hv16_8_end_neon
2: ret
endfunc
-function ff_hevc_put_hevc_epel_bi_hv24_8_neon_i8mm, export=1
- add w10, w5, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- stp x7, x30, [sp, #-48]!
- stp x4, x5, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add w3, w5, #3
- mov x4, x6
- mov x5, x7
- bl X(ff_hevc_put_hevc_epel_h24_8_neon_i8mm)
- ldp x4, x5, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldp x7, x30, [sp], #48
- b hevc_put_hevc_epel_bi_hv24_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_bi_hv24_8_end_neon
load_epel_filterh x7, x6
mov x10, #(MAX_PB_SIZE * 2)
@@ -4034,27 +3934,6 @@ function hevc_put_hevc_epel_bi_hv24_8_end_neon
2: ret
endfunc
-function ff_hevc_put_hevc_epel_bi_hv32_8_neon_i8mm, export=1
- str d8, [sp, #-16]!
- add w10, w5, #3
- lsl x10, x10, #7
- sub sp, sp, x10 // tmp_array
- stp x7, x30, [sp, #-48]!
- stp x4, x5, [sp, #16]
- stp x0, x1, [sp, #32]
- add x0, sp, #48
- sub x1, x2, x3
- mov x2, x3
- add w3, w5, #3
- mov x4, x6
- mov x5, x7
- bl X(ff_hevc_put_hevc_epel_h32_8_neon_i8mm)
- ldp x4, x5, [sp, #16]
- ldp x0, x1, [sp, #32]
- ldp x7, x30, [sp], #48
- b hevc_put_hevc_epel_bi_hv32_8_end_neon
-endfunc
-
function hevc_put_hevc_epel_bi_hv32_8_end_neon
load_epel_filterh x7, x6
mov x10, #(MAX_PB_SIZE * 2)
@@ -4089,6 +3968,150 @@ function hevc_put_hevc_epel_bi_hv32_8_end_neon
ret
endfunc
+#if HAVE_I8MM
+ENABLE_I8MM
+
+function ff_hevc_put_hevc_epel_bi_hv4_8_neon_i8mm, export=1
+ add w10, w5, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ stp x7, x30, [sp, #-48]!
+ stp x4, x5, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add w3, w5, #3
+ mov x4, x6
+ mov x5, x7
+ bl X(ff_hevc_put_hevc_epel_h4_8_neon_i8mm)
+ ldp x4, x5, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldp x7, x30, [sp], #48
+ b hevc_put_hevc_epel_bi_hv4_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_bi_hv6_8_neon_i8mm, export=1
+ add w10, w5, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ stp x7, x30, [sp, #-48]!
+ stp x4, x5, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add w3, w5, #3
+ mov x4, x6
+ mov x5, x7
+ bl X(ff_hevc_put_hevc_epel_h6_8_neon_i8mm)
+ ldp x4, x5, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldp x7, x30, [sp], #48
+ b hevc_put_hevc_epel_bi_hv6_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_bi_hv8_8_neon_i8mm, export=1
+ add w10, w5, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ stp x7, x30, [sp, #-48]!
+ stp x4, x5, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add w3, w5, #3
+ mov x4, x6
+ mov x5, x7
+ bl X(ff_hevc_put_hevc_epel_h8_8_neon_i8mm)
+ ldp x4, x5, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldp x7, x30, [sp], #48
+ b hevc_put_hevc_epel_bi_hv8_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_bi_hv12_8_neon_i8mm, export=1
+ add w10, w5, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ stp x7, x30, [sp, #-48]!
+ stp x4, x5, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add w3, w5, #3
+ mov x4, x6
+ mov x5, x7
+ bl X(ff_hevc_put_hevc_epel_h12_8_neon_i8mm)
+ ldp x4, x5, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldp x7, x30, [sp], #48
+ b hevc_put_hevc_epel_bi_hv12_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_bi_hv16_8_neon_i8mm, export=1
+ add w10, w5, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ stp x7, x30, [sp, #-48]!
+ stp x4, x5, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add w3, w5, #3
+ mov x4, x6
+ mov x5, x7
+ bl X(ff_hevc_put_hevc_epel_h16_8_neon_i8mm)
+ ldp x4, x5, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldp x7, x30, [sp], #48
+ b hevc_put_hevc_epel_bi_hv16_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_bi_hv24_8_neon_i8mm, export=1
+ add w10, w5, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ stp x7, x30, [sp, #-48]!
+ stp x4, x5, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add w3, w5, #3
+ mov x4, x6
+ mov x5, x7
+ bl X(ff_hevc_put_hevc_epel_h24_8_neon_i8mm)
+ ldp x4, x5, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldp x7, x30, [sp], #48
+ b hevc_put_hevc_epel_bi_hv24_8_end_neon
+endfunc
+
+function ff_hevc_put_hevc_epel_bi_hv32_8_neon_i8mm, export=1
+ str d8, [sp, #-16]!
+ add w10, w5, #3
+ lsl x10, x10, #7
+ sub sp, sp, x10 // tmp_array
+ stp x7, x30, [sp, #-48]!
+ stp x4, x5, [sp, #16]
+ stp x0, x1, [sp, #32]
+ add x0, sp, #48
+ sub x1, x2, x3
+ mov x2, x3
+ add w3, w5, #3
+ mov x4, x6
+ mov x5, x7
+ bl X(ff_hevc_put_hevc_epel_h32_8_neon_i8mm)
+ ldp x4, x5, [sp, #16]
+ ldp x0, x1, [sp, #32]
+ ldp x7, x30, [sp], #48
+ b hevc_put_hevc_epel_bi_hv32_8_end_neon
+endfunc
+
function ff_hevc_put_hevc_epel_bi_hv48_8_neon_i8mm, export=1
stp x6, x7, [sp, #-80]!
stp x4, x5, [sp, #16]