]> git.sesse.net Git - ffmpeg/blob - libavcodec/aarch64/vp9mc_aarch64.S
avcodec/adpcm_ima_apm: cosmetics
[ffmpeg] / libavcodec / aarch64 / vp9mc_aarch64.S
1 /*
2  * Copyright (c) 2016 Google Inc.
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20
21 #include "libavutil/aarch64/asm.S"
22
23 // All public functions in this file have the following signature:
24 // typedef void (*vp9_mc_func)(uint8_t *dst, ptrdiff_t dst_stride,
25 //                            const uint8_t *ref, ptrdiff_t ref_stride,
26 //                            int h, int mx, int my);
27
28 function ff_vp9_copy128_aarch64, export=1
29 1:
30         ldp             x5,  x6,  [x2]
31         ldp             x7,  x8,  [x2, #16]
32         stp             x5,  x6,  [x0]
33         ldp             x9,  x10, [x2, #32]
34         stp             x7,  x8,  [x0, #16]
35         subs            w4,  w4,  #1
36         ldp             x11, x12, [x2, #48]
37         stp             x9,  x10, [x0, #32]
38         stp             x11, x12, [x0, #48]
39         ldp             x5,  x6,  [x2, #64]
40         ldp             x7,  x8,  [x2, #80]
41         stp             x5,  x6,  [x0, #64]
42         ldp             x9,  x10, [x2, #96]
43         stp             x7,  x8,  [x0, #80]
44         ldp             x11, x12, [x2, #112]
45         stp             x9,  x10, [x0, #96]
46         stp             x11, x12, [x0, #112]
47         add             x2,  x2,  x3
48         add             x0,  x0,  x1
49         b.ne            1b
50         ret
51 endfunc
52
53 function ff_vp9_copy64_aarch64, export=1
54 1:
55         ldp             x5,  x6,  [x2]
56         ldp             x7,  x8,  [x2, #16]
57         stp             x5,  x6,  [x0]
58         ldp             x9,  x10, [x2, #32]
59         stp             x7,  x8,  [x0, #16]
60         subs            w4,  w4,  #1
61         ldp             x11, x12, [x2, #48]
62         stp             x9,  x10, [x0, #32]
63         stp             x11, x12, [x0, #48]
64         add             x2,  x2,  x3
65         add             x0,  x0,  x1
66         b.ne            1b
67         ret
68 endfunc
69
70 function ff_vp9_copy32_aarch64, export=1
71 1:
72         ldp             x5,  x6,  [x2]
73         ldp             x7,  x8,  [x2, #16]
74         stp             x5,  x6,  [x0]
75         subs            w4,  w4,  #1
76         stp             x7,  x8,  [x0, #16]
77         add             x2,  x2,  x3
78         add             x0,  x0,  x1
79         b.ne            1b
80         ret
81 endfunc