1// RUN: llvm-mc -triple=aarch64-none-linux-gnu -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]
416