History

aarch64/vvc: Add put_epel_h i8mm

put_chroma_h_8_4x4_c: 0.4 ( 1.00x) put_chroma_h_8_4x4_neon: 0.0 ( 0.00x) put_chroma_h_8_4x4_i8mm: 0.1 ( 2.67x) put_chroma_h_8_8x8_c: 1.6 ( 1.00x) put_chroma_h_8_8x8_neon: 0.1 (11.00x) put_chroma_h_8_8x8_i8mm: 0.1 (11.00x) put_chroma_h_8_16x16_c: 6.9 ( 1.00x) put_chroma_h_8_16x16_neon: 1.1 ( 6.00x) put_chroma_h_8_16x16_i8mm: 0.7 (10.62x) put_chroma_h_8_32x32_c: 27.6 ( 1.00x) put_chroma_h_8_32x32_neon: 4.7 ( 5.95x) put_chroma_h_8_32x32_i8mm: 4.4 ( 6.28x) put_chroma_h_8_64x64_c: 116.2 ( 1.00x) put_chroma_h_8_64x64_neon: 19.1 ( 6.07x) put_chroma_h_8_64x64_i8mm: 17.1 ( 6.77x) put_chroma_h_8_128x128_c: 466.6 ( 1.00x) put_chroma_h_8_128x128_neon: 81.4 ( 5.73x) put_chroma_h_8_128x128_i8mm: 71.7 ( 6.51x)

Zhao Zhili committed 2 years ago

Commit 0dcf2041 parent 41a18853 files · +66 −7Browse files

Unified · Split

3 files
  1. libavcodec/aarch64/h26x/dsp.h +5 −1
  2. libavcodec/aarch64/h26x/epel_neon.S +54 −6
  3. libavcodec/aarch64/vvc/dsp_init.c +7 −0
