filename | test/sh4/fmov.s |
changeset | 358:65043a8f5785 |
next | 732:f05753bbe723 |
author | nkeynes |
date | Thu Jan 31 09:50:41 2008 +0000 (16 years ago) |
permissions | -rw-r--r-- |
last change | Fix testsh4x86 again |
view | annotate | diff | log | raw |
1 .section .text
2 .include "sh4/inc.s"
3 !
4 ! Test fmov (all variants)
5 ! (not arithmetic)
7 .global _test_fmov
8 _test_fmov:
9 start_test
11 xor r0,r0
12 lds r0, fpscr
14 test_fmov_1: ! single precision reg-to-reg
15 add #1, r12
17 fldi0 fr0
18 fldi1 fr1
19 flds fr0, fpul
20 sts fpul, r0
21 tst r0, r0
22 bf test_fmov_1_fail
23 fmov fr1, fr0
24 flds fr0, fpul
25 sts fpul, r0
26 mov.l test_fmov_1_result, r1
27 cmp/eq r0, r1
28 bt test_fmov_2
29 test_fmov_1_fail:
30 fail test_fmov_str_k
31 bra test_fmov_2
32 nop
34 test_fmov_1_result:
35 .long 0x3F800000
37 test_fmov_2: ! reg-to-reg double prec
38 add #1, r12
39 mov.l test_fmov_2_input_a, r1
40 lds r1, fpul
41 fsts fpul, fr4
42 mov.l test_fmov_2_input_b, r3
43 lds r3, fpul
44 fsts fpul, fr5
45 fldi0 fr8
46 fldi0 fr9
47 fschg
48 flds fr8, fpul
49 sts fpul, r0
50 tst r0, r0
51 bf test_fmov_2_fail
52 flds fr9, fpul
53 sts fpul, r0
54 tst r0, r0
55 bf test_fmov_2_fail
56 fmov fr4, fr8
57 flds fr8, fpul
58 sts fpul, r0
59 flds fr9, fpul
60 sts fpul, r2
61 cmp/eq r0, r1
62 bf test_fmov_2_fail
63 cmp/eq r2, r3
64 bt test_fmov_3
65 test_fmov_2_fail:
66 fail test_fmov_str_k
67 bra test_fmov_3
68 nop
69 test_fmov_2_input_a:
70 .long 0x12345678
71 test_fmov_2_input_b:
72 .long 0x9ABCDEF0
74 test_fmov_3: ! double size DRm to XDn
75 add #1, r12
76 frchg
77 fldi0 fr8
78 fldi0 fr9
79 frchg
80 fldi0 fr8
81 fldi0 fr9
82 mov.l test_fmov_3_input_a, r2
83 lds r2, fpul
84 fsts fpul, fr2
85 mov.l test_fmov_3_input_b, r3
86 lds r3, fpul
87 fsts fpul, fr3
89 fmov fr2, fr9
90 flds fr8, fpul
91 sts fpul, r0
92 flds fr9, fpul
93 sts fpul, r1
94 tst r0, r0
95 bf test_fmov_3_fail
96 tst r1, r1
97 bf test_fmov_3_fail
98 frchg
99 flds fr8, fpul
100 sts fpul, r0
101 flds fr9, fpul
102 sts fpul, r1
103 cmp/eq r0, r2
104 bf test_fmov_3_fail
105 cmp/eq r1, r3
106 bt test_fmov_4
108 test_fmov_3_fail:
109 fail test_fmov_str_k
110 bra test_fmov_4
111 nop
113 test_fmov_3_input_a:
114 .long 0x86421357
115 test_fmov_3_input_b:
116 .long 0x97532468
118 test_fmov_4: ! double size XDm to DRn
119 add #1, r12
120 mov.l test_fmov_4_input_a, r2
121 lds r2, fpul
122 fsts fpul, fr6
123 mov.l test_fmov_4_input_b, r3
124 lds r3, fpul
125 fsts fpul, fr7
126 fldi0 fr0
127 fldi0 fr1
128 frchg
129 fldi0 fr6
130 fldi0 fr7
132 fmov fr7, fr0
133 flds fr0, fpul
134 sts fpul, r0
135 flds fr1, fpul
136 sts fpul, r1
137 cmp/eq r0, r2
138 bf test_fmov_4_fail
139 cmp/eq r1, r3
140 bf test_fmov_4_fail
141 frchg
142 flds fr0, fpul
143 sts fpul, r0
144 flds fr1, fpul
145 sts fpul, r1
146 tst r0, r0
147 bf test_fmov_4_fail
148 tst r1, r1
149 bt test_fmov_5
151 test_fmov_4_fail:
152 fail test_fmov_str_k
153 bra test_fmov_5
154 nop
156 test_fmov_4_input_a:
157 .long 0xACADACA0
158 test_fmov_4_input_b:
159 .long 0x12233445
162 test_fmov_5: ! double size @Rm to DRn, DRm to @Rn
163 add #1, r12
164 mova test_fmov_5_data_a, r0
165 mov r0, r4
166 xor r1, r1
167 mov.l r1, @r0
168 add #4, r0
169 mov.l r1, @r0
170 mova test_fmov_5_input_a, r0
171 fmov @r0, fr8
172 mov.l test_fmov_5_input_a, r0
173 mov.l test_fmov_5_input_b, r1
174 flds fr8, fpul
175 sts fpul, r5
176 flds fr9, fpul
177 sts fpul, r6
178 cmp/eq r0, r5
179 bf test_fmov_5_fail
180 cmp/eq r1, r6
181 bf test_fmov_5_fail
182 fmov fr8, @r4
183 mov.l test_fmov_5_data_a, r2
184 mov.l test_fmov_5_data_b, r3
185 cmp/eq r0, r2
186 bf test_fmov_5_fail
187 cmp/eq r1, r3
188 bt test_fmov_6
189 test_fmov_5_fail:
190 fail test_fmov_str_k
191 bra test_fmov_6
192 nop
194 test_fmov_5_input_a:
195 .long 0xFEEDBEEF
196 test_fmov_5_input_b:
197 .long 0xDEAD1234
198 test_fmov_5_data_a:
199 .long 0
200 test_fmov_5_data_b:
201 .long 0
203 test_fmov_6: ! double size @Rm+ to DRn, DRm to @-Rn
204 add #1, r12
205 mova test_fmov_6_data_a, r0
206 mov r0, r4
207 xor r1, r1
208 mov.l r1, @r4
209 add #4, r4
210 mov.l r1, @r4
211 add #4, r4
212 mova test_fmov_6_input_a, r0
213 mov r0, r7
214 fmov @r7+, fr10
215 mov.l test_fmov_6_input_a, r0
216 mov.l test_fmov_6_input_b, r1
217 flds fr10, fpul
218 sts fpul, r5
219 flds fr11, fpul
220 sts fpul, r6
221 cmp/eq r0, r5
222 bf test_fmov_6_fail
223 cmp/eq r1, r6
224 bf test_fmov_6_fail
225 fmov fr10, @-r4
226 mov.l test_fmov_6_data_a, r2
227 mov.l test_fmov_6_data_b, r3
228 cmp/eq r0, r2
229 bf test_fmov_6_fail
230 cmp/eq r1, r3
231 bf test_fmov_6_fail
232 mova test_fmov_6_data_a, r0
233 cmp/eq r0, r4
234 bf test_fmov_6_fail
235 cmp/eq r0, r7
236 bt test_fmov_7
237 test_fmov_6_fail:
238 fail test_fmov_str_k
239 bra test_fmov_7
240 nop
242 test_fmov_6_input_a:
243 .long 0x42318576
244 test_fmov_6_input_b:
245 .long 0xF0AFD34F
246 test_fmov_6_data_a:
247 .long 0
248 test_fmov_6_data_b:
249 .long 0
251 test_fmov_7: ! double size @Rm,@R0 to DRn, DRm to @Rn,@R0
252 add #1, r12
253 mova test_fmov_7_data_a, r0
254 mov r0, r4
255 xor r1, r1
256 mov.l r1, @r4
257 add #4, r4
258 mov.l r1, @r4
259 add #48, r4
260 mova test_fmov_7_input_a, r0
261 mov r0, r7
262 xor r0, r0
263 add #-31, r7
264 add #31, r0
265 fmov @(r0,r7), fr10
266 mov.l test_fmov_7_input_a, r0
267 mov.l test_fmov_7_input_b, r1
268 flds fr10, fpul
269 sts fpul, r5
270 flds fr11, fpul
271 sts fpul, r6
272 cmp/eq r0, r5
273 bf test_fmov_7_fail
274 cmp/eq r1, r6
275 bf test_fmov_7_fail
276 xor r0, r0
277 add #-52, r0
278 fmov fr10, @(r0,r4)
279 mov.l test_fmov_7_input_a, r0
280 mov.l test_fmov_7_data_a, r2
281 mov.l test_fmov_7_data_b, r3
282 cmp/eq r0, r2
283 bf test_fmov_7_fail
284 cmp/eq r1, r3
285 bf test_fmov_7_fail
286 mova test_fmov_7_data_a, r0
287 add #52, r0
288 cmp/eq r0, r4
289 bf test_fmov_7_fail
290 mova test_fmov_7_input_a, r0
291 add #-31, r0
292 cmp/eq r0, r7
293 bt test_fmov_8
294 test_fmov_7_fail:
295 fail test_fmov_str_k
296 bra test_fmov_8
297 nop
299 test_fmov_7_input_a:
300 .long 0xABBACADA
301 test_fmov_7_input_b:
302 .long 0x43546576
303 test_fmov_7_data_a:
304 .long 0
305 test_fmov_7_data_b:
306 .long 0
308 test_fmov_8:
310 test_fmov_end:
311 xor r0, r0
312 lds r0, fpscr
313 end_test test_fmov_str_k
315 test_fmov_str:
316 .string "FMOV"
318 .align 4
319 test_fmov_str_k:
320 .long test_fmov_str
.