2 * This file is part of FFmpeg.
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.
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.
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
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
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
38 trn1 \r0\().2S, \r3\().2S, \r4\().2S
39 trn2 \r4\().2S, \r3\().2S, \r4\().2S
41 trn1 \r1\().2S, \r5\().2S, \r6\().2S
42 trn2 \r5\().2S, \r5\().2S, \r6\().2S
44 trn2 \r6\().2S, \r8\().2S, \r2\().2S
45 trn1 \r2\().2S, \r8\().2S, \r2\().2S
47 trn1 \r3\().2S, \r9\().2S, \r7\().2S
48 trn2 \r7\().2S, \r9\().2S, \r7\().2S
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
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
70 trn1 \r0\().4S, \r3\().4S, \r4\().4S
71 trn2 \r4\().4S, \r3\().4S, \r4\().4S
73 trn1 \r1\().4S, \r5\().4S, \r6\().4S
74 trn2 \r5\().4S, \r5\().4S, \r6\().4S
76 trn2 \r6\().4S, \t0\().4S, \r2\().4S
77 trn1 \r2\().4S, \t0\().4S, \r2\().4S
79 trn1 \r3\().4S, \t1\().4S, \r7\().4S
80 trn2 \r7\().4S, \t1\().4S, \r7\().4S
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
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
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
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
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 \r6\().4H, \r2\().4H, \r3\().4H
111 trn2 \r7\().4H, \r2\().4H, \r3\().4H
112 trn1 \r0\().2S, \r4\().2S, \r6\().2S
113 trn2 \r2\().2S, \r4\().2S, \r6\().2S
114 trn1 \r1\().2S, \r5\().2S, \r7\().2S
115 trn2 \r3\().2S, \r5\().2S, \r7\().2S
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
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
137 trn1 \r0\().2D, \r3\().2D, \r4\().2D
138 trn2 \r4\().2D, \r3\().2D, \r4\().2D
140 trn1 \r1\().2D, \r5\().2D, \r6\().2D
141 trn2 \r5\().2D, \r5\().2D, \r6\().2D
143 trn2 \r6\().2D, \r8\().2D, \r2\().2D
144 trn1 \r2\().2D, \r8\().2D, \r2\().2D
146 trn1 \r3\().2D, \r9\().2D, \r7\().2D
147 trn2 \r7\().2D, \r9\().2D, \r7\().2D