Imported Debian version 2.4.3~trusty1
[deb_ffmpeg.git] / ffmpeg / libavcodec / aarch64 / neon.S
CommitLineData
2ba45a60
DM
1/*
2 * This file is part of FFmpeg.
3 *
4 * FFmpeg is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * FFmpeg is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with FFmpeg; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19.macro transpose_8x8B r0, r1, r2, r3, r4, r5, r6, r7, r8, r9
20 trn1 \r8\().8B, \r0\().8B, \r1\().8B
21 trn2 \r9\().8B, \r0\().8B, \r1\().8B
22 trn1 \r1\().8B, \r2\().8B, \r3\().8B
23 trn2 \r3\().8B, \r2\().8B, \r3\().8B
24 trn1 \r0\().8B, \r4\().8B, \r5\().8B
25 trn2 \r5\().8B, \r4\().8B, \r5\().8B
26 trn1 \r2\().8B, \r6\().8B, \r7\().8B
27 trn2 \r7\().8B, \r6\().8B, \r7\().8B
28
29 trn1 \r4\().4H, \r0\().4H, \r2\().4H
30 trn2 \r2\().4H, \r0\().4H, \r2\().4H
31 trn1 \r6\().4H, \r5\().4H, \r7\().4H
32 trn2 \r7\().4H, \r5\().4H, \r7\().4H
33 trn1 \r5\().4H, \r9\().4H, \r3\().4H
34 trn2 \r9\().4H, \r9\().4H, \r3\().4H
35 trn1 \r3\().4H, \r8\().4H, \r1\().4H
36 trn2 \r8\().4H, \r8\().4H, \r1\().4H
37
38 trn1 \r0\().2S, \r3\().2S, \r4\().2S
39 trn2 \r4\().2S, \r3\().2S, \r4\().2S
40
41 trn1 \r1\().2S, \r5\().2S, \r6\().2S
42 trn2 \r5\().2S, \r5\().2S, \r6\().2S
43
44 trn2 \r6\().2S, \r8\().2S, \r2\().2S
45 trn1 \r2\().2S, \r8\().2S, \r2\().2S
46
47 trn1 \r3\().2S, \r9\().2S, \r7\().2S
48 trn2 \r7\().2S, \r9\().2S, \r7\().2S
49.endm
50
51.macro transpose_8x16B r0, r1, r2, r3, r4, r5, r6, r7, t0, t1
52 trn1 \t0\().16B, \r0\().16B, \r1\().16B
53 trn2 \t1\().16B, \r0\().16B, \r1\().16B
54 trn1 \r1\().16B, \r2\().16B, \r3\().16B
55 trn2 \r3\().16B, \r2\().16B, \r3\().16B
56 trn1 \r0\().16B, \r4\().16B, \r5\().16B
57 trn2 \r5\().16B, \r4\().16B, \r5\().16B
58 trn1 \r2\().16B, \r6\().16B, \r7\().16B
59 trn2 \r7\().16B, \r6\().16B, \r7\().16B
60
61 trn1 \r4\().8H, \r0\().8H, \r2\().8H
62 trn2 \r2\().8H, \r0\().8H, \r2\().8H
63 trn1 \r6\().8H, \r5\().8H, \r7\().8H
64 trn2 \r7\().8H, \r5\().8H, \r7\().8H
65 trn1 \r5\().8H, \t1\().8H, \r3\().8H
66 trn2 \t1\().8H, \t1\().8H, \r3\().8H
67 trn1 \r3\().8H, \t0\().8H, \r1\().8H
68 trn2 \t0\().8H, \t0\().8H, \r1\().8H
69
70 trn1 \r0\().4S, \r3\().4S, \r4\().4S
71 trn2 \r4\().4S, \r3\().4S, \r4\().4S
72
73 trn1 \r1\().4S, \r5\().4S, \r6\().4S
74 trn2 \r5\().4S, \r5\().4S, \r6\().4S
75
76 trn2 \r6\().4S, \t0\().4S, \r2\().4S
77 trn1 \r2\().4S, \t0\().4S, \r2\().4S
78
79 trn1 \r3\().4S, \t1\().4S, \r7\().4S
80 trn2 \r7\().4S, \t1\().4S, \r7\().4S
81.endm
82
83.macro transpose_4x16B r0, r1, r2, r3, t4, t5, t6, t7
84 trn1 \t4\().16B, \r0\().16B, \r1\().16B
85 trn2 \t5\().16B, \r0\().16B, \r1\().16B
86 trn1 \t6\().16B, \r2\().16B, \r3\().16B
87 trn2 \t7\().16B, \r2\().16B, \r3\().16B
88
89 trn1 \r0\().8H, \t4\().8H, \t6\().8H
90 trn2 \r2\().8H, \t4\().8H, \t6\().8H
91 trn1 \r1\().8H, \t5\().8H, \t7\().8H
92 trn2 \r3\().8H, \t5\().8H, \t7\().8H
93.endm
94
95.macro transpose_4x8B r0, r1, r2, r3, t4, t5, t6, t7
96 trn1 \t4\().8B, \r0\().8B, \r1\().8B
97 trn2 \t5\().8B, \r0\().8B, \r1\().8B
98 trn1 \t6\().8B, \r2\().8B, \r3\().8B
99 trn2 \t7\().8B, \r2\().8B, \r3\().8B
100
101 trn1 \r0\().4H, \t4\().4H, \t6\().4H
102 trn2 \r2\().4H, \t4\().4H, \t6\().4H
103 trn1 \r1\().4H, \t5\().4H, \t7\().4H
104 trn2 \r3\().4H, \t5\().4H, \t7\().4H
105.endm
106
107.macro transpose_4x4H r0, r1, r2, r3, r4, r5, r6, r7
108 trn1 \r4\().4H, \r0\().4H, \r1\().4H
109 trn2 \r5\().4H, \r0\().4H, \r1\().4H
110 trn1 \r7\().4H, \r3\().4H, \r2\().4H
111 trn2 \r6\().4H, \r3\().4H, \r2\().4H
112 trn1 \r0\().2S, \r4\().2S, \r7\().2S
113 trn2 \r3\().2S, \r4\().2S, \r7\().2S
114 trn1 \r1\().2S, \r5\().2S, \r6\().2S
115 trn2 \r2\().2S, \r5\().2S, \r6\().2S
116.endm
117
118.macro transpose_8x8H r0, r1, r2, r3, r4, r5, r6, r7, r8, r9
119 trn1 \r8\().8H, \r0\().8H, \r1\().8H
120 trn2 \r9\().8H, \r0\().8H, \r1\().8H
121 trn1 \r1\().8H, \r2\().8H, \r3\().8H
122 trn2 \r3\().8H, \r2\().8H, \r3\().8H
123 trn1 \r0\().8H, \r4\().8H, \r5\().8H
124 trn2 \r5\().8H, \r4\().8H, \r5\().8H
125 trn1 \r2\().8H, \r6\().8H, \r7\().8H
126 trn2 \r7\().8H, \r6\().8H, \r7\().8H
127
128 trn1 \r4\().4S, \r0\().4S, \r2\().4S
129 trn2 \r2\().4S, \r0\().4S, \r2\().4S
130 trn1 \r6\().4S, \r5\().4S, \r7\().4S
131 trn2 \r7\().4S, \r5\().4S, \r7\().4S
132 trn1 \r5\().4S, \r9\().4S, \r3\().4S
133 trn2 \r9\().4S, \r9\().4S, \r3\().4S
134 trn1 \r3\().4S, \r8\().4S, \r1\().4S
135 trn2 \r8\().4S, \r8\().4S, \r1\().4S
136
137 trn1 \r0\().2D, \r3\().2D, \r4\().2D
138 trn2 \r4\().2D, \r3\().2D, \r4\().2D
139
140 trn1 \r1\().2D, \r5\().2D, \r6\().2D
141 trn2 \r5\().2D, \r5\().2D, \r6\().2D
142
143 trn2 \r6\().2D, \r8\().2D, \r2\().2D
144 trn1 \r2\().2D, \r8\().2D, \r2\().2D
145
146 trn1 \r3\().2D, \r9\().2D, \r7\().2D
147 trn2 \r7\().2D, \r9\().2D, \r7\().2D
148
149.endm