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

Showing the changes to libavcodec (3 of 3 files). Show all

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
273 int height, int denom, int wx, int ox,273 int height, int denom, int wx, int ox,
274 const int8_t *hf, const int8_t *vf, int width),);274 const int8_t *hf, const int8_t *vf, int width),);
275 275
276NEON8_FNPROTO_PARTIAL_6(qpel_h, (int16_t * dst,276NEON8_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
280NEON8_FNPROTO_PARTIAL_6(epel_h, (int16_t *dst,
277 const uint8_t *_src, ptrdiff_t _srcstride, int height,281 const uint8_t *_src, ptrdiff_t _srcstride, int height,
278 const int8_t *hf, const int8_t *vf, int width), _i8mm);282 const int8_t *hf, const int8_t *vf, int width), _i8mm);
279 283
libavcodec/aarch64/h26x/epel_neon.S+54−6
@@ -1910,6 +1910,12 @@ endfunc · 1909 unmodified lines
1910 1910
1911#if HAVE_I8MM1911#if HAVE_I8MM
1912ENABLE_I8MM1912ENABLE_I8MM
1913
1914function ff_vvc_put_epel_h4_8_neon_i8mm, export=1
1915 VVC_EPEL_H_HEADER
1916 b 1f
1917endfunc
1918
1913function ff_hevc_put_hevc_epel_h4_8_neon_i8mm, export=11919function ff_hevc_put_hevc_epel_h4_8_neon_i8mm, export=1
1914 EPEL_H_HEADER1920 EPEL_H_HEADER
19151: ld1 {v4.8b}, [x1], x219211: ld1 {v4.8b}, [x1], x2
@@ -1953,6 +1959,11 @@ function ff_hevc_put_hevc_epel_h6_8_neon_i8mm, export=1 · 37 unmodified lines
1953 ret1959 ret
1954endfunc1960endfunc
1955 1961
1962function ff_vvc_put_epel_h8_8_neon_i8mm, export=1
1963 VVC_EPEL_H_HEADER
1964 b 1f
1965endfunc
1966
1956function ff_hevc_put_hevc_epel_h8_8_neon_i8mm, export=11967function ff_hevc_put_hevc_epel_h8_8_neon_i8mm, export=1
1957 EPEL_H_HEADER1968 EPEL_H_HEADER
19581: ld1 {v4.16b}, [x1], x219691: ld1 {v4.16b}, [x1], x2
@@ -2003,6 +2014,11 @@ function ff_hevc_put_hevc_epel_h12_8_neon_i8mm, export=1 · 44 unmodified lines
2003 ret2014 ret
2004endfunc2015endfunc
2005 2016
2017function ff_vvc_put_epel_h16_8_neon_i8mm, export=1
2018 VVC_EPEL_H_HEADER
2019 b 1f
2020endfunc
2021
2006function ff_hevc_put_hevc_epel_h16_8_neon_i8mm, export=12022function ff_hevc_put_hevc_epel_h16_8_neon_i8mm, export=1
2007 EPEL_H_HEADER2023 EPEL_H_HEADER
20081: ld1 {v0.16b, v1.16b}, [x1], x220241: 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
2077 ret2093 ret
2078endfunc2094endfunc
2079 2095
2096function ff_vvc_put_epel_h32_8_neon_i8mm, export=1
2097 VVC_EPEL_H_HEADER
2098 b 1f
2099endfunc
2100
2080function ff_hevc_put_hevc_epel_h32_8_neon_i8mm, export=12101function ff_hevc_put_hevc_epel_h32_8_neon_i8mm, export=1
2081 EPEL_H_HEADER2102 EPEL_H_HEADER
20821: ld1 {v0.16b, v1.16b, v2.16b}, [x1], x221031: 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
2176 ret2197 ret
2177endfunc2198endfunc
2178 2199
2179function ff_hevc_put_hevc_epel_h64_8_neon_i8mm, export=12200.macro put_epel_h64_8_neon_i8mm
2180 EPEL_H_HEADER2201 ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #64
2181 sub x2, x2, #64
21821: ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #64
2183 subs w3, w3, #1 // height
2184 ext v4.16b, v0.16b, v1.16b, #12202 ext v4.16b, v0.16b, v1.16b, #1
2185 ext v5.16b, v0.16b, v1.16b, #22203 ext v5.16b, v0.16b, v1.16b, #2
2186 ext v6.16b, v0.16b, v1.16b, #32204 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
2243 xtn2 v22.8h, v26.4s2261 xtn2 v22.8h, v26.4s
2244 xtn v23.4h, v23.4s2262 xtn v23.4h, v23.4s
2245 xtn2 v23.8h, v27.4s2263 xtn2 v23.8h, v27.4s
2246 st4 {v20.8h, v21.8h, v22.8h, v23.8h}, [x0], #642264 st4 {v20.8h, v21.8h, v22.8h, v23.8h}, [x0], x10
2265.endm
2266
2267function 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
2272endfunc
2273
2274function ff_hevc_put_hevc_epel_h64_8_neon_i8mm, export=1
2275 EPEL_H_HEADER
2276 mov x10, #64
2277 sub x2, x2, #64
22781:
2279 subs w3, w3, #1 // height
2280 put_epel_h64_8_neon_i8mm
2281 b.ne 1b
2282 ret
2283endfunc
2284
2285function 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
22901:
2291 put_epel_h64_8_neon_i8mm
2292 subs w3, w3, #1
2293 put_epel_h64_8_neon_i8mm
2294 add x1, x1, x11
2247 b.ne 1b2295 b.ne 1b
2248 ret2296 ret
2249endfunc2297endfunc
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
127 c->inter.put[0][4][1][1] = ff_vvc_put_qpel_hv32_8_neon_i8mm;127 c->inter.put[0][4][1][1] = ff_vvc_put_qpel_hv32_8_neon_i8mm;
128 c->inter.put[0][5][1][1] = ff_vvc_put_qpel_hv64_8_neon_i8mm;128 c->inter.put[0][5][1][1] = ff_vvc_put_qpel_hv64_8_neon_i8mm;
129 c->inter.put[0][6][1][1] = ff_vvc_put_qpel_hv128_8_neon_i8mm;129 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;
130 }137 }
131 } else if (bd == 10) {138 } else if (bd == 10) {
132 c->alf.filter[LUMA] = alf_filter_luma_10_neon;139 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