Replace coff-/elf-dump with llvm-readobj
[oota-llvm.git] / test / MC / ARM / neon-add-encoding.s
1 @ RUN: llvm-mc -mcpu=cortex-a8 -triple armv7-apple-darwin -show-encoding < %s | FileCheck %s
2
3
4 @ CHECK: vadd.i8        d16, d17, d16           @ encoding: [0xa0,0x08,0x41,0xf2]
5         vadd.i8 d16, d17, d16
6 @ CHECK: vadd.i16       d16, d17, d16   @ encoding: [0xa0,0x08,0x51,0xf2]
7         vadd.i16        d16, d17, d16
8 @ CHECK: vadd.i64       d16, d17, d16   @ encoding: [0xa0,0x08,0x71,0xf2]
9         vadd.i64        d16, d17, d16
10 @ CHECK: vadd.i32       d16, d17, d16   @ encoding: [0xa0,0x08,0x61,0xf2]
11         vadd.i32        d16, d17, d16
12 @ CHECK: vadd.f32       d16, d16, d17   @ encoding: [0xa1,0x0d,0x40,0xf2]
13         vadd.f32        d16, d16, d17
14 @ CHECK: vadd.f32       q8, q8, q9      @ encoding: [0xe2,0x0d,0x40,0xf2]
15         vadd.f32        q8, q8, q9
16
17 @ CHECK: vaddl.s8       q8, d17, d16    @ encoding: [0xa0,0x00,0xc1,0xf2]
18         vaddl.s8        q8, d17, d16
19 @ CHECK: vaddl.s16      q8, d17, d16    @ encoding: [0xa0,0x00,0xd1,0xf2]
20         vaddl.s16       q8, d17, d16
21 @ CHECK: vaddl.s32      q8, d17, d16    @ encoding: [0xa0,0x00,0xe1,0xf2]
22         vaddl.s32       q8, d17, d16
23 @ CHECK: vaddl.u8       q8, d17, d16    @ encoding: [0xa0,0x00,0xc1,0xf3]
24         vaddl.u8        q8, d17, d16
25 @ CHECK: vaddl.u16      q8, d17, d16    @ encoding: [0xa0,0x00,0xd1,0xf3]
26         vaddl.u16       q8, d17, d16
27 @ CHECK: vaddl.u32      q8, d17, d16    @ encoding: [0xa0,0x00,0xe1,0xf3]
28         vaddl.u32       q8, d17, d16
29
30 @ CHECK: vaddw.s8       q8, q8, d18     @ encoding: [0xa2,0x01,0xc0,0xf2]
31         vaddw.s8        q8, q8, d18
32 @ CHECK: vaddw.s16      q8, q8, d18     @ encoding: [0xa2,0x01,0xd0,0xf2]
33         vaddw.s16       q8, q8, d18
34 @ CHECK: vaddw.s32      q8, q8, d18     @ encoding: [0xa2,0x01,0xe0,0xf2]
35         vaddw.s32       q8, q8, d18
36 @ CHECK: vaddw.u8       q8, q8, d18     @ encoding: [0xa2,0x01,0xc0,0xf3]
37         vaddw.u8        q8, q8, d18
38 @ CHECK: vaddw.u16      q8, q8, d18     @ encoding: [0xa2,0x01,0xd0,0xf3]
39         vaddw.u16       q8, q8, d18
40 @ CHECK: vaddw.u32      q8, q8, d18     @ encoding: [0xa2,0x01,0xe0,0xf3]
41         vaddw.u32       q8, q8, d18
42
43 @ CHECK: vhadd.s8       d16, d16, d17   @ encoding: [0xa1,0x00,0x40,0xf2]
44         vhadd.s8        d16, d16, d17
45 @ CHECK: vhadd.s16      d16, d16, d17   @ encoding: [0xa1,0x00,0x50,0xf2]
46         vhadd.s16       d16, d16, d17
47 @ CHECK: vhadd.s32      d16, d16, d17   @ encoding: [0xa1,0x00,0x60,0xf2]
48         vhadd.s32       d16, d16, d17
49 @ CHECK: vhadd.u8       d16, d16, d17   @ encoding: [0xa1,0x00,0x40,0xf3]
50         vhadd.u8        d16, d16, d17
51 @ CHECK: vhadd.u16      d16, d16, d17   @ encoding: [0xa1,0x00,0x50,0xf3]
52         vhadd.u16       d16, d16, d17
53 @ CHECK: vhadd.u32      d16, d16, d17   @ encoding: [0xa1,0x00,0x60,0xf3]
54         vhadd.u32       d16, d16, d17
55 @ CHECK: vhadd.s8       q8, q8, q9      @ encoding: [0xe2,0x00,0x40,0xf2]
56         vhadd.s8        q8, q8, q9
57 @ CHECK: vhadd.s16      q8, q8, q9      @ encoding: [0xe2,0x00,0x50,0xf2]
58         vhadd.s16       q8, q8, q9
59 @ CHECK: vhadd.s32      q8, q8, q9      @ encoding: [0xe2,0x00,0x60,0xf2]
60         vhadd.s32       q8, q8, q9
61   @ CHECK: vhadd.u8     q8, q8, q9      @ encoding: [0xe2,0x00,0x40,0xf3]
62         vhadd.u8        q8, q8, q9
63 @ CHECK: vhadd.u16      q8, q8, q9      @ encoding: [0xe2,0x00,0x50,0xf3]
64         vhadd.u16       q8, q8, q9
65 @ CHECK: vhadd.u32      q8, q8, q9      @ encoding: [0xe2,0x00,0x60,0xf3]
66         vhadd.u32       q8, q8, q9
67
68
69         vhadd.s8        d11, d24
70         vhadd.s16       d12, d23
71         vhadd.s32       d13, d22
72         vhadd.u8        d14, d21
73         vhadd.u16       d15, d20
74         vhadd.u32       d16, d19
75         vhadd.s8        q1, q12
76         vhadd.s16       q2, q11
77         vhadd.s32       q3, q10
78         vhadd.u8        q4, q9
79         vhadd.u16       q5, q8
80         vhadd.u32       q6, q7
81
82 @ CHECK: vhadd.s8       d11, d11, d24   @ encoding: [0x28,0xb0,0x0b,0xf2]
83 @ CHECK: vhadd.s16      d12, d12, d23   @ encoding: [0x27,0xc0,0x1c,0xf2]
84 @ CHECK: vhadd.s32      d13, d13, d22   @ encoding: [0x26,0xd0,0x2d,0xf2]
85 @ CHECK: vhadd.u8       d14, d14, d21   @ encoding: [0x25,0xe0,0x0e,0xf3]
86 @ CHECK: vhadd.u16      d15, d15, d20   @ encoding: [0x24,0xf0,0x1f,0xf3]
87 @ CHECK: vhadd.u32      d16, d16, d19   @ encoding: [0xa3,0x00,0x60,0xf3]
88 @ CHECK: vhadd.s8       q1, q1, q12     @ encoding: [0x68,0x20,0x02,0xf2]
89 @ CHECK: vhadd.s16      q2, q2, q11     @ encoding: [0x66,0x40,0x14,0xf2]
90 @ CHECK: vhadd.s32      q3, q3, q10     @ encoding: [0x64,0x60,0x26,0xf2]
91 @ CHECK: vhadd.u8       q4, q4, q9      @ encoding: [0x62,0x80,0x08,0xf3]
92 @ CHECK: vhadd.u16      q5, q5, q8      @ encoding: [0x60,0xa0,0x1a,0xf3]
93 @ CHECK: vhadd.u32      q6, q6, q7      @ encoding: [0x4e,0xc0,0x2c,0xf3]
94
95         vrhadd.s8       d16, d16, d17
96         vrhadd.s16      d16, d16, d17
97         vrhadd.s32      d16, d16, d17
98         vrhadd.u8       d16, d16, d17
99         vrhadd.u16      d16, d16, d17
100         vrhadd.u32      d16, d16, d17
101         vrhadd.s8       q8, q8, q9
102         vrhadd.s16      q8, q8, q9
103         vrhadd.s32      q8, q8, q9
104         vrhadd.u8       q8, q8, q9
105         vrhadd.u16      q8, q8, q9
106         vrhadd.u32      q8, q8, q9
107         @ Two-operand forms.
108         vrhadd.s8       d16, d17
109         vrhadd.s16      d16, d17
110         vrhadd.s32      d16, d17
111         vrhadd.u8       d16, d17
112         vrhadd.u16      d16, d17
113         vrhadd.u32      d16, d17
114         vrhadd.s8       q8, q9
115         vrhadd.s16      q8, q9
116         vrhadd.s32      q8, q9
117         vrhadd.u8       q8, q9
118         vrhadd.u16      q8, q9
119         vrhadd.u32      q8, q9
120
121 @ CHECK: vrhadd.s8      d16, d16, d17   @ encoding: [0xa1,0x01,0x40,0xf2]
122 @ CHECK: vrhadd.s16     d16, d16, d17   @ encoding: [0xa1,0x01,0x50,0xf2]
123 @ CHECK: vrhadd.s32     d16, d16, d17   @ encoding: [0xa1,0x01,0x60,0xf2]
124 @ CHECK: vrhadd.u8      d16, d16, d17   @ encoding: [0xa1,0x01,0x40,0xf3]
125 @ CHECK: vrhadd.u16     d16, d16, d17   @ encoding: [0xa1,0x01,0x50,0xf3]
126 @ CHECK: vrhadd.u32     d16, d16, d17   @ encoding: [0xa1,0x01,0x60,0xf3]
127 @ CHECK: vrhadd.s8      q8, q8, q9      @ encoding: [0xe2,0x01,0x40,0xf2]
128 @ CHECK: vrhadd.s16     q8, q8, q9      @ encoding: [0xe2,0x01,0x50,0xf2]
129 @ CHECK: vrhadd.s32     q8, q8, q9      @ encoding: [0xe2,0x01,0x60,0xf2]
130 @ CHECK: vrhadd.u8      q8, q8, q9      @ encoding: [0xe2,0x01,0x40,0xf3]
131 @ CHECK: vrhadd.u16     q8, q8, q9      @ encoding: [0xe2,0x01,0x50,0xf3]
132 @ CHECK: vrhadd.u32     q8, q8, q9      @ encoding: [0xe2,0x01,0x60,0xf3]
133
134 @ CHECK: vrhadd.s8      d16, d16, d17   @ encoding: [0xa1,0x01,0x40,0xf2]
135 @ CHECK: vrhadd.s16     d16, d16, d17   @ encoding: [0xa1,0x01,0x50,0xf2]
136 @ CHECK: vrhadd.s32     d16, d16, d17   @ encoding: [0xa1,0x01,0x60,0xf2]
137 @ CHECK: vrhadd.u8      d16, d16, d17   @ encoding: [0xa1,0x01,0x40,0xf3]
138 @ CHECK: vrhadd.u16     d16, d16, d17   @ encoding: [0xa1,0x01,0x50,0xf3]
139 @ CHECK: vrhadd.u32     d16, d16, d17   @ encoding: [0xa1,0x01,0x60,0xf3]
140 @ CHECK: vrhadd.s8      q8, q8, q9      @ encoding: [0xe2,0x01,0x40,0xf2]
141 @ CHECK: vrhadd.s16     q8, q8, q9      @ encoding: [0xe2,0x01,0x50,0xf2]
142 @ CHECK: vrhadd.s32     q8, q8, q9      @ encoding: [0xe2,0x01,0x60,0xf2]
143 @ CHECK: vrhadd.u8      q8, q8, q9      @ encoding: [0xe2,0x01,0x40,0xf3]
144 @ CHECK: vrhadd.u16     q8, q8, q9      @ encoding: [0xe2,0x01,0x50,0xf3]
145 @ CHECK: vrhadd.u32     q8, q8, q9      @ encoding: [0xe2,0x01,0x60,0xf3]
146
147
148         vqadd.s8        d16, d16, d17
149         vqadd.s16       d16, d16, d17
150         vqadd.s32       d16, d16, d17
151         vqadd.s64       d16, d16, d17
152         vqadd.u8        d16, d16, d17
153         vqadd.u16       d16, d16, d17
154         vqadd.u32       d16, d16, d17
155         vqadd.u64       d16, d16, d17
156
157 @ CHECK: vqadd.s8       d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf2]
158 @ CHECK: vqadd.s16      d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf2]
159 @ CHECK: vqadd.s32      d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf2]
160 @ CHECK: vqadd.s64      d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf2]
161 @ CHECK: vqadd.u8       d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf3]
162 @ CHECK: vqadd.u16      d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf3]
163 @ CHECK: vqadd.u32      d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf3]
164 @ CHECK: vqadd.u64      d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf3]
165
166         vqadd.s8        q8, q8, q9
167         vqadd.s16       q8, q8, q9
168         vqadd.s32       q8, q8, q9
169         vqadd.s64       q8, q8, q9
170         vqadd.u8        q8, q8, q9
171         vqadd.u16       q8, q8, q9
172         vqadd.u32       q8, q8, q9
173         vqadd.u64       q8, q8, q9
174
175 @ CHECK: vqadd.s8       q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf2]
176 @ CHECK: vqadd.s16      q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf2]
177 @ CHECK: vqadd.s32      q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf2]
178 @ CHECK: vqadd.s64      q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf2]
179 @ CHECK: vqadd.u8       q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf3]
180 @ CHECK: vqadd.u16      q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf3]
181 @ CHECK: vqadd.u32      q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf3]
182 @ CHECK: vqadd.u64      q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf3]
183
184
185 @ two-operand variants.
186         vqadd.s8        d16, d17
187         vqadd.s16       d16, d17
188         vqadd.s32       d16, d17
189         vqadd.s64       d16, d17
190         vqadd.u8        d16, d17
191         vqadd.u16       d16, d17
192         vqadd.u32       d16, d17
193         vqadd.u64       d16, d17
194
195 @ CHECK: vqadd.s8       d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf2]
196 @ CHECK: vqadd.s16      d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf2]
197 @ CHECK: vqadd.s32      d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf2]
198 @ CHECK: vqadd.s64      d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf2]
199 @ CHECK: vqadd.u8       d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf3]
200 @ CHECK: vqadd.u16      d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf3]
201 @ CHECK: vqadd.u32      d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf3]
202 @ CHECK: vqadd.u64      d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf3]
203
204         vqadd.s8        q8, q9
205         vqadd.s16       q8, q9
206         vqadd.s32       q8, q9
207         vqadd.s64       q8, q9
208         vqadd.u8        q8, q9
209         vqadd.u16       q8, q9
210         vqadd.u32       q8, q9
211         vqadd.u64       q8, q9
212
213 @ CHECK: vqadd.s8       q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf2]
214 @ CHECK: vqadd.s16      q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf2]
215 @ CHECK: vqadd.s32      q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf2]
216 @ CHECK: vqadd.s64      q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf2]
217 @ CHECK: vqadd.u8       q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf3]
218 @ CHECK: vqadd.u16      q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf3]
219 @ CHECK: vqadd.u32      q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf3]
220 @ CHECK: vqadd.u64      q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf3]
221
222
223 @ CHECK: vaddhn.i16     d16, q8, q9     @ encoding: [0xa2,0x04,0xc0,0xf2]
224         vaddhn.i16      d16, q8, q9
225 @ CHECK: vaddhn.i32     d16, q8, q9     @ encoding: [0xa2,0x04,0xd0,0xf2]
226         vaddhn.i32      d16, q8, q9
227 @ CHECK: vaddhn.i64     d16, q8, q9     @ encoding: [0xa2,0x04,0xe0,0xf2]
228         vaddhn.i64      d16, q8, q9
229 @ CHECK: vraddhn.i16    d16, q8, q9     @ encoding: [0xa2,0x04,0xc0,0xf3]
230         vraddhn.i16     d16, q8, q9
231 @ CHECK: vraddhn.i32    d16, q8, q9     @ encoding: [0xa2,0x04,0xd0,0xf3]
232         vraddhn.i32     d16, q8, q9
233 @ CHECK: vraddhn.i64    d16, q8, q9     @ encoding: [0xa2,0x04,0xe0,0xf3]
234         vraddhn.i64     d16, q8, q9
235
236
237 @ Two-operand variants
238
239         vadd.i8  d6, d5
240         vadd.i16 d7, d1
241         vadd.i32 d8, d2
242         vadd.i64 d9, d3
243
244         vadd.i8  q6, q5
245         vadd.i16 q7, q1
246         vadd.i32 q8, q2
247         vadd.i64 q9, q3
248
249 @ CHECK: vadd.i8        d6, d6, d5      @ encoding: [0x05,0x68,0x06,0xf2]
250 @ CHECK: vadd.i16       d7, d7, d1      @ encoding: [0x01,0x78,0x17,0xf2]
251 @ CHECK: vadd.i32       d8, d8, d2      @ encoding: [0x02,0x88,0x28,0xf2]
252 @ CHECK: vadd.i64       d9, d9, d3      @ encoding: [0x03,0x98,0x39,0xf2]
253
254 @ CHECK: vadd.i8        q6, q6, q5      @ encoding: [0x4a,0xc8,0x0c,0xf2]
255 @ CHECK: vadd.i16       q7, q7, q1      @ encoding: [0x42,0xe8,0x1e,0xf2]
256 @ CHECK: vadd.i32       q8, q8, q2      @ encoding: [0xc4,0x08,0x60,0xf2]
257 @ CHECK: vadd.i64       q9, q9, q3      @ encoding: [0xc6,0x28,0x72,0xf2]
258
259
260         vaddw.s8  q6, d5
261         vaddw.s16 q7, d1
262         vaddw.s32 q8, d2
263
264         vaddw.u8  q6, d5
265         vaddw.u16 q7, d1
266         vaddw.u32 q8, d2
267
268 @ CHECK: vaddw.s8       q6, q6, d5      @ encoding: [0x05,0xc1,0x8c,0xf2]
269 @ CHECK: vaddw.s16      q7, q7, d1      @ encoding: [0x01,0xe1,0x9e,0xf2]
270 @ CHECK: vaddw.s32      q8, q8, d2      @ encoding: [0x82,0x01,0xe0,0xf2]
271
272 @ CHECK: vaddw.u8       q6, q6, d5      @ encoding: [0x05,0xc1,0x8c,0xf3]
273 @ CHECK: vaddw.u16      q7, q7, d1      @ encoding: [0x01,0xe1,0x9e,0xf3]
274 @ CHECK: vaddw.u32      q8, q8, d2      @ encoding: [0x82,0x01,0xe0,0xf3]