* elf32-spu.c (build_stub): Fix malloc under-allocation.
[binutils.git] / gas / testsuite / gas / arm / vfp1_t2.s
blobdd596cb56913cdd1c277c4f1fd6dbbe2a6e9ae53
1 @ VFP Instructions for D variants (Double precision)
2 @ Same as vfp1.s, but for Thumb-2
3 .syntax unified
4 .thumb
5 .text
6 .global F
7 F:
8 @ First we test the basic syntax and bit patterns of the opcodes.
9 @ Most of these tests deliberatly use d0/r0 to avoid setting
10 @ any more bits than necessary.
12 @ Comparison operations
14 fcmped d0, d0
15 fcmpezd d0
16 fcmpd d0, d0
17 fcmpzd d0
19 @ Monadic data operations
21 fabsd d0, d0
22 fcpyd d0, d0
23 fnegd d0, d0
24 fsqrtd d0, d0
26 @ Dyadic data operations
28 faddd d0, d0, d0
29 fdivd d0, d0, d0
30 fmacd d0, d0, d0
31 fmscd d0, d0, d0
32 fmuld d0, d0, d0
33 fnmacd d0, d0, d0
34 fnmscd d0, d0, d0
35 fnmuld d0, d0, d0
36 fsubd d0, d0, d0
38 @ Load/store operations
40 fldd d0, [r0]
41 fstd d0, [r0]
43 @ Load/store multiple operations
45 fldmiad r0, {d0}
46 fldmfdd r0, {d0}
47 fldmiad r0!, {d0}
48 fldmfdd r0!, {d0}
49 fldmdbd r0!, {d0}
50 fldmead r0!, {d0}
52 fstmiad r0, {d0}
53 fstmead r0, {d0}
54 fstmiad r0!, {d0}
55 fstmead r0!, {d0}
56 fstmdbd r0!, {d0}
57 fstmfdd r0!, {d0}
59 @ Conversion operations
61 fsitod d0, s0
62 fuitod d0, s0
64 ftosid s0, d0
65 ftosizd s0, d0
66 ftouid s0, d0
67 ftouizd s0, d0
69 fcvtds d0, s0
70 fcvtsd s0, d0
72 @ ARM from VFP operations
74 fmrdh r0, d0
75 fmrdl r0, d0
77 @ VFP From ARM operations
79 fmdhr d0, r0
80 fmdlr d0, r0
82 @ Now we test that the register fields are updated correctly for
83 @ each class of instruction.
85 @ Single register operations (compare-zero):
87 fcmpzd d1
88 fcmpzd d2
89 fcmpzd d15
91 @ Two register comparison operations:
93 fcmpd d0, d1
94 fcmpd d0, d2
95 fcmpd d0, d15
96 fcmpd d1, d0
97 fcmpd d2, d0
98 fcmpd d15, d0
99 fcmpd d5, d12
101 @ Two register data operations (monadic)
103 fnegd d0, d1
104 fnegd d0, d2
105 fnegd d0, d15
106 fnegd d1, d0
107 fnegd d2, d0
108 fnegd d15, d0
109 fnegd d12, d5
111 @ Three register data operations (dyadic)
113 faddd d0, d0, d1
114 faddd d0, d0, d2
115 faddd d0, d0, d15
116 faddd d0, d1, d0
117 faddd d0, d2, d0
118 faddd d0, d15, d0
119 faddd d1, d0, d0
120 faddd d2, d0, d0
121 faddd d15, d0, d0
122 faddd d12, d9, d5
124 @ Conversion operations
126 fcvtds d0, s1
127 fcvtds d0, s2
128 fcvtds d0, s31
129 fcvtds d1, s0
130 fcvtds d2, s0
131 fcvtds d15, s0
132 fcvtsd s1, d0
133 fcvtsd s2, d0
134 fcvtsd s31, d0
135 fcvtsd s0, d1
136 fcvtsd s0, d2
137 fcvtsd s0, d15
139 @ Move to VFP from ARM
141 fmrdh r1, d0
142 fmrdh r14, d0
143 fmrdh r0, d1
144 fmrdh r0, d2
145 fmrdh r0, d15
146 fmrdl r1, d0
147 fmrdl r14, d0
148 fmrdl r0, d1
149 fmrdl r0, d2
150 fmrdl r0, d15
152 @ Move to ARM from VFP
154 fmdhr d0, r1
155 fmdhr d0, r14
156 fmdhr d1, r0
157 fmdhr d2, r0
158 fmdhr d15, r0
159 fmdlr d0, r1
160 fmdlr d0, r14
161 fmdlr d1, r0
162 fmdlr d2, r0
163 fmdlr d15, r0
165 @ Load/store operations
167 fldd d0, [r1]
168 fldd d0, [r14]
169 fldd d0, [r0, #0]
170 fldd d0, [r0, #1020]
171 fldd d0, [r0, #-1020]
172 fldd d1, [r0]
173 fldd d2, [r0]
174 fldd d15, [r0]
175 fstd d12, [r12, #804]
177 @ Load/store multiple operations
179 fldmiad r0, {d1}
180 fldmiad r0, {d2}
181 fldmiad r0, {d15}
182 fldmiad r0, {d0-d1}
183 fldmiad r0, {d0-d2}
184 fldmiad r0, {d0-d15}
185 fldmiad r0, {d1-d15}
186 fldmiad r0, {d2-d15}
187 fldmiad r0, {d14-d15}
188 fldmiad r1, {d0}
189 fldmiad r14, {d0}
191 @ Check that we assemble all the register names correctly
193 fcmpzd d0
194 fcmpzd d1
195 fcmpzd d2
196 fcmpzd d3
197 fcmpzd d4
198 fcmpzd d5
199 fcmpzd d6
200 fcmpzd d7
201 fcmpzd d8
202 fcmpzd d9
203 fcmpzd d10
204 fcmpzd d11
205 fcmpzd d12
206 fcmpzd d13
207 fcmpzd d14
208 fcmpzd d15
210 @ Now we check the placement of the conditional execution substring.
211 @ On VFP this is always at the end of the instruction.
213 @ Comparison operations
215 itttt eq
216 fcmpedeq d1, d15
217 fcmpezdeq d2
218 fcmpdeq d3, d14
219 fcmpzdeq d4
221 @ Monadic data operations
223 itttt eq
224 fabsdeq d5, d13
225 fcpydeq d6, d12
226 fnegdeq d7, d11
227 fsqrtdeq d8, d10
229 @ Dyadic data operations
231 itttt eq
232 fadddeq d9, d1, d15
233 fdivdeq d2, d3, d14
234 fmacdeq d4, d13, d12
235 fmscdeq d5, d6, d11
236 itttt eq
237 fmuldeq d7, d10, d9
238 fnmacdeq d8, d9, d10
239 fnmscdeq d7, d6, d11
240 fnmuldeq d5, d4, d12
241 ittt eq
242 fsubdeq d3, d13, d14
244 @ Load/store operations
246 flddeq d2, [r5]
247 fstdeq d1, [r12]
249 @ Load/store multiple operations
251 itttt eq
252 fldmiadeq r1, {d1}
253 fldmfddeq r2, {d2}
254 fldmiadeq r3!, {d3}
255 fldmfddeq r4!, {d4}
256 itttt eq
257 fldmdbdeq r5!, {d5}
258 fldmeadeq r6!, {d6}
260 fstmiadeq r7, {d15}
261 fstmeadeq r8, {d14}
262 itttt eq
263 fstmiadeq r9!, {d13}
264 fstmeadeq r10!, {d12}
265 fstmdbdeq r11!, {d11}
266 fstmfddeq r12!, {d10}
268 @ Conversion operations
270 itttt eq
271 fsitodeq d15, s1
272 fuitodeq d1, s31
274 ftosideq s1, d15
275 ftosizdeq s31, d2
276 itttt eq
277 ftouideq s15, d2
278 ftouizdeq s11, d3
280 fcvtdseq d1, s10
281 fcvtsdeq s11, d1
283 @ ARM from VFP operations
285 itttt eq
286 fmrdheq r8, d1
287 fmrdleq r7, d15
289 @ VFP From ARM operations
291 fmdhreq d1, r15
292 fmdlreq d15, r1
294 # Add three nop instructions to ensure that the
295 # output is 32-byte aligned as required for arm-aout.