Tidy up.
[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 @ CHECK: vrhadd.s8      d16, d16, d17   @ encoding: [0xa1,0x01,0x40,0xf2]
69         vrhadd.s8       d16, d16, d17
70 @ CHECK: vrhadd.s16     d16, d16, d17   @ encoding: [0xa1,0x01,0x50,0xf2]
71         vrhadd.s16      d16, d16, d17
72 @ CHECK: vrhadd.s32     d16, d16, d17   @ encoding: [0xa1,0x01,0x60,0xf2]
73         vrhadd.s32      d16, d16, d17
74 @ CHECK: vrhadd.u8      d16, d16, d17   @ encoding: [0xa1,0x01,0x40,0xf3]
75         vrhadd.u8       d16, d16, d17
76 @ CHECK: vrhadd.u16     d16, d16, d17   @ encoding: [0xa1,0x01,0x50,0xf3]
77         vrhadd.u16      d16, d16, d17
78 @ CHECK: vrhadd.u32     d16, d16, d17   @ encoding: [0xa1,0x01,0x60,0xf3]
79         vrhadd.u32      d16, d16, d17
80 @ CHECK: vrhadd.s8      q8, q8, q9      @ encoding: [0xe2,0x01,0x40,0xf2]
81         vrhadd.s8       q8, q8, q9
82 @ CHECK: vrhadd.s16     q8, q8, q9      @ encoding: [0xe2,0x01,0x50,0xf2]
83         vrhadd.s16      q8, q8, q9
84 @ CHECK: vrhadd.s32     q8, q8, q9      @ encoding: [0xe2,0x01,0x60,0xf2]
85         vrhadd.s32      q8, q8, q9
86 @ CHECK: vrhadd.u8      q8, q8, q9      @ encoding: [0xe2,0x01,0x40,0xf3]
87         vrhadd.u8       q8, q8, q9
88 @ CHECK: vrhadd.u16     q8, q8, q9      @ encoding: [0xe2,0x01,0x50,0xf3]
89         vrhadd.u16      q8, q8, q9
90 @ CHECK: vrhadd.u32     q8, q8, q9      @ encoding: [0xe2,0x01,0x60,0xf3]
91         vrhadd.u32      q8, q8, q9
92
93         vqadd.s8        d16, d16, d17
94         vqadd.s16       d16, d16, d17
95         vqadd.s32       d16, d16, d17
96         vqadd.s64       d16, d16, d17
97         vqadd.u8        d16, d16, d17
98         vqadd.u16       d16, d16, d17
99         vqadd.u32       d16, d16, d17
100         vqadd.u64       d16, d16, d17
101
102 @ CHECK: vqadd.s8       d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf2]
103 @ CHECK: vqadd.s16      d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf2]
104 @ CHECK: vqadd.s32      d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf2]
105 @ CHECK: vqadd.s64      d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf2]
106 @ CHECK: vqadd.u8       d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf3]
107 @ CHECK: vqadd.u16      d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf3]
108 @ CHECK: vqadd.u32      d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf3]
109 @ CHECK: vqadd.u64      d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf3]
110
111         vqadd.s8        q8, q8, q9
112         vqadd.s16       q8, q8, q9
113         vqadd.s32       q8, q8, q9
114         vqadd.s64       q8, q8, q9
115         vqadd.u8        q8, q8, q9
116         vqadd.u16       q8, q8, q9
117         vqadd.u32       q8, q8, q9
118         vqadd.u64       q8, q8, q9
119
120 @ CHECK: vqadd.s8       q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf2]
121 @ CHECK: vqadd.s16      q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf2]
122 @ CHECK: vqadd.s32      q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf2]
123 @ CHECK: vqadd.s64      q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf2]
124 @ CHECK: vqadd.u8       q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf3]
125 @ CHECK: vqadd.u16      q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf3]
126 @ CHECK: vqadd.u32      q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf3]
127 @ CHECK: vqadd.u64      q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf3]
128
129
130 @ two-operand variants.
131         vqadd.s8        d16, d17
132         vqadd.s16       d16, d17
133         vqadd.s32       d16, d17
134         vqadd.s64       d16, d17
135         vqadd.u8        d16, d17
136         vqadd.u16       d16, d17
137         vqadd.u32       d16, d17
138         vqadd.u64       d16, d17
139
140 @ CHECK: vqadd.s8       d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf2]
141 @ CHECK: vqadd.s16      d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf2]
142 @ CHECK: vqadd.s32      d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf2]
143 @ CHECK: vqadd.s64      d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf2]
144 @ CHECK: vqadd.u8       d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf3]
145 @ CHECK: vqadd.u16      d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf3]
146 @ CHECK: vqadd.u32      d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf3]
147 @ CHECK: vqadd.u64      d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf3]
148
149         vqadd.s8        q8, q9
150         vqadd.s16       q8, q9
151         vqadd.s32       q8, q9
152         vqadd.s64       q8, q9
153         vqadd.u8        q8, q9
154         vqadd.u16       q8, q9
155         vqadd.u32       q8, q9
156         vqadd.u64       q8, q9
157
158 @ CHECK: vqadd.s8       q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf2]
159 @ CHECK: vqadd.s16      q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf2]
160 @ CHECK: vqadd.s32      q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf2]
161 @ CHECK: vqadd.s64      q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf2]
162 @ CHECK: vqadd.u8       q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf3]
163 @ CHECK: vqadd.u16      q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf3]
164 @ CHECK: vqadd.u32      q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf3]
165 @ CHECK: vqadd.u64      q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf3]
166
167
168 @ CHECK: vaddhn.i16     d16, q8, q9     @ encoding: [0xa2,0x04,0xc0,0xf2]
169         vaddhn.i16      d16, q8, q9
170 @ CHECK: vaddhn.i32     d16, q8, q9     @ encoding: [0xa2,0x04,0xd0,0xf2]
171         vaddhn.i32      d16, q8, q9
172 @ CHECK: vaddhn.i64     d16, q8, q9     @ encoding: [0xa2,0x04,0xe0,0xf2]
173         vaddhn.i64      d16, q8, q9
174 @ CHECK: vraddhn.i16    d16, q8, q9     @ encoding: [0xa2,0x04,0xc0,0xf3]
175         vraddhn.i16     d16, q8, q9
176 @ CHECK: vraddhn.i32    d16, q8, q9     @ encoding: [0xa2,0x04,0xd0,0xf3]
177         vraddhn.i32     d16, q8, q9
178 @ CHECK: vraddhn.i64    d16, q8, q9     @ encoding: [0xa2,0x04,0xe0,0xf3]
179         vraddhn.i64     d16, q8, q9
180
181
182 @ Two-operand variants
183
184         vadd.i8  d6, d5
185         vadd.i16 d7, d1
186         vadd.i32 d8, d2
187         vadd.i64 d9, d3
188
189         vadd.i8  q6, q5
190         vadd.i16 q7, q1
191         vadd.i32 q8, q2
192         vadd.i64 q9, q3
193
194 @ CHECK: vadd.i8        d6, d6, d5      @ encoding: [0x05,0x68,0x06,0xf2]
195 @ CHECK: vadd.i16       d7, d7, d1      @ encoding: [0x01,0x78,0x17,0xf2]
196 @ CHECK: vadd.i32       d8, d8, d2      @ encoding: [0x02,0x88,0x28,0xf2]
197 @ CHECK: vadd.i64       d9, d9, d3      @ encoding: [0x03,0x98,0x39,0xf2]
198
199 @ CHECK: vadd.i8        q6, q6, q5      @ encoding: [0x4a,0xc8,0x0c,0xf2]
200 @ CHECK: vadd.i16       q7, q7, q1      @ encoding: [0x42,0xe8,0x1e,0xf2]
201 @ CHECK: vadd.i32       q8, q8, q2      @ encoding: [0xc4,0x08,0x60,0xf2]
202 @ CHECK: vadd.i64       q9, q9, q3      @ encoding: [0xc6,0x28,0x72,0xf2]
203
204
205         vaddw.s8  q6, d5
206         vaddw.s16 q7, d1
207         vaddw.s32 q8, d2
208
209         vaddw.u8  q6, d5
210         vaddw.u16 q7, d1
211         vaddw.u32 q8, d2
212
213 @ CHECK: vaddw.s8       q6, q6, d5      @ encoding: [0x05,0xc1,0x8c,0xf2]
214 @ CHECK: vaddw.s16      q7, q7, d1      @ encoding: [0x01,0xe1,0x9e,0xf2]
215 @ CHECK: vaddw.s32      q8, q8, d2      @ encoding: [0x82,0x01,0xe0,0xf2]
216
217 @ CHECK: vaddw.u8       q6, q6, d5      @ encoding: [0x05,0xc1,0x8c,0xf3]
218 @ CHECK: vaddw.u16      q7, q7, d1      @ encoding: [0x01,0xe1,0x9e,0xf3]
219 @ CHECK: vaddw.u32      q8, q8, d2      @ encoding: [0x82,0x01,0xe0,0xf3]