Tidy up. Formatting.
[oota-llvm.git] / test / MC / ARM / simple-fp-encoding.s
1 @ RUN: llvm-mc -mcpu=cortex-a8 -triple armv7-apple-darwin -show-encoding < %s | FileCheck %s
2
3         vadd.f64  d16, d17, d16
4         vadd.f32  s0, s1, s0
5 @ CHECK: vadd.f64 d16, d17, d16      @ encoding: [0xa0,0x0b,0x71,0xee]
6 @ CHECK: vadd.f32 s0, s1, s0         @ encoding: [0x80,0x0a,0x30,0xee]
7
8         vsub.f64  d16, d17, d16
9         vsub.f32  s0, s1, s0
10 @ CHECK: vsub.f64 d16, d17, d16      @ encoding: [0xe0,0x0b,0x71,0xee]
11 @ CHECK: vsub.f32 s0, s1, s0         @ encoding: [0xc0,0x0a,0x30,0xee]
12
13         vdiv.f64  d16, d17, d16
14         vdiv.f32  s0, s1, s0
15
16 @ CHECK: vdiv.f64 d16, d17, d16      @ encoding: [0xa0,0x0b,0xc1,0xee]
17 @ CHECK: vdiv.f32 s0, s1, s0         @ encoding: [0x80,0x0a,0x80,0xee]
18
19         vmul.f64  d16, d17, d16
20         vmul.f64  d20, d17
21         vmul.f32  s0, s1, s0
22         vmul.f32  s11, s21
23
24
25 @ CHECK: vmul.f64 d16, d17, d16      @ encoding: [0xa0,0x0b,0x61,0xee]
26 @ CHECK: vmul.f64 d20, d20, d17      @ encoding: [0xa1,0x4b,0x64,0xee]
27 @ CHECK: vmul.f32 s0, s1, s0         @ encoding: [0x80,0x0a,0x20,0xee]
28 @ CHECK: vmul.f32 s11, s11, s21      @ encoding: [0xaa,0x5a,0x65,0xee]
29
30         vnmul.f64       d16, d17, d16
31         vnmul.f32       s0, s1, s0
32
33 @ CHECK: vnmul.f64 d16, d17, d16     @ encoding: [0xe0,0x0b,0x61,0xee]
34 @ CHECK: vnmul.f32 s0, s1, s0        @ encoding: [0xc0,0x0a,0x20,0xee]
35
36         vcmpe.f64       d17, d16
37         vcmpe.f32       s1, s0
38
39 @ CHECK: vcmpe.f64 d17, d16          @ encoding: [0xe0,0x1b,0xf4,0xee]
40 @ CHECK: vcmpe.f32 s1, s0            @ encoding: [0xc0,0x0a,0xf4,0xee]
41
42         vcmpe.f64       d16, #0
43         vcmpe.f32       s0, #0
44
45 @ CHECK: vcmpe.f64 d16, #0           @ encoding: [0xc0,0x0b,0xf5,0xee]
46 @ CHECK: vcmpe.f32 s0, #0            @ encoding: [0xc0,0x0a,0xb5,0xee]
47
48         vabs.f64        d16, d16
49         vabs.f32        s0, s0
50
51 @ CHECK: vabs.f64 d16, d16           @ encoding: [0xe0,0x0b,0xf0,0xee]
52 @ CHECK: vabs.f32 s0, s0             @ encoding: [0xc0,0x0a,0xb0,0xee]
53
54         vcvt.f32.f64    s0, d16
55         vcvt.f64.f32    d16, s0
56
57 @ CHECK: vcvt.f32.f64 s0, d16        @ encoding: [0xe0,0x0b,0xb7,0xee]
58 @ CHECK: vcvt.f64.f32 d16, s0        @ encoding: [0xc0,0x0a,0xf7,0xee]
59
60         vneg.f64        d16, d16
61         vneg.f32        s0, s0
62
63 @ CHECK: vneg.f64 d16, d16           @ encoding: [0x60,0x0b,0xf1,0xee]
64 @ CHECK: vneg.f32 s0, s0             @ encoding: [0x40,0x0a,0xb1,0xee]
65
66         vsqrt.f64       d16, d16
67         vsqrt.f32       s0, s0
68
69 @ CHECK: vsqrt.f64 d16, d16          @ encoding: [0xe0,0x0b,0xf1,0xee]
70 @ CHECK: vsqrt.f32 s0, s0            @ encoding: [0xc0,0x0a,0xb1,0xee]
71
72         vcvt.f64.s32    d16, s0
73         vcvt.f32.s32    s0, s0
74         vcvt.f64.u32    d16, s0
75         vcvt.f32.u32    s0, s0
76         vcvt.s32.f64    s0, d16
77         vcvt.s32.f32    s0, s0
78         vcvt.u32.f64    s0, d16
79         vcvt.u32.f32    s0, s0
80
81 @ CHECK: vcvt.f64.s32 d16, s0        @ encoding: [0xc0,0x0b,0xf8,0xee]
82 @ CHECK: vcvt.f32.s32 s0, s0         @ encoding: [0xc0,0x0a,0xb8,0xee]
83 @ CHECK: vcvt.f64.u32 d16, s0        @ encoding: [0x40,0x0b,0xf8,0xee]
84 @ CHECK: vcvt.f32.u32 s0, s0         @ encoding: [0x40,0x0a,0xb8,0xee]
85 @ CHECK: vcvt.s32.f64 s0, d16        @ encoding: [0xe0,0x0b,0xbd,0xee]
86 @ CHECK: vcvt.s32.f32 s0, s0         @ encoding: [0xc0,0x0a,0xbd,0xee]
87 @ CHECK: vcvt.u32.f64 s0, d16        @ encoding: [0xe0,0x0b,0xbc,0xee]
88 @ CHECK: vcvt.u32.f32 s0, s0         @ encoding: [0xc0,0x0a,0xbc,0xee]
89
90
91         vmla.f64        d16, d18, d17
92         vmla.f32        s1, s2, s0
93
94 @ CHECK: vmla.f64 d16, d18, d17      @ encoding: [0xa1,0x0b,0x42,0xee]
95 @ CHECK: vmla.f32 s1, s2, s0         @ encoding: [0x00,0x0a,0x41,0xee]
96
97         vmls.f64        d16, d18, d17
98         vmls.f32        s1, s2, s0
99
100 @ CHECK: vmls.f64 d16, d18, d17      @ encoding: [0xe1,0x0b,0x42,0xee]
101 @ CHECK: vmls.f32 s1, s2, s0         @ encoding: [0x40,0x0a,0x41,0xee]
102
103         vnmla.f64       d16, d18, d17
104         vnmla.f32       s1, s2, s0
105
106 @ CHECK: vnmla.f64 d16, d18, d17     @ encoding: [0xe1,0x0b,0x52,0xee]
107 @ CHECK: vnmla.f32 s1, s2, s0        @ encoding: [0x40,0x0a,0x51,0xee]
108
109         vnmls.f64       d16, d18, d17
110         vnmls.f32       s1, s2, s0
111
112 @ CHECK: vnmls.f64 d16, d18, d17     @ encoding: [0xa1,0x0b,0x52,0xee]
113 @ CHECK: vnmls.f32 s1, s2, s0        @ encoding: [0x00,0x0a,0x51,0xee]
114
115         vmrs    APSR_nzcv, fpscr
116         vmrs    apsr_nzcv, fpscr
117         fmstat
118         vmrs    r2, fpsid
119         vmrs    r3, FPSID
120         vmrs    r4, mvfr0
121         vmrs    r5, MVFR1
122
123 @ CHECK: vmrs APSR_nzcv, fpscr       @ encoding: [0x10,0xfa,0xf1,0xee]
124 @ CHECK: vmrs APSR_nzcv, fpscr       @ encoding: [0x10,0xfa,0xf1,0xee]
125 @ CHECK: vmrs APSR_nzcv, fpscr       @ encoding: [0x10,0xfa,0xf1,0xee]
126 @ CHECK: vmrs r2, fpsid              @ encoding: [0x10,0x2a,0xf0,0xee]
127 @ CHECK: vmrs r3, fpsid              @ encoding: [0x10,0x3a,0xf0,0xee]
128 @ CHECK: vmrs r4, mvfr0              @ encoding: [0x10,0x4a,0xf7,0xee]
129 @ CHECK: vmrs r5, mvfr1              @ encoding: [0x10,0x5a,0xf6,0xee]
130
131 @ CHECK: vnegne.f64 d16, d16         @ encoding: [0x60,0x0b,0xf1,0x1e]
132         vnegne.f64      d16, d16
133
134 @ CHECK: vmovne s0, r0               @ encoding: [0x10,0x0a,0x00,0x1e]
135 @ CHECK: vmoveq s0, r1               @ encoding: [0x10,0x1a,0x00,0x0e]
136         vmovne  s0, r0
137         vmoveq  s0, r1
138
139         vmov.f32 r1, s2
140         vmov.f32 s4, r3
141         vmov.f64 r1, r5, d2
142         vmov.f64 d4, r3, r9
143
144 @ CHECK: vmov   r1, s2                  @ encoding: [0x10,0x1a,0x11,0xee]
145 @ CHECK: vmov   s4, r3                  @ encoding: [0x10,0x3a,0x02,0xee]
146 @ CHECK: vmov   r1, r5, d2              @ encoding: [0x12,0x1b,0x55,0xec]
147 @ CHECK: vmov   d4, r3, r9              @ encoding: [0x14,0x3b,0x49,0xec]
148
149 @ CHECK: vmrs r0, fpscr              @ encoding: [0x10,0x0a,0xf1,0xee]
150         vmrs    r0, fpscr
151 @ CHECK: vmrs  r0, fpexc             @ encoding: [0x10,0x0a,0xf8,0xee]
152         vmrs  r0, fpexc
153 @ CHECK: vmrs  r0, fpsid             @ encoding: [0x10,0x0a,0xf0,0xee]
154         vmrs  r0, fpsid
155
156 @ CHECK: vmsr fpscr, r0              @ encoding: [0x10,0x0a,0xe1,0xee]
157         vmsr    fpscr, r0
158 @ CHECK: vmsr  fpexc, r0             @ encoding: [0x10,0x0a,0xe8,0xee]
159         vmsr  fpexc, r0
160 @ CHECK: vmsr  fpsid, r0             @ encoding: [0x10,0x0a,0xe0,0xee]
161         vmsr  fpsid, r0
162
163         vmov.f64        d16, #3.000000e+00
164         vmov.f32        s0, #3.000000e+00
165         vmov.f64        d16, #-3.000000e+00
166         vmov.f32        s0, #-3.000000e+00
167
168 @ CHECK: vmov.f64 d16, #3.000000e+00 @ encoding: [0x08,0x0b,0xf0,0xee]
169 @ CHECK: vmov.f32 s0, #3.000000e+00  @ encoding: [0x08,0x0a,0xb0,0xee]
170 @ CHECK: vmov.f64 d16, #-3.000000e+00 @ encoding: [0x08,0x0b,0xf8,0xee]
171 @ CHECK: vmov.f32 s0, #-3.000000e+00  @ encoding: [0x08,0x0a,0xb8,0xee]
172
173 @ CHECK: vmov s0, r0                 @ encoding: [0x10,0x0a,0x00,0xee]
174 @ CHECK: vmov s1, r1                 @ encoding: [0x90,0x1a,0x00,0xee]
175 @ CHECK: vmov s2, r2                 @ encoding: [0x10,0x2a,0x01,0xee]
176 @ CHECK: vmov s3, r3                 @ encoding: [0x90,0x3a,0x01,0xee]
177         vmov    s0, r0
178         vmov    s1, r1
179         vmov    s2, r2
180         vmov    s3, r3
181
182 @ CHECK: vmov r0, s0                 @ encoding: [0x10,0x0a,0x10,0xee]
183 @ CHECK: vmov r1, s1                 @ encoding: [0x90,0x1a,0x10,0xee]
184 @ CHECK: vmov r2, s2                 @ encoding: [0x10,0x2a,0x11,0xee]
185 @ CHECK: vmov r3, s3                 @ encoding: [0x90,0x3a,0x11,0xee]
186         vmov    r0, s0
187         vmov    r1, s1
188         vmov    r2, s2
189         vmov    r3, s3
190
191 @ CHECK: vmov r0, r1, d16            @ encoding: [0x30,0x0b,0x51,0xec]
192         vmov    r0, r1, d16
193
194 @ CHECK: vldr d17, [r0]           @ encoding: [0x00,0x1b,0xd0,0xed]
195 @ CHECK: vldr s0, [lr]            @ encoding: [0x00,0x0a,0x9e,0xed]
196 @ CHECK: vldr d0, [lr]            @ encoding: [0x00,0x0b,0x9e,0xed]
197
198         vldr.64 d17, [r0]
199         vldr.i32 s0, [lr]
200         vldr.d d0, [lr]
201
202 @ CHECK: vldr d1, [r2, #32]       @ encoding: [0x08,0x1b,0x92,0xed]
203 @ CHECK: vldr d1, [r2, #-32]      @ encoding: [0x08,0x1b,0x12,0xed]
204         vldr.64 d1, [r2, #32]
205         vldr.f64        d1, [r2, #-32]
206
207 @ CHECK: vldr d2, [r3]            @ encoding: [0x00,0x2b,0x93,0xed]
208         vldr.64 d2, [r3]
209
210 @ CHECK: vldr d3, [pc]            @ encoding: [0x00,0x3b,0x9f,0xed]
211 @ CHECK: vldr d3, [pc]            @ encoding: [0x00,0x3b,0x9f,0xed]
212 @ CHECK: vldr d3, [pc, #-0]            @ encoding: [0x00,0x3b,0x1f,0xed]
213         vldr.64 d3, [pc]
214         vldr.64 d3, [pc,#0]
215         vldr.64 d3, [pc,#-0]
216
217 @ CHECK: vldr s13, [r0]           @ encoding: [0x00,0x6a,0xd0,0xed]
218         vldr.32 s13, [r0]
219
220 @ CHECK: vldr s1, [r2, #32]       @ encoding: [0x08,0x0a,0xd2,0xed]
221 @ CHECK: vldr s1, [r2, #-32]      @ encoding: [0x08,0x0a,0x52,0xed]
222         vldr.32 s1, [r2, #32]
223         vldr.32 s1, [r2, #-32]
224
225 @ CHECK: vldr s2, [r3]            @ encoding: [0x00,0x1a,0x93,0xed]
226         vldr.32 s2, [r3]
227
228 @ CHECK: vldr s5, [pc]            @ encoding: [0x00,0x2a,0xdf,0xed]
229 @ CHECK: vldr s5, [pc]            @ encoding: [0x00,0x2a,0xdf,0xed]
230 @ CHECK: vldr s5, [pc, #-0]            @ encoding: [0x00,0x2a,0x5f,0xed]
231         vldr.32 s5, [pc]
232         vldr.32 s5, [pc,#0]
233         vldr.32 s5, [pc,#-0]
234
235 @ CHECK: vstr d4, [r1]            @ encoding: [0x00,0x4b,0x81,0xed]
236 @ CHECK: vstr d4, [r1, #24]       @ encoding: [0x06,0x4b,0x81,0xed]
237 @ CHECK: vstr d4, [r1, #-24]      @ encoding: [0x06,0x4b,0x01,0xed]
238 @ CHECK: vstr s0, [lr]            @ encoding: [0x00,0x0a,0x8e,0xed]
239 @ CHECK: vstr d0, [lr]            @ encoding: [0x00,0x0b,0x8e,0xed]
240
241         vstr.64 d4, [r1]
242         vstr.64 d4, [r1, #24]
243         vstr.64 d4, [r1, #-24]
244         vstr s0, [lr]
245         vstr d0, [lr]
246
247 @ CHECK: vstr s4, [r1]            @ encoding: [0x00,0x2a,0x81,0xed]
248 @ CHECK: vstr s4, [r1, #24]       @ encoding: [0x06,0x2a,0x81,0xed]
249 @ CHECK: vstr s4, [r1, #-24]      @ encoding: [0x06,0x2a,0x01,0xed]
250         vstr.32 s4, [r1]
251         vstr.32 s4, [r1, #24]
252         vstr.32 s4, [r1, #-24]
253
254 @ CHECK: vldmia r1, {d2, d3, d4, d5, d6, d7} @ encoding: [0x0c,0x2b,0x91,0xec]
255 @ CHECK: vldmia r1, {s2, s3, s4, s5, s6, s7} @ encoding: [0x06,0x1a,0x91,0xec]
256         vldmia  r1, {d2,d3-d6,d7}
257         vldmia  r1, {s2,s3-s6,s7}
258
259 @ CHECK: vstmia r1, {d2, d3, d4, d5, d6, d7} @ encoding: [0x0c,0x2b,0x81,0xec]
260 @ CHECK: vstmia r1, {s2, s3, s4, s5, s6, s7} @ encoding: [0x06,0x1a,0x81,0xec]
261 @ CHECK: vpush  {d8, d9, d10, d11, d12, d13, d14, d15} @ encoding: [0x10,0x8b,0x2d,0xed]
262         vstmia  r1, {d2,d3-d6,d7}
263         vstmia  r1, {s2,s3-s6,s7}
264         vstmdb sp!, {q4-q7}
265
266 @ CHECK: vcvtr.s32.f64  s0, d0 @ encoding: [0x40,0x0b,0xbd,0xee]
267 @ CHECK: vcvtr.s32.f32  s0, s1 @ encoding: [0x60,0x0a,0xbd,0xee]
268 @ CHECK: vcvtr.u32.f64  s0, d0 @ encoding: [0x40,0x0b,0xbc,0xee]
269 @ CHECK: vcvtr.u32.f32  s0, s1 @ encoding: [0x60,0x0a,0xbc,0xee]
270         vcvtr.s32.f64  s0, d0
271         vcvtr.s32.f32  s0, s1
272         vcvtr.u32.f64  s0, d0
273         vcvtr.u32.f32  s0, s1
274
275 @ CHECK: vmovne s25, s26, r2, r5
276         vmovne  s25, s26, r2, r5        @ encoding: [0x39,0x2a,0x45,0x1c]
277
278 @ VMOV w/ optional data type suffix.
279         vmov.32 s1, r8
280         vmov.s16 s2, r4
281         vmov.16 s3, r6
282         vmov.u32 s4, r1
283         vmov.p8 s5, r2
284         vmov.8 s6, r3
285
286         vmov.32 r1, s8
287         vmov.s16 r2, s4
288         vmov.16 r3, s6
289         vmov.u32 r4, s1
290         vmov.p8 r5, s2
291         vmov.8 r6, s3
292
293 @ CHECK: vmov   s1, r8                  @ encoding: [0x90,0x8a,0x00,0xee]
294 @ CHECK: vmov   s2, r4                  @ encoding: [0x10,0x4a,0x01,0xee]
295 @ CHECK: vmov   s3, r6                  @ encoding: [0x90,0x6a,0x01,0xee]
296 @ CHECK: vmov   s4, r1                  @ encoding: [0x10,0x1a,0x02,0xee]
297 @ CHECK: vmov   s5, r2                  @ encoding: [0x90,0x2a,0x02,0xee]
298 @ CHECK: vmov   s6, r3                  @ encoding: [0x10,0x3a,0x03,0xee]
299 @ CHECK: vmov   r1, s8                  @ encoding: [0x10,0x1a,0x14,0xee]
300 @ CHECK: vmov   r2, s4                  @ encoding: [0x10,0x2a,0x12,0xee]
301 @ CHECK: vmov   r3, s6                  @ encoding: [0x10,0x3a,0x13,0xee]
302 @ CHECK: vmov   r4, s1                  @ encoding: [0x90,0x4a,0x10,0xee]
303 @ CHECK: vmov   r5, s2                  @ encoding: [0x10,0x5a,0x11,0xee]
304 @ CHECK: vmov   r6, s3                  @ encoding: [0x90,0x6a,0x11,0xee]
305
306
307 @ VCVT (between floating-point and fixed-point)
308         vcvt.f32.u32 s0, s0, #20
309         vcvt.f64.s32 d0, d0, #32
310         vcvt.f32.u16 s0, s0, #1
311         vcvt.f64.s16 d0, d0, #16
312         vcvt.f32.s32 s1, s1, #20
313         vcvt.f64.u32 d20, d20, #32
314         vcvt.f32.s16 s17, s17, #1
315         vcvt.f64.u16 d23, d23, #16
316         vcvt.u32.f32 s12, s12, #20 
317         vcvt.s32.f64 d2, d2, #32
318         vcvt.u16.f32 s28, s28, #1
319         vcvt.s16.f64 d15, d15, #16
320         vcvt.s32.f32 s1, s1, #20
321         vcvt.u32.f64 d20, d20, #32
322         vcvt.s16.f32 s17, s17, #1
323         vcvt.u16.f64 d23, d23, #16
324
325 @ CHECK: vcvt.f32.u32   s0, s0, #20     @ encoding: [0xc6,0x0a,0xbb,0xee]
326 @ CHECK: vcvt.f64.s32   d0, d0, #32     @ encoding: [0xc0,0x0b,0xba,0xee]
327 @ CHECK: vcvt.f32.u16   s0, s0, #1      @ encoding: [0x67,0x0a,0xbb,0xee]
328 @ CHECK: vcvt.f64.s16   d0, d0, #16     @ encoding: [0x40,0x0b,0xba,0xee]
329 @ CHECK: vcvt.f32.s32   s1, s1, #20     @ encoding: [0xc6,0x0a,0xfa,0xee]
330 @ CHECK: vcvt.f64.u32   d20, d20, #32   @ encoding: [0xc0,0x4b,0xfb,0xee]
331 @ CHECK: vcvt.f32.s16   s17, s17, #1    @ encoding: [0x67,0x8a,0xfa,0xee]
332 @ CHECK: vcvt.f64.u16   d23, d23, #16   @ encoding: [0x40,0x7b,0xfb,0xee]
333
334 @ CHECK: vcvt.u32.f32   s12, s12, #20   @ encoding: [0xc6,0x6a,0xbf,0xee]
335 @ CHECK: vcvt.s32.f64   d2, d2, #32     @ encoding: [0xc0,0x2b,0xbe,0xee]
336 @ CHECK: vcvt.u16.f32   s28, s28, #1    @ encoding: [0x67,0xea,0xbf,0xee]
337 @ CHECK: vcvt.s16.f64   d15, d15, #16   @ encoding: [0x40,0xfb,0xbe,0xee]
338 @ CHECK: vcvt.s32.f32   s1, s1, #20     @ encoding: [0xc6,0x0a,0xfe,0xee]
339 @ CHECK: vcvt.u32.f64   d20, d20, #32   @ encoding: [0xc0,0x4b,0xff,0xee]
340 @ CHECK: vcvt.s16.f32   s17, s17, #1    @ encoding: [0x67,0x8a,0xfe,0xee]
341 @ CHECK: vcvt.u16.f64   d23, d23, #16   @ encoding: [0x40,0x7b,0xff,0xee]
342
343
344 @ Use NEON to load some f32 immediates that don't fit the f8 representation.
345         vmov.f32 d4, #0.0
346         vmov.f32 d4, #32.0
347
348 @ CHECK: vmov.i32       d4, #0x0        @ encoding: [0x10,0x40,0x80,0xf2]
349 @ CHECK: vmov.i32       d4, #0x42000000 @ encoding: [0x12,0x46,0x84,0xf2]