libavcodec/aarch64/h26x/dsp.h+5−1
@@ -273,7 +273,11 @@ NEON8_FNPROTO_PARTIAL_6(pel_uni_w_pixels, (uint8_t *_dst, ptrdiff_t _dststride, · 272 unmodified lines
273273 int height, int denom, int wx, int ox,
274274 const int8_t *hf, const int8_t *vf, int width),);
275275
276−NEON8_FNPROTO_PARTIAL_6(qpel_h, (int16_t * dst,
276+NEON8_FNPROTO_PARTIAL_6(qpel_h, (int16_t *dst,
277+ const uint8_t *_src, ptrdiff_t _srcstride, int height,
278+ const int8_t *hf, const int8_t *vf, int width), _i8mm);
279+
280+NEON8_FNPROTO_PARTIAL_6(epel_h, (int16_t *dst,
277281 const uint8_t *_src, ptrdiff_t _srcstride, int height,
278282 const int8_t *hf, const int8_t *vf, int width), _i8mm);
279283
libavcodec/aarch64/h26x/epel_neon.S+54−6
@@ -1910,6 +1910,12 @@ endfunc · 1909 unmodified lines
19101910
19111911 #if HAVE_I8MM
19121912 ENABLE_I8MM
1913+
1914+function ff_vvc_put_epel_h4_8_neon_i8mm, export=1
1915+ VVC_EPEL_H_HEADER
1916+ b 1f
1917+endfunc
1918+
19131919 function ff_hevc_put_hevc_epel_h4_8_neon_i8mm, export=1
19141920 EPEL_H_HEADER
19151921 1: ld1 {v4.8b}, [x1], x2
@@ -1953,6 +1959,11 @@ function ff_hevc_put_hevc_epel_h6_8_neon_i8mm, export=1 · 37 unmodified lines
19531959 ret
19541960 endfunc
19551961
1962+function ff_vvc_put_epel_h8_8_neon_i8mm, export=1
1963+ VVC_EPEL_H_HEADER
1964+ b 1f
1965+endfunc
1966+
19561967 function ff_hevc_put_hevc_epel_h8_8_neon_i8mm, export=1
19571968 EPEL_H_HEADER
19581969 1: ld1 {v4.16b}, [x1], x2
@@ -2003,6 +2014,11 @@ function ff_hevc_put_hevc_epel_h12_8_neon_i8mm, export=1 · 44 unmodified lines
20032014 ret
20042015 endfunc
20052016
2017+function ff_vvc_put_epel_h16_8_neon_i8mm, export=1
2018+ VVC_EPEL_H_HEADER
2019+ b 1f
2020+endfunc
2021+
20062022 function ff_hevc_put_hevc_epel_h16_8_neon_i8mm, export=1
20072023 EPEL_H_HEADER
20082024 1: ld1 {v0.16b, v1.16b}, [x1], x2
@@ -2077,6 +2093,11 @@ function ff_hevc_put_hevc_epel_h24_8_neon_i8mm, export=1 · 68 unmodified lines
20772093 ret
20782094 endfunc
20792095
2096+function ff_vvc_put_epel_h32_8_neon_i8mm, export=1
2097+ VVC_EPEL_H_HEADER
2098+ b 1f
2099+endfunc
2100+
20802101 function ff_hevc_put_hevc_epel_h32_8_neon_i8mm, export=1
20812102 EPEL_H_HEADER
20822103 1: ld1 {v0.16b, v1.16b, v2.16b}, [x1], x2
@@ -2176,11 +2197,8 @@ function ff_hevc_put_hevc_epel_h48_8_neon_i8mm, export=1 · 93 unmodified lines
21762197 ret
21772198 endfunc
21782199
2179−function ff_hevc_put_hevc_epel_h64_8_neon_i8mm, export=1
2180− EPEL_H_HEADER
2181− sub x2, x2, #64
2182−1: ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #64
2183− subs w3, w3, #1 // height
2200+.macro put_epel_h64_8_neon_i8mm
2201+ ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #64
21842202 ext v4.16b, v0.16b, v1.16b, #1
21852203 ext v5.16b, v0.16b, v1.16b, #2
21862204 ext v6.16b, v0.16b, v1.16b, #3
@@ -2243,7 +2261,37 @@ function ff_hevc_put_hevc_epel_h64_8_neon_i8mm, export=1 · 56 unmodified lines
22432261 xtn2 v22.8h, v26.4s
22442262 xtn v23.4h, v23.4s
22452263 xtn2 v23.8h, v27.4s
2246− st4 {v20.8h, v21.8h, v22.8h, v23.8h}, [x0], #64
2264+ st4 {v20.8h, v21.8h, v22.8h, v23.8h}, [x0], x10
2265+.endm
2266+
2267+function ff_vvc_put_epel_h64_8_neon_i8mm, export=1
2268+ VVC_EPEL_H_HEADER
2269+ mov x10, #(VVC_MAX_PB_SIZE * 2 - 64)
2270+ sub x2, x2, #64
2271+ b 1f
2272+endfunc
2273+
2274+function ff_hevc_put_hevc_epel_h64_8_neon_i8mm, export=1
2275+ EPEL_H_HEADER
2276+ mov x10, #64
2277+ sub x2, x2, #64
2278+1:
2279+ subs w3, w3, #1 // height
2280+ put_epel_h64_8_neon_i8mm
2281+ b.ne 1b
2282+ ret
2283+endfunc
2284+
2285+function ff_vvc_put_epel_h128_8_neon_i8mm, export=1
2286+ VVC_EPEL_H_HEADER
2287+ sub x11, x2, #128
2288+ mov x10, #64
2289+ mov x2, #0
2290+1:
2291+ put_epel_h64_8_neon_i8mm
2292+ subs w3, w3, #1
2293+ put_epel_h64_8_neon_i8mm
2294+ add x1, x1, x11
22472295 b.ne 1b
22482296 ret
22492297 endfunc
libavcodec/aarch64/vvc/dsp_init.c+7−0
@@ -127,6 +127,13 @@ void ff_vvc_dsp_init_aarch64(VVCDSPContext *const c, const int bd) · 126 unmodified lines
127127 c->inter.put[0][4][1][1] = ff_vvc_put_qpel_hv32_8_neon_i8mm;
128128 c->inter.put[0][5][1][1] = ff_vvc_put_qpel_hv64_8_neon_i8mm;
129129 c->inter.put[0][6][1][1] = ff_vvc_put_qpel_hv128_8_neon_i8mm;
130+
131+ c->inter.put[1][1][0][1] = ff_vvc_put_epel_h4_8_neon_i8mm;
132+ c->inter.put[1][2][0][1] = ff_vvc_put_epel_h8_8_neon_i8mm;
133+ c->inter.put[1][3][0][1] = ff_vvc_put_epel_h16_8_neon_i8mm;
134+ c->inter.put[1][4][0][1] = ff_vvc_put_epel_h32_8_neon_i8mm;
135+ c->inter.put[1][5][0][1] = ff_vvc_put_epel_h64_8_neon_i8mm;
136+ c->inter.put[1][6][0][1] = ff_vvc_put_epel_h128_8_neon_i8mm;
130137 }
131138 } else if (bd == 10) {
132139 c->alf.filter[LUMA] = alf_filter_luma_10_neon;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t