neon-3vdiff.s revision 13c83a2a09a0842ff57ec020fe3f534de766ccd1
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
287// CHECK: pmull	v0.8h, v1.8b, v2.8b     // encoding: [0x20,0xe0,0x22,0x0e]
288
289        pmull2 v0.8h, v1.16b, v2.16b
290
291// CHECK: pmull2	v0.8h, v1.16b, v2.16b   // encoding: [0x20,0xe0,0x22,0x4e]
292
293//------------------------------------------------------------------------------
294// Widen
295//------------------------------------------------------------------------------
296
297        saddw v0.8h, v1.8h, v2.8b
298        saddw v0.4s, v1.4s, v2.4h
299        saddw v0.2d, v1.2d, v2.2s
300
301// CHECK: saddw	v0.8h, v1.8h, v2.8b     // encoding: [0x20,0x10,0x22,0x0e]
302// CHECK: saddw	v0.4s, v1.4s, v2.4h     // encoding: [0x20,0x10,0x62,0x0e]
303// CHECK: saddw	v0.2d, v1.2d, v2.2s     // encoding: [0x20,0x10,0xa2,0x0e]
304
305        saddw2 v0.8h, v1.8h, v2.16b
306        saddw2 v0.4s, v1.4s, v2.8h
307        saddw2 v0.2d, v1.2d, v2.4s
308
309// CHECK: saddw2	v0.8h, v1.8h, v2.16b    // encoding: [0x20,0x10,0x22,0x4e]
310// CHECK: saddw2	v0.4s, v1.4s, v2.8h     // encoding: [0x20,0x10,0x62,0x4e]
311// CHECK: saddw2	v0.2d, v1.2d, v2.4s     // encoding: [0x20,0x10,0xa2,0x4e]
312
313        uaddw v0.8h, v1.8h, v2.8b
314        uaddw v0.4s, v1.4s, v2.4h
315        uaddw v0.2d, v1.2d, v2.2s
316
317// CHECK: uaddw	v0.8h, v1.8h, v2.8b     // encoding: [0x20,0x10,0x22,0x2e]
318// CHECK: uaddw	v0.4s, v1.4s, v2.4h     // encoding: [0x20,0x10,0x62,0x2e]
319// CHECK: uaddw	v0.2d, v1.2d, v2.2s     // encoding: [0x20,0x10,0xa2,0x2e]
320
321        uaddw2 v0.8h, v1.8h, v2.16b
322        uaddw2 v0.4s, v1.4s, v2.8h
323        uaddw2 v0.2d, v1.2d, v2.4s
324
325// CHECK: uaddw2	v0.8h, v1.8h, v2.16b    // encoding: [0x20,0x10,0x22,0x6e]
326// CHECK: uaddw2	v0.4s, v1.4s, v2.8h     // encoding: [0x20,0x10,0x62,0x6e]
327// CHECK: uaddw2	v0.2d, v1.2d, v2.4s     // encoding: [0x20,0x10,0xa2,0x6e]
328
329        ssubw v0.8h, v1.8h, v2.8b
330        ssubw v0.4s, v1.4s, v2.4h
331        ssubw v0.2d, v1.2d, v2.2s
332
333// CHECK: ssubw	v0.8h, v1.8h, v2.8b     // encoding: [0x20,0x30,0x22,0x0e]
334// CHECK: ssubw	v0.4s, v1.4s, v2.4h     // encoding: [0x20,0x30,0x62,0x0e]
335// CHECK: ssubw	v0.2d, v1.2d, v2.2s     // encoding: [0x20,0x30,0xa2,0x0e]
336
337        ssubw2 v0.8h, v1.8h, v2.16b
338        ssubw2 v0.4s, v1.4s, v2.8h
339        ssubw2 v0.2d, v1.2d, v2.4s
340
341// CHECK: ssubw2	v0.8h, v1.8h, v2.16b    // encoding: [0x20,0x30,0x22,0x4e]
342// CHECK: ssubw2	v0.4s, v1.4s, v2.8h     // encoding: [0x20,0x30,0x62,0x4e]
343// CHECK: ssubw2	v0.2d, v1.2d, v2.4s     // encoding: [0x20,0x30,0xa2,0x4e]
344
345        usubw v0.8h, v1.8h, v2.8b
346        usubw v0.4s, v1.4s, v2.4h
347        usubw v0.2d, v1.2d, v2.2s
348
349// CHECK: usubw	v0.8h, v1.8h, v2.8b     // encoding: [0x20,0x30,0x22,0x2e]
350// CHECK: usubw	v0.4s, v1.4s, v2.4h     // encoding: [0x20,0x30,0x62,0x2e]
351// CHECK: usubw	v0.2d, v1.2d, v2.2s     // encoding: [0x20,0x30,0xa2,0x2e]
352
353        usubw2 v0.8h, v1.8h, v2.16b
354        usubw2 v0.4s, v1.4s, v2.8h
355        usubw2 v0.2d, v1.2d, v2.4s
356
357// CHECK: usubw2	v0.8h, v1.8h, v2.16b    // encoding: [0x20,0x30,0x22,0x6e]
358// CHECK: usubw2	v0.4s, v1.4s, v2.8h     // encoding: [0x20,0x30,0x62,0x6e]
359// CHECK: usubw2	v0.2d, v1.2d, v2.4s     // encoding: [0x20,0x30,0xa2,0x6e]
360
361//------------------------------------------------------------------------------
362// Narrow
363//------------------------------------------------------------------------------
364
365        addhn v0.8b, v1.8h, v2.8h
366        addhn v0.4h, v1.4s, v2.4s
367        addhn v0.2s, v1.2d, v2.2d
368
369// CHECK: addhn	v0.8b, v1.8h, v2.8h     // encoding: [0x20,0x40,0x22,0x0e]
370// CHECK: addhn	v0.4h, v1.4s, v2.4s     // encoding: [0x20,0x40,0x62,0x0e]
371// CHECK: addhn	v0.2s, v1.2d, v2.2d     // encoding: [0x20,0x40,0xa2,0x0e]
372
373        addhn2 v0.16b, v1.8h, v2.8h
374        addhn2 v0.8h, v1.4s, v2.4s
375        addhn2 v0.4s, v1.2d, v2.2d
376
377// CHECK: addhn2	v0.16b, v1.8h, v2.8h    // encoding: [0x20,0x40,0x22,0x4e]
378// CHECK: addhn2	v0.8h, v1.4s, v2.4s     // encoding: [0x20,0x40,0x62,0x4e]
379// CHECK: addhn2	v0.4s, v1.2d, v2.2d     // encoding: [0x20,0x40,0xa2,0x4e]
380
381        raddhn v0.8b, v1.8h, v2.8h
382        raddhn v0.4h, v1.4s, v2.4s
383        raddhn v0.2s, v1.2d, v2.2d
384
385// CHECK: raddhn	v0.8b, v1.8h, v2.8h     // encoding: [0x20,0x40,0x22,0x2e]
386// CHECK: raddhn	v0.4h, v1.4s, v2.4s     // encoding: [0x20,0x40,0x62,0x2e]
387// CHECK: raddhn	v0.2s, v1.2d, v2.2d     // encoding: [0x20,0x40,0xa2,0x2e]
388
389        raddhn2 v0.16b, v1.8h, v2.8h
390        raddhn2 v0.8h, v1.4s, v2.4s
391        raddhn2 v0.4s, v1.2d, v2.2d
392
393// CHECK: raddhn2	v0.16b, v1.8h, v2.8h    // encoding: [0x20,0x40,0x22,0x6e]
394// CHECK: raddhn2	v0.8h, v1.4s, v2.4s     // encoding: [0x20,0x40,0x62,0x6e]
395// CHECK: raddhn2	v0.4s, v1.2d, v2.2d     // encoding: [0x20,0x40,0xa2,0x6e]
396
397        rsubhn v0.8b, v1.8h, v2.8h
398        rsubhn v0.4h, v1.4s, v2.4s
399        rsubhn v0.2s, v1.2d, v2.2d
400
401// CHECK: rsubhn	v0.8b, v1.8h, v2.8h     // encoding: [0x20,0x60,0x22,0x2e]
402// CHECK: rsubhn	v0.4h, v1.4s, v2.4s     // encoding: [0x20,0x60,0x62,0x2e]
403// CHECK: rsubhn	v0.2s, v1.2d, v2.2d     // encoding: [0x20,0x60,0xa2,0x2e]
404
405        rsubhn2 v0.16b, v1.8h, v2.8h
406        rsubhn2 v0.8h, v1.4s, v2.4s
407        rsubhn2 v0.4s, v1.2d, v2.2d
408
409// CHECK: rsubhn2	v0.16b, v1.8h, v2.8h    // encoding: [0x20,0x60,0x22,0x6e]
410// CHECK: rsubhn2	v0.8h, v1.4s, v2.4s     // encoding: [0x20,0x60,0x62,0x6e]
411// CHECK: rsubhn2	v0.4s, v1.2d, v2.2d     // encoding: [0x20,0x60,0xa2,0x6e]
412