xref: /llvm-project/llvm/test/MC/ARM/simple-fp-encoding.s (revision 75d43d383450def4d2e373ddc9cdd829302b2bff)
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        vdiv.f32 s5, s7
16        vdiv.f64 d5, d7
17
18@ CHECK: vdiv.f64 d16, d17, d16         @ encoding: [0xa0,0x0b,0xc1,0xee]
19@ CHECK: vdiv.f32 s0, s1, s0            @ encoding: [0x80,0x0a,0x80,0xee]
20@ CHECK: vdiv.f32	s5, s5, s7      @ encoding: [0xa3,0x2a,0xc2,0xee]
21@ CHECK: vdiv.f64	d5, d5, d7      @ encoding: [0x07,0x5b,0x85,0xee]
22
23
24        vmul.f64  d16, d17, d16
25	vmul.f64  d20, d17
26        vmul.f32  s0, s1, s0
27	vmul.f32  s11, s21
28
29
30@ CHECK: vmul.f64 d16, d17, d16      @ encoding: [0xa0,0x0b,0x61,0xee]
31@ CHECK: vmul.f64 d20, d20, d17      @ encoding: [0xa1,0x4b,0x64,0xee]
32@ CHECK: vmul.f32 s0, s1, s0         @ encoding: [0x80,0x0a,0x20,0xee]
33@ CHECK: vmul.f32 s11, s11, s21      @ encoding: [0xaa,0x5a,0x65,0xee]
34
35        vnmul.f64       d16, d17, d16
36        vnmul.f32       s0, s1, s0
37        vnmul.f64       d0, d1
38        vnmul.f32       s0, s1
39
40@ CHECK: vnmul.f64 d16, d17, d16     @ encoding: [0xe0,0x0b,0x61,0xee]
41@ CHECK: vnmul.f32 s0, s1, s0        @ encoding: [0xc0,0x0a,0x20,0xee]
42@ CHECK: vnmul.f64 d0, d0, d1        @ encoding: [0x41,0x0b,0x20,0xee]
43@ CHECK: vnmul.f32 s0, s0, s1        @ encoding: [0x60,0x0a,0x20,0xee]
44
45        vcmp.f64       d17, d16
46        vcmp.f32       s1, s0
47
48@ CHECK: vcmp.f64  d17, d16        @ encoding: [0x60,0x1b,0xf4,0xee]
49@ CHECK: vcmp.f32  s1, s0          @ encoding: [0x40,0x0a,0xf4,0xee]
50
51        vcmp.f64       d17, #0.0
52        vcmp.f32       s1, #0.0
53
54@ CHECK: vcmp.f64  d17, #0         @ encoding: [0x40,0x1b,0xf5,0xee]
55@ CHECK: vcmp.f32  s1, #0          @ encoding: [0x40,0x0a,0xf5,0xee]
56
57        vcmpe.f64       d17, d16
58        vcmpe.f32       s1, s0
59
60@ CHECK: vcmpe.f64 d17, d16          @ encoding: [0xe0,0x1b,0xf4,0xee]
61@ CHECK: vcmpe.f32 s1, s0            @ encoding: [0xc0,0x0a,0xf4,0xee]
62
63        vcmpe.f64       d16, #0
64        vcmpe.f32       s0, #0
65
66@ CHECK: vcmpe.f64 d16, #0           @ encoding: [0xc0,0x0b,0xf5,0xee]
67@ CHECK: vcmpe.f32 s0, #0            @ encoding: [0xc0,0x0a,0xb5,0xee]
68
69        vabs.f64        d16, d16
70        vabs.f32        s0, s0
71
72@ CHECK: vabs.f64 d16, d16           @ encoding: [0xe0,0x0b,0xf0,0xee]
73@ CHECK: vabs.f32 s0, s0             @ encoding: [0xc0,0x0a,0xb0,0xee]
74
75        vcvt.f32.f64    s0, d16
76        vcvt.f64.f32    d16, s0
77
78@ CHECK: vcvt.f32.f64 s0, d16        @ encoding: [0xe0,0x0b,0xb7,0xee]
79@ CHECK: vcvt.f64.f32 d16, s0        @ encoding: [0xc0,0x0a,0xf7,0xee]
80
81        vneg.f64        d16, d16
82        vneg.f32        s0, s0
83
84@ CHECK: vneg.f64 d16, d16           @ encoding: [0x60,0x0b,0xf1,0xee]
85@ CHECK: vneg.f32 s0, s0             @ encoding: [0x40,0x0a,0xb1,0xee]
86
87        vsqrt.f64       d16, d16
88        vsqrt.f32       s0, s0
89
90@ CHECK: vsqrt.f64 d16, d16          @ encoding: [0xe0,0x0b,0xf1,0xee]
91@ CHECK: vsqrt.f32 s0, s0            @ encoding: [0xc0,0x0a,0xb1,0xee]
92
93        vcvt.f64.s32    d16, s0
94        vcvt.f32.s32    s0, s0
95        vcvt.f64.u32    d16, s0
96        vcvt.f32.u32    s0, s0
97        vcvt.s32.f64    s0, d16
98        vcvt.s32.f32    s0, s0
99        vcvt.u32.f64    s0, d16
100        vcvt.u32.f32    s0, s0
101
102@ CHECK: vcvt.f64.s32 d16, s0        @ encoding: [0xc0,0x0b,0xf8,0xee]
103@ CHECK: vcvt.f32.s32 s0, s0         @ encoding: [0xc0,0x0a,0xb8,0xee]
104@ CHECK: vcvt.f64.u32 d16, s0        @ encoding: [0x40,0x0b,0xf8,0xee]
105@ CHECK: vcvt.f32.u32 s0, s0         @ encoding: [0x40,0x0a,0xb8,0xee]
106@ CHECK: vcvt.s32.f64 s0, d16        @ encoding: [0xe0,0x0b,0xbd,0xee]
107@ CHECK: vcvt.s32.f32 s0, s0         @ encoding: [0xc0,0x0a,0xbd,0xee]
108@ CHECK: vcvt.u32.f64 s0, d16        @ encoding: [0xe0,0x0b,0xbc,0xee]
109@ CHECK: vcvt.u32.f32 s0, s0         @ encoding: [0xc0,0x0a,0xbc,0xee]
110
111
112        vmla.f64        d16, d18, d17
113        vmla.f32        s1, s2, s0
114
115@ CHECK: vmla.f64 d16, d18, d17      @ encoding: [0xa1,0x0b,0x42,0xee]
116@ CHECK: vmla.f32 s1, s2, s0         @ encoding: [0x00,0x0a,0x41,0xee]
117
118        vmls.f64        d16, d18, d17
119        vmls.f32        s1, s2, s0
120
121@ CHECK: vmls.f64 d16, d18, d17      @ encoding: [0xe1,0x0b,0x42,0xee]
122@ CHECK: vmls.f32 s1, s2, s0         @ encoding: [0x40,0x0a,0x41,0xee]
123
124        vnmla.f64       d16, d18, d17
125        vnmla.f32       s1, s2, s0
126
127@ CHECK: vnmla.f64 d16, d18, d17     @ encoding: [0xe1,0x0b,0x52,0xee]
128@ CHECK: vnmla.f32 s1, s2, s0        @ encoding: [0x40,0x0a,0x51,0xee]
129
130        vnmls.f64       d16, d18, d17
131        vnmls.f32       s1, s2, s0
132
133@ CHECK: vnmls.f64 d16, d18, d17     @ encoding: [0xa1,0x0b,0x52,0xee]
134@ CHECK: vnmls.f32 s1, s2, s0        @ encoding: [0x00,0x0a,0x51,0xee]
135
136        vmrs    APSR_nzcv, fpscr
137        vmrs    apsr_nzcv, fpscr
138        fmstat
139        vmrs    r2, fpsid
140        vmrs    r3, FPSID
141        vmrs    r4, mvfr0
142        vmrs    r5, MVFR1
143
144@ CHECK: vmrs APSR_nzcv, fpscr       @ encoding: [0x10,0xfa,0xf1,0xee]
145@ CHECK: vmrs APSR_nzcv, fpscr       @ encoding: [0x10,0xfa,0xf1,0xee]
146@ CHECK: vmrs APSR_nzcv, fpscr       @ encoding: [0x10,0xfa,0xf1,0xee]
147@ CHECK: vmrs r2, fpsid              @ encoding: [0x10,0x2a,0xf0,0xee]
148@ CHECK: vmrs r3, fpsid              @ encoding: [0x10,0x3a,0xf0,0xee]
149@ CHECK: vmrs r4, mvfr0              @ encoding: [0x10,0x4a,0xf7,0xee]
150@ CHECK: vmrs r5, mvfr1              @ encoding: [0x10,0x5a,0xf6,0xee]
151
152@ CHECK: vnegne.f64 d16, d16         @ encoding: [0x60,0x0b,0xf1,0x1e]
153        vnegne.f64      d16, d16
154
155@ CHECK: vmovne s0, r0               @ encoding: [0x10,0x0a,0x00,0x1e]
156@ CHECK: vmoveq s0, r1               @ encoding: [0x10,0x1a,0x00,0x0e]
157        vmovne  s0, r0
158        vmoveq  s0, r1
159
160        vmov.f32 r1, s2
161        vmov.f32 s4, r3
162        vmov.f64 r1, r5, d2
163        vmov.f64 d4, r3, r9
164
165@ CHECK: vmov	r1, s2                  @ encoding: [0x10,0x1a,0x11,0xee]
166@ CHECK: vmov	s4, r3                  @ encoding: [0x10,0x3a,0x02,0xee]
167@ CHECK: vmov	r1, r5, d2              @ encoding: [0x12,0x1b,0x55,0xec]
168@ CHECK: vmov	d4, r3, r9              @ encoding: [0x14,0x3b,0x49,0xec]
169
170@ CHECK: vmrs r0, fpscr              @ encoding: [0x10,0x0a,0xf1,0xee]
171        vmrs    r0, fpscr
172@ CHECK: vmrs  r0, fpexc             @ encoding: [0x10,0x0a,0xf8,0xee]
173        vmrs  r0, fpexc
174@ CHECK: vmrs  r0, fpsid             @ encoding: [0x10,0x0a,0xf0,0xee]
175        vmrs  r0, fpsid
176@ CHECK: vmrs	r1, fpinst           @ encoding: [0x10,0x1a,0xf9,0xee]
177        vmrs r1, fpinst
178@ CHECK: vmrs	r8, fpinst2          @ encoding: [0x10,0x8a,0xfa,0xee]
179        vmrs r8, fpinst2
180
181@ CHECK: vmsr fpscr, r0              @ encoding: [0x10,0x0a,0xe1,0xee]
182        vmsr    fpscr, r0
183@ CHECK: vmsr  fpexc, r0             @ encoding: [0x10,0x0a,0xe8,0xee]
184        vmsr  fpexc, r0
185@ CHECK: vmsr  fpsid, r0             @ encoding: [0x10,0x0a,0xe0,0xee]
186        vmsr  fpsid, r0
187@ CHECK: vmsr	fpinst, r3           @ encoding: [0x10,0x3a,0xe9,0xee]
188        vmsr fpinst, r3
189@ CHECK: vmsr	fpinst2, r4          @ encoding: [0x10,0x4a,0xea,0xee]
190        vmsr fpinst2, r4
191
192        vmov.f64        d16, #3.000000e+00
193        vmov.f32        s0, #3.000000e+00
194        vmov.f64        d16, #-3.000000e+00
195        vmov.f32        s0, #-3.000000e+00
196
197@ CHECK: vmov.f64 d16, #3.000000e+00 @ encoding: [0x08,0x0b,0xf0,0xee]
198@ CHECK: vmov.f32 s0, #3.000000e+00  @ encoding: [0x08,0x0a,0xb0,0xee]
199@ CHECK: vmov.f64 d16, #-3.000000e+00 @ encoding: [0x08,0x0b,0xf8,0xee]
200@ CHECK: vmov.f32 s0, #-3.000000e+00  @ encoding: [0x08,0x0a,0xb8,0xee]
201
202@ CHECK: vmov s0, r0                 @ encoding: [0x10,0x0a,0x00,0xee]
203@ CHECK: vmov s1, r1                 @ encoding: [0x90,0x1a,0x00,0xee]
204@ CHECK: vmov s2, r2                 @ encoding: [0x10,0x2a,0x01,0xee]
205@ CHECK: vmov s3, r3                 @ encoding: [0x90,0x3a,0x01,0xee]
206        vmov    s0, r0
207        vmov    s1, r1
208        vmov    s2, r2
209        vmov    s3, r3
210
211@ CHECK: vmov r0, s0                 @ encoding: [0x10,0x0a,0x10,0xee]
212@ CHECK: vmov r1, s1                 @ encoding: [0x90,0x1a,0x10,0xee]
213@ CHECK: vmov r2, s2                 @ encoding: [0x10,0x2a,0x11,0xee]
214@ CHECK: vmov r3, s3                 @ encoding: [0x90,0x3a,0x11,0xee]
215        vmov    r0, s0
216        vmov    r1, s1
217        vmov    r2, s2
218        vmov    r3, s3
219
220@ CHECK: vmov r0, r1, d16            @ encoding: [0x30,0x0b,0x51,0xec]
221        vmov    r0, r1, d16
222
223@ Between two single precision registers and two core registers
224        vmov s3, s4, r1, r2
225        vmov s2, s3, r1, r2
226        vmov r1, r2, s3, s4
227        vmov r1, r2, s2, s3
228@ CHECK: vmov s3, s4, r1, r2      @ encoding: [0x31,0x1a,0x42,0xec]
229@ CHECK: vmov s2, s3, r1, r2      @ encoding: [0x11,0x1a,0x42,0xec]
230@ CHECK: vmov r1, r2, s3, s4      @ encoding: [0x31,0x1a,0x52,0xec]
231@ CHECK: vmov r1, r2, s2, s3      @ encoding: [0x11,0x1a,0x52,0xec]
232
233@ Between one double precision register and two core registers
234        vmov d15, r1, r2
235        vmov d16, r1, r2
236        vmov r1, r2, d15
237        vmov r1, r2, d16
238@ CHECK: vmov d15, r1, r2         @ encoding: [0x1f,0x1b,0x42,0xec]
239@ CHECK: vmov d16, r1, r2         @ encoding: [0x30,0x1b,0x42,0xec]
240@ CHECK: vmov r1, r2, d15         @ encoding: [0x1f,0x1b,0x52,0xec]
241@ CHECK: vmov r1, r2, d16         @ encoding: [0x30,0x1b,0x52,0xec]
242
243
244@ CHECK: vldr d17, [r0]           @ encoding: [0x00,0x1b,0xd0,0xed]
245@ CHECK: vldr s0, [lr]            @ encoding: [0x00,0x0a,0x9e,0xed]
246@ CHECK: vldr d0, [lr]            @ encoding: [0x00,0x0b,0x9e,0xed]
247
248        vldr.64	d17, [r0]
249	vldr.i32 s0, [lr]
250	vldr.d d0, [lr]
251
252@ CHECK: vldr d1, [r2, #32]       @ encoding: [0x08,0x1b,0x92,0xed]
253@ CHECK: vldr d1, [r2, #-32]      @ encoding: [0x08,0x1b,0x12,0xed]
254        vldr.64	d1, [r2, #32]
255        vldr.f64	d1, [r2, #-32]
256
257@ CHECK: vldr d2, [r3]            @ encoding: [0x00,0x2b,0x93,0xed]
258        vldr.64 d2, [r3]
259
260@ CHECK: vldr d3, [pc]            @ encoding: [0x00,0x3b,0x9f,0xed]
261@ CHECK: vldr d3, [pc]            @ encoding: [0x00,0x3b,0x9f,0xed]
262@ CHECK: vldr d3, [pc, #-0]            @ encoding: [0x00,0x3b,0x1f,0xed]
263        vldr.64 d3, [pc]
264        vldr.64 d3, [pc,#0]
265        vldr.64 d3, [pc,#-0]
266
267@ CHECK: vldr s13, [r0]           @ encoding: [0x00,0x6a,0xd0,0xed]
268        vldr.32	s13, [r0]
269
270@ CHECK: vldr s1, [r2, #32]       @ encoding: [0x08,0x0a,0xd2,0xed]
271@ CHECK: vldr s1, [r2, #-32]      @ encoding: [0x08,0x0a,0x52,0xed]
272        vldr.32	s1, [r2, #32]
273        vldr.32	s1, [r2, #-32]
274
275@ CHECK: vldr s2, [r3]            @ encoding: [0x00,0x1a,0x93,0xed]
276        vldr.32 s2, [r3]
277
278@ CHECK: vldr s5, [pc]            @ encoding: [0x00,0x2a,0xdf,0xed]
279@ CHECK: vldr s5, [pc]            @ encoding: [0x00,0x2a,0xdf,0xed]
280@ CHECK: vldr s5, [pc, #-0]            @ encoding: [0x00,0x2a,0x5f,0xed]
281        vldr.32 s5, [pc]
282        vldr.32 s5, [pc,#0]
283        vldr.32 s5, [pc,#-0]
284
285@ CHECK: vstr d4, [r1]            @ encoding: [0x00,0x4b,0x81,0xed]
286@ CHECK: vstr d4, [r1, #24]       @ encoding: [0x06,0x4b,0x81,0xed]
287@ CHECK: vstr d4, [r1, #-24]      @ encoding: [0x06,0x4b,0x01,0xed]
288@ CHECK: vstr s0, [lr]            @ encoding: [0x00,0x0a,0x8e,0xed]
289@ CHECK: vstr d0, [lr]            @ encoding: [0x00,0x0b,0x8e,0xed]
290
291        vstr.64 d4, [r1]
292        vstr.64 d4, [r1, #24]
293        vstr.64 d4, [r1, #-24]
294	vstr s0, [lr]
295	vstr d0, [lr]
296
297@ CHECK: vstr s4, [r1]            @ encoding: [0x00,0x2a,0x81,0xed]
298@ CHECK: vstr s4, [r1, #24]       @ encoding: [0x06,0x2a,0x81,0xed]
299@ CHECK: vstr s4, [r1, #-24]      @ encoding: [0x06,0x2a,0x01,0xed]
300        vstr.32 s4, [r1]
301        vstr.32 s4, [r1, #24]
302        vstr.32 s4, [r1, #-24]
303
304@ CHECK: vldmia r1, {d2, d3, d4, d5, d6, d7} @ encoding: [0x0c,0x2b,0x91,0xec]
305@ CHECK: vldmia r1, {s2, s3, s4, s5, s6, s7} @ encoding: [0x06,0x1a,0x91,0xec]
306        vldmia  r1, {d2,d3-d6,d7}
307        vldmia  r1, {s2,s3-s6,s7}
308
309@ CHECK: vstmia r1, {d2, d3, d4, d5, d6, d7} @ encoding: [0x0c,0x2b,0x81,0xec]
310@ CHECK: vstmia	r1, {s2, s3, s4, s5, s6, s7} @ encoding: [0x06,0x1a,0x81,0xec]
311@ CHECK: vpush	{d8, d9, d10, d11, d12, d13, d14, d15} @ encoding: [0x10,0x8b,0x2d,0xed]
312        vstmia  r1, {d2,d3-d6,d7}
313        vstmia  r1, {s2,s3-s6,s7}
314        vstmdb sp!, {q4-q7}
315
316        fldmiax r5!, {d0-d2}
317        fldmiaxeq r0, {d4,d5}
318        fldmdbxne r5!, {d4,d5,d6}
319@ CHECK: fldmiax r5!, {d0, d1, d2}      @ encoding: [0x07,0x0b,0xb5,0xec]
320@ CHECK: fldmiaxeq r0, {d4, d5}         @ encoding: [0x05,0x4b,0x90,0x0c]
321@ CHECK: fldmdbxne r5!, {d4, d5, d6}    @ encoding: [0x07,0x4b,0x35,0x1d]
322
323        fstmiax r5!, {d0-d7}
324        fstmiaxeq r4, {d8,d9}
325        fstmdbxne r7!, {d2-d4}
326@ CHECK: fstmiax r5!, {d0, d1, d2, d3, d4, d5, d6, d7} @ encoding: [0x11,0x0b,0xa5,0xec]
327@ CHECK: fstmiaxeq r4, {d8, d9}         @ encoding: [0x05,0x8b,0x84,0x0c]
328@ CHECK: fstmdbxne r7!, {d2, d3, d4}    @ encoding: [0x07,0x2b,0x27,0x1d]
329
330@ CHECK: vcvtr.s32.f64  s0, d0 @ encoding: [0x40,0x0b,0xbd,0xee]
331@ CHECK: vcvtr.s32.f32  s0, s1 @ encoding: [0x60,0x0a,0xbd,0xee]
332@ CHECK: vcvtr.u32.f64  s0, d0 @ encoding: [0x40,0x0b,0xbc,0xee]
333@ CHECK: vcvtr.u32.f32  s0, s1 @ encoding: [0x60,0x0a,0xbc,0xee]
334        vcvtr.s32.f64  s0, d0
335        vcvtr.s32.f32  s0, s1
336        vcvtr.u32.f64  s0, d0
337        vcvtr.u32.f32  s0, s1
338
339@ CHECK: vmovne	s25, s26, r2, r5
340        vmovne	s25, s26, r2, r5        @ encoding: [0x39,0x2a,0x45,0x1c]
341
342@ VMOV w/ optional data type suffix.
343	vmov.32 s1, r8
344        vmov.s16 s2, r4
345        vmov.16 s3, r6
346        vmov.u32 s4, r1
347        vmov.p8 s5, r2
348        vmov.8 s6, r3
349
350        vmov.32 r1, s8
351        vmov.s16 r2, s4
352        vmov.16 r3, s6
353        vmov.u32 r4, s1
354        vmov.p8 r5, s2
355        vmov.8 r6, s3
356
357@ CHECK: vmov	s1, r8                  @ encoding: [0x90,0x8a,0x00,0xee]
358@ CHECK: vmov	s2, r4                  @ encoding: [0x10,0x4a,0x01,0xee]
359@ CHECK: vmov	s3, r6                  @ encoding: [0x90,0x6a,0x01,0xee]
360@ CHECK: vmov	s4, r1                  @ encoding: [0x10,0x1a,0x02,0xee]
361@ CHECK: vmov	s5, r2                  @ encoding: [0x90,0x2a,0x02,0xee]
362@ CHECK: vmov	s6, r3                  @ encoding: [0x10,0x3a,0x03,0xee]
363@ CHECK: vmov	r1, s8                  @ encoding: [0x10,0x1a,0x14,0xee]
364@ CHECK: vmov	r2, s4                  @ encoding: [0x10,0x2a,0x12,0xee]
365@ CHECK: vmov	r3, s6                  @ encoding: [0x10,0x3a,0x13,0xee]
366@ CHECK: vmov	r4, s1                  @ encoding: [0x90,0x4a,0x10,0xee]
367@ CHECK: vmov	r5, s2                  @ encoding: [0x10,0x5a,0x11,0xee]
368@ CHECK: vmov	r6, s3                  @ encoding: [0x90,0x6a,0x11,0xee]
369
370
371@ VCVT (between floating-point and fixed-point)
372        vcvt.f32.u32 s0, s0, #20
373        vcvt.f64.s32 d0, d0, #32
374        vcvt.f32.u16 s0, s0, #1
375        vcvt.f64.s16 d0, d0, #16
376        vcvt.f32.s32 s1, s1, #20
377        vcvt.f64.u32 d20, d20, #32
378        vcvt.f32.s16 s17, s17, #1
379        vcvt.f64.u16 d23, d23, #16
380        vcvt.u32.f32 s12, s12, #20
381        vcvt.s32.f64 d2, d2, #32
382        vcvt.u16.f32 s28, s28, #1
383        vcvt.s16.f64 d15, d15, #16
384        vcvt.s32.f32 s1, s1, #20
385        vcvt.u32.f64 d20, d20, #32
386        vcvt.s16.f32 s17, s17, #1
387        vcvt.u16.f64 d23, d23, #16
388
389@ CHECK: vcvt.f32.u32	s0, s0, #20     @ encoding: [0xc6,0x0a,0xbb,0xee]
390@ CHECK: vcvt.f64.s32	d0, d0, #32     @ encoding: [0xc0,0x0b,0xba,0xee]
391@ CHECK: vcvt.f32.u16	s0, s0, #1      @ encoding: [0x67,0x0a,0xbb,0xee]
392@ CHECK: vcvt.f64.s16	d0, d0, #16     @ encoding: [0x40,0x0b,0xba,0xee]
393@ CHECK: vcvt.f32.s32	s1, s1, #20     @ encoding: [0xc6,0x0a,0xfa,0xee]
394@ CHECK: vcvt.f64.u32	d20, d20, #32   @ encoding: [0xc0,0x4b,0xfb,0xee]
395@ CHECK: vcvt.f32.s16	s17, s17, #1    @ encoding: [0x67,0x8a,0xfa,0xee]
396@ CHECK: vcvt.f64.u16	d23, d23, #16   @ encoding: [0x40,0x7b,0xfb,0xee]
397
398@ CHECK: vcvt.u32.f32	s12, s12, #20   @ encoding: [0xc6,0x6a,0xbf,0xee]
399@ CHECK: vcvt.s32.f64	d2, d2, #32     @ encoding: [0xc0,0x2b,0xbe,0xee]
400@ CHECK: vcvt.u16.f32	s28, s28, #1    @ encoding: [0x67,0xea,0xbf,0xee]
401@ CHECK: vcvt.s16.f64	d15, d15, #16   @ encoding: [0x40,0xfb,0xbe,0xee]
402@ CHECK: vcvt.s32.f32	s1, s1, #20     @ encoding: [0xc6,0x0a,0xfe,0xee]
403@ CHECK: vcvt.u32.f64	d20, d20, #32   @ encoding: [0xc0,0x4b,0xff,0xee]
404@ CHECK: vcvt.s16.f32	s17, s17, #1    @ encoding: [0x67,0x8a,0xfe,0xee]
405@ CHECK: vcvt.u16.f64	d23, d23, #16   @ encoding: [0x40,0x7b,0xff,0xee]
406
407
408@ Use NEON to load some f32 immediates that don't fit the f8 representation.
409        vmov.f32 d4, #0.0
410        vmov.f32 d4, #32.0
411
412@ CHECK: vmov.i32	d4, #0x0        @ encoding: [0x10,0x40,0x80,0xf2]
413@ CHECK: vmov.i32	d4, #0x42000000 @ encoding: [0x12,0x46,0x84,0xf2]
414
415@ Test encoding of floating point constants for vmov functions
416@ vfp3
417         vmov.f32 s5, #1.0
418         vmov.f32 s5, #0.125
419         vmov.f32 s5, #-1.875
420         vmov.f32 s5, #-0.59375
421
422         vmov.f64 d6, #1.0
423         vmov.f64 d6, #0.125
424         vmov.f64 d6, #-1.875
425         vmov.f64 d6, #-0.59375
426
427@ neon
428         vmov.f32 d7, #1.0
429         vmov.f32 d7, #0.125
430         vmov.f32 d7, #-1.875
431         vmov.f32 d7, #-0.59375
432
433         vmov.f32 q8, #1.0
434         vmov.f32 q8, #0.125
435         vmov.f32 q8, #-1.875
436         vmov.f32 q8, #-0.59375
437
438@ CHECK: vmov.f32        s5, #1.000000e+00 @ encoding: [0x00,0x2a,0xf7,0xee]
439@ CHECK: vmov.f32        s5, #1.250000e-01 @ encoding: [0x00,0x2a,0xf4,0xee]
440@ CHECK: vmov.f32        s5, #-1.875000e+00 @ encoding: [0x0e,0x2a,0xff,0xee]
441@ CHECK: vmov.f32        s5, #-5.937500e-01 @ encoding: [0x03,0x2a,0xfe,0xee]
442
443@ CHECK: vmov.f64        d6, #1.000000e+00 @ encoding: [0x00,0x6b,0xb7,0xee]
444@ CHECK: vmov.f64        d6, #1.250000e-01 @ encoding: [0x00,0x6b,0xb4,0xee]
445@ CHECK: vmov.f64        d6, #-1.875000e+00 @ encoding: [0x0e,0x6b,0xbf,0xee]
446@ CHECK: vmov.f64        d6, #-5.937500e-01 @ encoding: [0x03,0x6b,0xbe,0xee]
447
448@ CHECK: vmov.f32        d7, #1.000000e+00 @ encoding: [0x10,0x7f,0x87,0xf2]
449@ CHECK: vmov.f32        d7, #1.250000e-01 @ encoding: [0x10,0x7f,0x84,0xf2]
450@ CHECK: vmov.f32        d7, #-1.875000e+00 @ encoding: [0x1e,0x7f,0x87,0xf3]
451@ CHECK: vmov.f32        d7, #-5.937500e-01 @ encoding: [0x13,0x7f,0x86,0xf3]
452
453@ CHECK: vmov.f32        q8, #1.000000e+00 @ encoding: [0x50,0x0f,0xc7,0xf2]
454@ CHECK: vmov.f32        q8, #1.250000e-01 @ encoding: [0x50,0x0f,0xc4,0xf2]
455@ CHECK: vmov.f32        q8, #-1.875000e+00 @ encoding: [0x5e,0x0f,0xc7,0xf3]
456@ CHECK: vmov.f32        q8, #-5.937500e-01 @ encoding: [0x53,0x0f,0xc6,0xf3]
457