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            \r6\().4H,  \r2\().4H,  \r3\().4H
111         trn2            \r7\().4H,  \r2\().4H,  \r3\().4H
112 
113         trn1            \r0\().2S,  \r4\().2S,  \r6\().2S
114         trn2            \r2\().2S,  \r4\().2S,  \r6\().2S
115         trn1            \r1\().2S,  \r5\().2S,  \r7\().2S
116         trn2            \r3\().2S,  \r5\().2S,  \r7\().2S
117 .endm
118 
119 .macro transpose_4x8H r0, r1, r2, r3, t4, t5, t6, t7
120         trn1            \t4\().8H,  \r0\().8H,  \r1\().8H
121         trn2            \t5\().8H,  \r0\().8H,  \r1\().8H
122         trn1            \t6\().8H,  \r2\().8H,  \r3\().8H
123         trn2            \t7\().8H,  \r2\().8H,  \r3\().8H
124 
125         trn1            \r0\().4S,  \t4\().4S,  \t6\().4S
126         trn2            \r2\().4S,  \t4\().4S,  \t6\().4S
127         trn1            \r1\().4S,  \t5\().4S,  \t7\().4S
128         trn2            \r3\().4S,  \t5\().4S,  \t7\().4S
129 .endm
130 
131 .macro  transpose_8x8H  r0, r1, r2, r3, r4, r5, r6, r7, r8, r9
132         trn1            \r8\().8H,  \r0\().8H,  \r1\().8H
133         trn2            \r9\().8H,  \r0\().8H,  \r1\().8H
134         trn1            \r1\().8H,  \r2\().8H,  \r3\().8H
135         trn2            \r3\().8H,  \r2\().8H,  \r3\().8H
136         trn1            \r0\().8H,  \r4\().8H,  \r5\().8H
137         trn2            \r5\().8H,  \r4\().8H,  \r5\().8H
138         trn1            \r2\().8H,  \r6\().8H,  \r7\().8H
139         trn2            \r7\().8H,  \r6\().8H,  \r7\().8H
140 
141         trn1            \r4\().4S,  \r0\().4S,  \r2\().4S
142         trn2            \r2\().4S,  \r0\().4S,  \r2\().4S
143         trn1            \r6\().4S,  \r5\().4S,  \r7\().4S
144         trn2            \r7\().4S,  \r5\().4S,  \r7\().4S
145         trn1            \r5\().4S,  \r9\().4S,  \r3\().4S
146         trn2            \r9\().4S,  \r9\().4S,  \r3\().4S
147         trn1            \r3\().4S,  \r8\().4S,  \r1\().4S
148         trn2            \r8\().4S,  \r8\().4S,  \r1\().4S
149 
150         trn1            \r0\().2D,  \r3\().2D,  \r4\().2D
151         trn2            \r4\().2D,  \r3\().2D,  \r4\().2D
152 
153         trn1            \r1\().2D,  \r5\().2D,  \r6\().2D
154         trn2            \r5\().2D,  \r5\().2D,  \r6\().2D
155 
156         trn2            \r6\().2D,  \r8\().2D,  \r2\().2D
157         trn1            \r2\().2D,  \r8\().2D,  \r2\().2D
158 
159         trn1            \r3\().2D,  \r9\().2D,  \r7\().2D
160         trn2            \r7\().2D,  \r9\().2D,  \r7\().2D
161 
162 .endm
163