Update test to use llvm-readobj. NFC.
[oota-llvm.git] / test / MC / AArch64 / neon-3vdiff.s
1 // RUN: llvm-mc -triple=aarch64-none-linux-gnu -mattr=+crypto -mattr=+neon -show-encoding < %s | FileCheck %s
2
3 // Check that the assembler can handle the documented syntax for AArch64
4
5 //------------------------------------------------------------------------------
6 // Instructions with 3 different vector data types
7 //------------------------------------------------------------------------------
8
9 //------------------------------------------------------------------------------
10 // Long
11 //------------------------------------------------------------------------------
12
13 //------------------------------------------------------------------------------
14 // Long - Variant 1
15 //------------------------------------------------------------------------------
16
17         saddl v0.8h, v1.8b, v2.8b
18         saddl v0.4s, v1.4h, v2.4h
19         saddl v0.2d, v1.2s, v2.2s
20
21 // CHECK: saddl v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x00,0x22,0x0e]
22 // CHECK: saddl v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x00,0x62,0x0e]
23 // CHECK: saddl v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x00,0xa2,0x0e]
24
25         saddl2 v0.4s, v1.8h, v2.8h
26         saddl2 v0.8h, v1.16b, v2.16b
27         saddl2 v0.2d, v1.4s, v2.4s
28
29 // CHECK: saddl2        v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x00,0x62,0x4e]
30 // CHECK: saddl2        v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x00,0x22,0x4e]
31 // CHECK: saddl2        v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x00,0xa2,0x4e]
32
33         uaddl v0.8h, v1.8b, v2.8b
34         uaddl v0.4s, v1.4h, v2.4h
35         uaddl v0.2d, v1.2s, v2.2s
36
37 // CHECK: uaddl v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x00,0x22,0x2e]
38 // CHECK: uaddl v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x00,0x62,0x2e]
39 // CHECK: uaddl v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x00,0xa2,0x2e]
40
41         uaddl2 v0.8h, v1.16b, v2.16b
42         uaddl2 v0.4s, v1.8h, v2.8h
43         uaddl2 v0.2d, v1.4s, v2.4s
44
45 // CHECK: uaddl2        v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x00,0x22,0x6e]
46 // CHECK: uaddl2        v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x00,0x62,0x6e]
47 // CHECK: uaddl2        v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x00,0xa2,0x6e]
48
49         ssubl v0.8h, v1.8b, v2.8b
50         ssubl v0.4s, v1.4h, v2.4h
51         ssubl v0.2d, v1.2s, v2.2s
52
53 // CHECK: ssubl v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x20,0x22,0x0e]
54 // CHECK: ssubl v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x20,0x62,0x0e]
55 // CHECK: ssubl v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x20,0xa2,0x0e]
56
57         ssubl2 v0.8h, v1.16b, v2.16b
58         ssubl2 v0.4s, v1.8h, v2.8h
59         ssubl2 v0.2d, v1.4s, v2.4s
60
61 // CHECK: ssubl2        v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x20,0x22,0x4e]
62 // CHECK: ssubl2        v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x20,0x62,0x4e]
63 // CHECK: ssubl2        v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x20,0xa2,0x4e]
64
65         usubl v0.8h, v1.8b, v2.8b
66         usubl v0.4s, v1.4h, v2.4h
67         usubl v0.2d, v1.2s, v2.2s
68
69 // CHECK: usubl v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x20,0x22,0x2e]
70 // CHECK: usubl v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x20,0x62,0x2e]
71 // CHECK: usubl v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x20,0xa2,0x2e]
72
73         usubl2 v0.8h, v1.16b, v2.16b
74         usubl2 v0.4s, v1.8h, v2.8h
75         usubl2 v0.2d, v1.4s, v2.4s
76
77 // CHECK: usubl2        v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x20,0x22,0x6e]
78 // CHECK: usubl2        v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x20,0x62,0x6e]
79 // CHECK: usubl2        v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x20,0xa2,0x6e]
80
81         sabal v0.8h, v1.8b, v2.8b
82         sabal v0.4s, v1.4h, v2.4h
83         sabal v0.2d, v1.2s, v2.2s
84
85 // CHECK: sabal v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x50,0x22,0x0e]
86 // CHECK: sabal v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x50,0x62,0x0e]
87 // CHECK: sabal v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x50,0xa2,0x0e]
88
89         sabal2 v0.8h, v1.16b, v2.16b
90         sabal2 v0.4s, v1.8h, v2.8h
91         sabal2 v0.2d, v1.4s, v2.4s
92
93 // CHECK: sabal2        v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x50,0x22,0x4e]
94 // CHECK: sabal2        v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x50,0x62,0x4e]
95 // CHECK: sabal2        v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x50,0xa2,0x4e]
96
97         uabal v0.8h, v1.8b, v2.8b
98         uabal v0.4s, v1.4h, v2.4h
99         uabal v0.2d, v1.2s, v2.2s
100
101 // CHECK: uabal v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x50,0x22,0x2e]
102 // CHECK: uabal v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x50,0x62,0x2e]
103 // CHECK: uabal v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x50,0xa2,0x2e]
104
105         uabal2 v0.8h, v1.16b, v2.16b
106         uabal2 v0.4s, v1.8h, v2.8h
107         uabal2 v0.2d, v1.4s, v2.4s
108
109 // CHECK: uabal2        v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x50,0x22,0x6e]
110 // CHECK: uabal2        v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x50,0x62,0x6e]
111 // CHECK: uabal2        v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x50,0xa2,0x6e]
112
113         sabdl v0.8h, v1.8b, v2.8b
114         sabdl v0.4s, v1.4h, v2.4h
115         sabdl v0.2d, v1.2s, v2.2s
116
117 // CHECK: sabdl v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x70,0x22,0x0e]
118 // CHECK: sabdl v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x70,0x62,0x0e]
119 // CHECK: sabdl v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x70,0xa2,0x0e]
120
121         sabdl2 v0.8h, v1.16b, v2.16b
122         sabdl2 v0.4s, v1.8h, v2.8h
123         sabdl2 v0.2d, v1.4s, v2.4s
124
125 // CHECK: sabdl2        v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x70,0x22,0x4e]
126 // CHECK: sabdl2        v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x70,0x62,0x4e]
127 // CHECK: sabdl2        v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x70,0xa2,0x4e]
128
129         uabdl v0.8h, v1.8b, v2.8b
130         uabdl v0.4s, v1.4h, v2.4h
131         uabdl v0.2d, v1.2s, v2.2s
132
133 // CHECK: uabdl v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x70,0x22,0x2e]
134 // CHECK: uabdl v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x70,0x62,0x2e]
135 // CHECK: uabdl v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x70,0xa2,0x2e]
136
137         uabdl2 v0.8h, v1.16b, v2.16b
138         uabdl2 v0.4s, v1.8h, v2.8h
139         uabdl2 v0.2d, v1.4s, v2.4s
140
141 // CHECK: uabdl2        v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x70,0x22,0x6e]
142 // CHECK: uabdl2        v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x70,0x62,0x6e]
143 // CHECK: uabdl2        v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x70,0xa2,0x6e]
144
145         smlal v0.8h, v1.8b, v2.8b
146         smlal v0.4s, v1.4h, v2.4h
147         smlal v0.2d, v1.2s, v2.2s
148
149 // CHECK: smlal v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x80,0x22,0x0e]
150 // CHECK: smlal v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x80,0x62,0x0e]
151 // CHECK: smlal v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x80,0xa2,0x0e]
152
153         smlal2 v0.8h, v1.16b, v2.16b
154         smlal2 v0.4s, v1.8h, v2.8h
155         smlal2 v0.2d, v1.4s, v2.4s
156
157 // CHECK: smlal2        v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x80,0x22,0x4e]
158 // CHECK: smlal2        v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x80,0x62,0x4e]
159 // CHECK: smlal2        v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x80,0xa2,0x4e]
160
161         umlal v0.8h, v1.8b, v2.8b
162         umlal v0.4s, v1.4h, v2.4h
163         umlal v0.2d, v1.2s, v2.2s
164
165 // CHECK: umlal v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x80,0x22,0x2e]
166 // CHECK: umlal v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x80,0x62,0x2e]
167 // CHECK: umlal v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x80,0xa2,0x2e]
168
169         umlal2 v0.8h, v1.16b, v2.16b
170         umlal2 v0.4s, v1.8h, v2.8h
171         umlal2 v0.2d, v1.4s, v2.4s
172
173 // CHECK: umlal2        v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x80,0x22,0x6e]
174 // CHECK: umlal2        v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x80,0x62,0x6e]
175 // CHECK: umlal2        v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x80,0xa2,0x6e]
176
177         smlsl v0.8h, v1.8b, v2.8b
178         smlsl v0.4s, v1.4h, v2.4h
179         smlsl v0.2d, v1.2s, v2.2s
180
181 // CHECK: smlsl v0.8h, v1.8b, v2.8b     // encoding: [0x20,0xa0,0x22,0x0e]
182 // CHECK: smlsl v0.4s, v1.4h, v2.4h     // encoding: [0x20,0xa0,0x62,0x0e]
183 // CHECK: smlsl v0.2d, v1.2s, v2.2s     // encoding: [0x20,0xa0,0xa2,0x0e]
184
185         smlsl2 v0.8h, v1.16b, v2.16b
186         smlsl2 v0.4s, v1.8h, v2.8h
187         smlsl2 v0.2d, v1.4s, v2.4s
188
189 // CHECK: smlsl2        v0.8h, v1.16b, v2.16b   // encoding: [0x20,0xa0,0x22,0x4e]
190 // CHECK: smlsl2        v0.4s, v1.8h, v2.8h     // encoding: [0x20,0xa0,0x62,0x4e]
191 // CHECK: smlsl2        v0.2d, v1.4s, v2.4s     // encoding: [0x20,0xa0,0xa2,0x4e]
192
193         umlsl v0.8h, v1.8b, v2.8b
194         umlsl v0.4s, v1.4h, v2.4h
195         umlsl v0.2d, v1.2s, v2.2s
196
197 // CHECK: umlsl v0.8h, v1.8b, v2.8b     // encoding: [0x20,0xa0,0x22,0x2e]
198 // CHECK: umlsl v0.4s, v1.4h, v2.4h     // encoding: [0x20,0xa0,0x62,0x2e]
199 // CHECK: umlsl v0.2d, v1.2s, v2.2s     // encoding: [0x20,0xa0,0xa2,0x2e]
200
201         umlsl2 v0.8h, v1.16b, v2.16b
202         umlsl2 v0.4s, v1.8h, v2.8h
203         umlsl2 v0.2d, v1.4s, v2.4s
204
205 // CHECK: umlsl2        v0.8h, v1.16b, v2.16b   // encoding: [0x20,0xa0,0x22,0x6e]
206 // CHECK: umlsl2        v0.4s, v1.8h, v2.8h     // encoding: [0x20,0xa0,0x62,0x6e]
207 // CHECK: umlsl2        v0.2d, v1.4s, v2.4s     // encoding: [0x20,0xa0,0xa2,0x6e]
208
209         smull v0.8h, v1.8b, v2.8b
210         smull v0.4s, v1.4h, v2.4h
211         smull v0.2d, v1.2s, v2.2s
212
213 // CHECK: smull v0.8h, v1.8b, v2.8b     // encoding: [0x20,0xc0,0x22,0x0e]
214 // CHECK: smull v0.4s, v1.4h, v2.4h     // encoding: [0x20,0xc0,0x62,0x0e]
215 // CHECK: smull v0.2d, v1.2s, v2.2s     // encoding: [0x20,0xc0,0xa2,0x0e]
216
217         smull2 v0.8h, v1.16b, v2.16b
218         smull2 v0.4s, v1.8h, v2.8h
219         smull2 v0.2d, v1.4s, v2.4s
220
221 // CHECK: smull2        v0.8h, v1.16b, v2.16b   // encoding: [0x20,0xc0,0x22,0x4e]
222 // CHECK: smull2        v0.4s, v1.8h, v2.8h     // encoding: [0x20,0xc0,0x62,0x4e]
223 // CHECK: smull2        v0.2d, v1.4s, v2.4s     // encoding: [0x20,0xc0,0xa2,0x4e]
224
225         umull v0.8h, v1.8b, v2.8b
226         umull v0.4s, v1.4h, v2.4h
227         umull v0.2d, v1.2s, v2.2s
228
229 // CHECK: umull v0.8h, v1.8b, v2.8b     // encoding: [0x20,0xc0,0x22,0x2e]
230 // CHECK: umull v0.4s, v1.4h, v2.4h     // encoding: [0x20,0xc0,0x62,0x2e]
231 // CHECK: umull v0.2d, v1.2s, v2.2s     // encoding: [0x20,0xc0,0xa2,0x2e]
232
233         umull2 v0.8h, v1.16b, v2.16b
234         umull2 v0.4s, v1.8h, v2.8h
235         umull2 v0.2d, v1.4s, v2.4s
236
237 // CHECK: umull2        v0.8h, v1.16b, v2.16b   // encoding: [0x20,0xc0,0x22,0x6e]
238 // CHECK: umull2        v0.4s, v1.8h, v2.8h     // encoding: [0x20,0xc0,0x62,0x6e]
239 // CHECK: umull2        v0.2d, v1.4s, v2.4s     // encoding: [0x20,0xc0,0xa2,0x6e]
240
241 //------------------------------------------------------------------------------
242 // Long - Variant 2
243 //------------------------------------------------------------------------------
244
245         sqdmlal v0.4s, v1.4h, v2.4h
246         sqdmlal v0.2d, v1.2s, v2.2s
247
248 // CHECK: sqdmlal       v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x90,0x62,0x0e]
249 // CHECK: sqdmlal       v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x90,0xa2,0x0e]
250
251         sqdmlal2 v0.4s, v1.8h, v2.8h
252         sqdmlal2 v0.2d, v1.4s, v2.4s
253
254 // CHECK: sqdmlal2      v0.4s, v1.8h, v2.8h // encoding: [0x20,0x90,0x62,0x4e]
255 // CHECK: sqdmlal2      v0.2d, v1.4s, v2.4s // encoding: [0x20,0x90,0xa2,0x4e]
256
257         sqdmlsl v0.4s, v1.4h, v2.4h
258         sqdmlsl v0.2d, v1.2s, v2.2s
259
260 // CHECK: sqdmlsl       v0.4s, v1.4h, v2.4h     // encoding: [0x20,0xb0,0x62,0x0e]
261 // CHECK: sqdmlsl       v0.2d, v1.2s, v2.2s     // encoding: [0x20,0xb0,0xa2,0x0e]
262
263         sqdmlsl2 v0.4s, v1.8h, v2.8h
264         sqdmlsl2 v0.2d, v1.4s, v2.4s
265
266 // CHECK: sqdmlsl2      v0.4s, v1.8h, v2.8h // encoding: [0x20,0xb0,0x62,0x4e]
267 // CHECK: sqdmlsl2      v0.2d, v1.4s, v2.4s // encoding: [0x20,0xb0,0xa2,0x4e]
268
269         sqdmull v0.4s, v1.4h, v2.4h
270         sqdmull v0.2d, v1.2s, v2.2s
271
272 // CHECK: sqdmull       v0.4s, v1.4h, v2.4h     // encoding: [0x20,0xd0,0x62,0x0e]
273 // CHECK: sqdmull       v0.2d, v1.2s, v2.2s     // encoding: [0x20,0xd0,0xa2,0x0e]
274
275         sqdmull2 v0.4s, v1.8h, v2.8h
276         sqdmull2 v0.2d, v1.4s, v2.4s
277
278 // CHECK: sqdmull2      v0.4s, v1.8h, v2.8h // encoding: [0x20,0xd0,0x62,0x4e]
279 // CHECK: sqdmull2      v0.2d, v1.4s, v2.4s // encoding: [0x20,0xd0,0xa2,0x4e]
280
281 //------------------------------------------------------------------------------
282 // Long - Variant 3
283 //------------------------------------------------------------------------------
284
285         pmull v0.8h, v1.8b, v2.8b
286         pmull v0.1q, v1.1d, v2.1d
287
288 // CHECK: pmull v0.8h, v1.8b, v2.8b     // encoding: [0x20,0xe0,0x22,0x0e]
289 // CHECK: pmull v0.1q, v1.1d, v2.1d     // encoding: [0x20,0xe0,0xe2,0x0e]
290
291         pmull2 v0.8h, v1.16b, v2.16b
292         pmull2 v0.1q, v1.2d, v2.2d
293
294 // CHECK: pmull2        v0.8h, v1.16b, v2.16b   // encoding: [0x20,0xe0,0x22,0x4e]
295 // CHECK: pmull2        v0.1q, v1.2d, v2.2d     // encoding: [0x20,0xe0,0xe2,0x4e]
296
297 //------------------------------------------------------------------------------
298 // Widen
299 //------------------------------------------------------------------------------
300
301         saddw v0.8h, v1.8h, v2.8b
302         saddw v0.4s, v1.4s, v2.4h
303         saddw v0.2d, v1.2d, v2.2s
304
305 // CHECK: saddw v0.8h, v1.8h, v2.8b     // encoding: [0x20,0x10,0x22,0x0e]
306 // CHECK: saddw v0.4s, v1.4s, v2.4h     // encoding: [0x20,0x10,0x62,0x0e]
307 // CHECK: saddw v0.2d, v1.2d, v2.2s     // encoding: [0x20,0x10,0xa2,0x0e]
308
309         saddw2 v0.8h, v1.8h, v2.16b
310         saddw2 v0.4s, v1.4s, v2.8h
311         saddw2 v0.2d, v1.2d, v2.4s
312
313 // CHECK: saddw2        v0.8h, v1.8h, v2.16b    // encoding: [0x20,0x10,0x22,0x4e]
314 // CHECK: saddw2        v0.4s, v1.4s, v2.8h     // encoding: [0x20,0x10,0x62,0x4e]
315 // CHECK: saddw2        v0.2d, v1.2d, v2.4s     // encoding: [0x20,0x10,0xa2,0x4e]
316
317         uaddw v0.8h, v1.8h, v2.8b
318         uaddw v0.4s, v1.4s, v2.4h
319         uaddw v0.2d, v1.2d, v2.2s
320
321 // CHECK: uaddw v0.8h, v1.8h, v2.8b     // encoding: [0x20,0x10,0x22,0x2e]
322 // CHECK: uaddw v0.4s, v1.4s, v2.4h     // encoding: [0x20,0x10,0x62,0x2e]
323 // CHECK: uaddw v0.2d, v1.2d, v2.2s     // encoding: [0x20,0x10,0xa2,0x2e]
324
325         uaddw2 v0.8h, v1.8h, v2.16b
326         uaddw2 v0.4s, v1.4s, v2.8h
327         uaddw2 v0.2d, v1.2d, v2.4s
328
329 // CHECK: uaddw2        v0.8h, v1.8h, v2.16b    // encoding: [0x20,0x10,0x22,0x6e]
330 // CHECK: uaddw2        v0.4s, v1.4s, v2.8h     // encoding: [0x20,0x10,0x62,0x6e]
331 // CHECK: uaddw2        v0.2d, v1.2d, v2.4s     // encoding: [0x20,0x10,0xa2,0x6e]
332
333         ssubw v0.8h, v1.8h, v2.8b
334         ssubw v0.4s, v1.4s, v2.4h
335         ssubw v0.2d, v1.2d, v2.2s
336
337 // CHECK: ssubw v0.8h, v1.8h, v2.8b     // encoding: [0x20,0x30,0x22,0x0e]
338 // CHECK: ssubw v0.4s, v1.4s, v2.4h     // encoding: [0x20,0x30,0x62,0x0e]
339 // CHECK: ssubw v0.2d, v1.2d, v2.2s     // encoding: [0x20,0x30,0xa2,0x0e]
340
341         ssubw2 v0.8h, v1.8h, v2.16b
342         ssubw2 v0.4s, v1.4s, v2.8h
343         ssubw2 v0.2d, v1.2d, v2.4s
344
345 // CHECK: ssubw2        v0.8h, v1.8h, v2.16b    // encoding: [0x20,0x30,0x22,0x4e]
346 // CHECK: ssubw2        v0.4s, v1.4s, v2.8h     // encoding: [0x20,0x30,0x62,0x4e]
347 // CHECK: ssubw2        v0.2d, v1.2d, v2.4s     // encoding: [0x20,0x30,0xa2,0x4e]
348
349         usubw v0.8h, v1.8h, v2.8b
350         usubw v0.4s, v1.4s, v2.4h
351         usubw v0.2d, v1.2d, v2.2s
352
353 // CHECK: usubw v0.8h, v1.8h, v2.8b     // encoding: [0x20,0x30,0x22,0x2e]
354 // CHECK: usubw v0.4s, v1.4s, v2.4h     // encoding: [0x20,0x30,0x62,0x2e]
355 // CHECK: usubw v0.2d, v1.2d, v2.2s     // encoding: [0x20,0x30,0xa2,0x2e]
356
357         usubw2 v0.8h, v1.8h, v2.16b
358         usubw2 v0.4s, v1.4s, v2.8h
359         usubw2 v0.2d, v1.2d, v2.4s
360
361 // CHECK: usubw2        v0.8h, v1.8h, v2.16b    // encoding: [0x20,0x30,0x22,0x6e]
362 // CHECK: usubw2        v0.4s, v1.4s, v2.8h     // encoding: [0x20,0x30,0x62,0x6e]
363 // CHECK: usubw2        v0.2d, v1.2d, v2.4s     // encoding: [0x20,0x30,0xa2,0x6e]
364
365 //------------------------------------------------------------------------------
366 // Narrow
367 //------------------------------------------------------------------------------
368
369         addhn v0.8b, v1.8h, v2.8h
370         addhn v0.4h, v1.4s, v2.4s
371         addhn v0.2s, v1.2d, v2.2d
372
373 // CHECK: addhn v0.8b, v1.8h, v2.8h     // encoding: [0x20,0x40,0x22,0x0e]
374 // CHECK: addhn v0.4h, v1.4s, v2.4s     // encoding: [0x20,0x40,0x62,0x0e]
375 // CHECK: addhn v0.2s, v1.2d, v2.2d     // encoding: [0x20,0x40,0xa2,0x0e]
376
377         addhn2 v0.16b, v1.8h, v2.8h
378         addhn2 v0.8h, v1.4s, v2.4s
379         addhn2 v0.4s, v1.2d, v2.2d
380
381 // CHECK: addhn2        v0.16b, v1.8h, v2.8h    // encoding: [0x20,0x40,0x22,0x4e]
382 // CHECK: addhn2        v0.8h, v1.4s, v2.4s     // encoding: [0x20,0x40,0x62,0x4e]
383 // CHECK: addhn2        v0.4s, v1.2d, v2.2d     // encoding: [0x20,0x40,0xa2,0x4e]
384
385         raddhn v0.8b, v1.8h, v2.8h
386         raddhn v0.4h, v1.4s, v2.4s
387         raddhn v0.2s, v1.2d, v2.2d
388
389 // CHECK: raddhn        v0.8b, v1.8h, v2.8h     // encoding: [0x20,0x40,0x22,0x2e]
390 // CHECK: raddhn        v0.4h, v1.4s, v2.4s     // encoding: [0x20,0x40,0x62,0x2e]
391 // CHECK: raddhn        v0.2s, v1.2d, v2.2d     // encoding: [0x20,0x40,0xa2,0x2e]
392
393         raddhn2 v0.16b, v1.8h, v2.8h
394         raddhn2 v0.8h, v1.4s, v2.4s
395         raddhn2 v0.4s, v1.2d, v2.2d
396
397 // CHECK: raddhn2       v0.16b, v1.8h, v2.8h    // encoding: [0x20,0x40,0x22,0x6e]
398 // CHECK: raddhn2       v0.8h, v1.4s, v2.4s     // encoding: [0x20,0x40,0x62,0x6e]
399 // CHECK: raddhn2       v0.4s, v1.2d, v2.2d     // encoding: [0x20,0x40,0xa2,0x6e]
400
401         rsubhn v0.8b, v1.8h, v2.8h
402         rsubhn v0.4h, v1.4s, v2.4s
403         rsubhn v0.2s, v1.2d, v2.2d
404
405 // CHECK: rsubhn        v0.8b, v1.8h, v2.8h     // encoding: [0x20,0x60,0x22,0x2e]
406 // CHECK: rsubhn        v0.4h, v1.4s, v2.4s     // encoding: [0x20,0x60,0x62,0x2e]
407 // CHECK: rsubhn        v0.2s, v1.2d, v2.2d     // encoding: [0x20,0x60,0xa2,0x2e]
408
409         rsubhn2 v0.16b, v1.8h, v2.8h
410         rsubhn2 v0.8h, v1.4s, v2.4s
411         rsubhn2 v0.4s, v1.2d, v2.2d
412
413 // CHECK: rsubhn2       v0.16b, v1.8h, v2.8h    // encoding: [0x20,0x60,0x22,0x6e]
414 // CHECK: rsubhn2       v0.8h, v1.4s, v2.4s     // encoding: [0x20,0x60,0x62,0x6e]
415 // CHECK: rsubhn2       v0.4s, v1.2d, v2.2d     // encoding: [0x20,0x60,0xa2,0x6e]