This commit was generated by cvs2svn to track changes on a CVS vendor
[deliverable/binutils-gdb.git] / gas / testsuite / gas / arm / vfp1_t2.s
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.
11
12 @ Comparison operations
13
14 fcmped d0, d0
15 fcmpezd d0
16 fcmpd d0, d0
17 fcmpzd d0
18
19 @ Monadic data operations
20
21 fabsd d0, d0
22 fcpyd d0, d0
23 fnegd d0, d0
24 fsqrtd d0, d0
25
26 @ Dyadic data operations
27
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
37
38 @ Load/store operations
39
40 fldd d0, [r0]
41 fstd d0, [r0]
42
43 @ Load/store multiple operations
44
45 fldmiad r0, {d0}
46 fldmfdd r0, {d0}
47 fldmiad r0!, {d0}
48 fldmfdd r0!, {d0}
49 fldmdbd r0!, {d0}
50 fldmead r0!, {d0}
51
52 fstmiad r0, {d0}
53 fstmead r0, {d0}
54 fstmiad r0!, {d0}
55 fstmead r0!, {d0}
56 fstmdbd r0!, {d0}
57 fstmfdd r0!, {d0}
58
59 @ Conversion operations
60
61 fsitod d0, s0
62 fuitod d0, s0
63
64 ftosid s0, d0
65 ftosizd s0, d0
66 ftouid s0, d0
67 ftouizd s0, d0
68
69 fcvtds d0, s0
70 fcvtsd s0, d0
71
72 @ ARM from VFP operations
73
74 fmrdh r0, d0
75 fmrdl r0, d0
76
77 @ VFP From ARM operations
78
79 fmdhr d0, r0
80 fmdlr d0, r0
81
82 @ Now we test that the register fields are updated correctly for
83 @ each class of instruction.
84
85 @ Single register operations (compare-zero):
86
87 fcmpzd d1
88 fcmpzd d2
89 fcmpzd d15
90
91 @ Two register comparison operations:
92
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
100
101 @ Two register data operations (monadic)
102
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
110
111 @ Three register data operations (dyadic)
112
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
123
124 @ Conversion operations
125
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
138
139 @ Move to VFP from ARM
140
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
151
152 @ Move to ARM from VFP
153
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
164
165 @ Load/store operations
166
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]
176
177 @ Load/store multiple operations
178
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}
190
191 @ Check that we assemble all the register names correctly
192
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
209
210 @ Now we check the placement of the conditional execution substring.
211 @ On VFP this is always at the end of the instruction.
212
213 @ Comparison operations
214
215 itttt eq
216 fcmpedeq d1, d15
217 fcmpezdeq d2
218 fcmpdeq d3, d14
219 fcmpzdeq d4
220
221 @ Monadic data operations
222
223 itttt eq
224 fabsdeq d5, d13
225 fcpydeq d6, d12
226 fnegdeq d7, d11
227 fsqrtdeq d8, d10
228
229 @ Dyadic data operations
230
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
243
244 @ Load/store operations
245
246 flddeq d2, [r5]
247 fstdeq d1, [r12]
248
249 @ Load/store multiple operations
250
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}
259
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}
267
268 @ Conversion operations
269
270 itttt eq
271 fsitodeq d15, s1
272 fuitodeq d1, s31
273
274 ftosideq s1, d15
275 ftosizdeq s31, d2
276 itttt eq
277 ftouideq s15, d2
278 ftouizdeq s11, d3
279
280 fcvtdseq d1, s10
281 fcvtsdeq s11, d1
282
283 @ ARM from VFP operations
284
285 itttt eq
286 fmrdheq r8, d1
287 fmrdleq r7, d15
288
289 @ VFP From ARM operations
290
291 fmdhreq d1, r15
292 fmdlreq d15, r1
293
294 # Add three nop instructions to ensure that the
295 # output is 32-byte aligned as required for arm-aout.
296 nop
297 nop
298 nop
This page took 0.037072 seconds and 4 git commands to generate.