Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / diag / assembly / exu / fp_movixcc2_n2.s
CommitLineData
86530b38
AT
1/*
2* ========== Copyright Header Begin ==========================================
3*
4* OpenSPARC T2 Processor File: fp_movixcc2_n2.s
5* Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
6* 4150 Network Circle, Santa Clara, California 95054, U.S.A.
7*
8* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
9*
10* This program is free software; you can redistribute it and/or modify
11* it under the terms of the GNU General Public License as published by
12* the Free Software Foundation; version 2 of the License.
13*
14* This program is distributed in the hope that it will be useful,
15* but WITHOUT ANY WARRANTY; without even the implied warranty of
16* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17* GNU General Public License for more details.
18*
19* You should have received a copy of the GNU General Public License
20* along with this program; if not, write to the Free Software
21* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22*
23* For the avoidance of doubt, and except that if any non-GPL license
24* choice is available it will apply instead, Sun elects to use only
25* the General Public License version 2 (GPLv2) at this time for any
26* software where a choice of GPL license versions is made
27* available with the language indicating that GPLv2 or any later version
28* may be used, or where a choice of which version of the GPL is applied is
29* otherwise unspecified.
30*
31* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
32* CA 95054 USA or visit www.sun.com if you need additional information or
33* have any questions.
34*
35*
36* ========== Copyright Header End ============================================
37*/
38#define ENABLE_T0_Fp_disabled_0x20
39
40#define MAIN_PAGE_HV_ALSO
41#define MAIN_PAGE_NUCLEUS_ALSO
42
43#include "hboot.s"
44
45.global sam_fast_immu_miss
46.global sam_fast_dmmu_miss
47
48.text
49.global main
50
51main:
52
53 wr %g0, 0x4, %fprs /* make sure fef is 1 */
54
55 setx scratch, %l0, %l5 ! scratch
56
57/*******************************************************
58 * Simple conversion
59 *******************************************************/
60
61 ! write all 0s to ccr
62
63 wr %g0, 0x0, %ccr
64
65 ! Test quads
66
67
68 setx ddata1, %l0, %l6 ! dp
69
70 ldd [%l6+0x0], %f0 ! double precision
71 ldd [%l6+0x8], %f4 ! double precision
72
73 ! Depending on CCR
74
75 set 0x2, %g1 ! Max loop count
76 set 0x0, %g2
77
78ccr_loop:
79
80 brz,a %g2, tgt1
81 wr %g0, 0x0, %ccr
82 wr %g0, 0xff, %ccr
83
84tgt1:
85
86 ! dp, icc
87
88 setx ddata1, %l0, %l2 ! Non zero data with different data in f0 and f1
89 ldd [%l2+0x8], %f0
90
91 ldd [%l2+0x0], %f2 !
92 fmovda %icc, %f0, %f2 !
93 std %f2, [%l5+0x0]
94 nop; nop;
95 ldx [%l5+0x0], %g5
96 ldd [%l2+0x0], %f2 !
97 fmovdn %icc, %f0, %f2 !
98 std %f2, [%l5+0x0]
99 nop; nop;
100 ldx [%l5+0x0], %g5
101 ldd [%l2+0x0], %f2 !
102 fmovdne %icc, %f0, %f2 !
103 std %f2, [%l5+0x0]
104 nop; nop;
105 ldx [%l5+0x0], %g5
106 ldd [%l2+0x0], %f2 !
107 fmovde %icc, %f0, %f2 !
108 std %f2, [%l5+0x0]
109 nop; nop;
110 ldx [%l5+0x0], %g5
111 ldd [%l2+0x0], %f2 !
112 fmovdg %icc, %f0, %f2 !
113 std %f2, [%l5+0x0]
114 nop; nop;
115 ldx [%l5+0x0], %g5
116 ldd [%l2+0x0], %f2 !
117 fmovdle %icc, %f0, %f2 !
118 std %f2, [%l5+0x0]
119 nop; nop;
120 ldx [%l5+0x0], %g5
121 ldd [%l2+0x0], %f2 !
122 fmovdge %icc, %f0, %f2 !
123 std %f2, [%l5+0x0]
124 nop; nop;
125 ldx [%l5+0x0], %g5
126 ldd [%l2+0x0], %f2 !
127 fmovdl %icc, %f0, %f2 !
128 std %f2, [%l5+0x0]
129 nop; nop;
130 ldx [%l5+0x0], %g5
131 ldd [%l2+0x0], %f2 !
132 fmovdgu %icc, %f0, %f2 !
133 std %f2, [%l5+0x0]
134 nop; nop;
135 ldx [%l5+0x0], %g5
136 ldd [%l2+0x0], %f2 !
137 fmovdleu %icc, %f0, %f2 !
138 std %f2, [%l5+0x0]
139 nop; nop;
140 ldx [%l5+0x0], %g5
141 ldd [%l2+0x0], %f2 !
142 fmovdcc %icc, %f0, %f2 !
143 std %f2, [%l5+0x0]
144 nop; nop;
145 ldx [%l5+0x0], %g5
146 ldd [%l2+0x0], %f2 !
147 fmovdcs %icc, %f0, %f2 !
148 std %f2, [%l5+0x0]
149 nop; nop;
150 ldx [%l5+0x0], %g5
151 ldd [%l2+0x0], %f2 !
152 fmovdpos %icc, %f0, %f2 !
153 std %f2, [%l5+0x0]
154 nop; nop;
155 ldx [%l5+0x0], %g5
156 ldd [%l2+0x0], %f2 !
157 fmovdneg %icc, %f0, %f2 !
158 std %f2, [%l5+0x0]
159 nop; nop;
160 ldx [%l5+0x0], %g5
161 ldd [%l2+0x0], %f2 !
162 fmovdvc %icc, %f0, %f2 !
163 std %f2, [%l5+0x0]
164 nop; nop;
165 ldx [%l5+0x0], %g5
166 ldd [%l2+0x0], %f2 !
167 fmovdvs %icc, %f0, %f2 !
168 std %f2, [%l5+0x0]
169 nop; nop;
170 ldx [%l5+0x0], %g5
171 ldd [%l2+0x0], %f2 !
172
173 ! dp xcc
174
175 ldd [%l2+0x8], %f0
176
177 ldd [%l2+0x0], %f2 !
178 fmovda %xcc, %f0, %f2 !
179 std %f2, [%l5+0x0]
180 nop; nop;
181 ldx [%l5+0x0], %g5
182 ldd [%l2+0x0], %f2 !
183 fmovdn %xcc, %f0, %f2 !
184 std %f2, [%l5+0x0]
185 nop; nop;
186 ldx [%l5+0x0], %g5
187 ldd [%l2+0x0], %f2 !
188 fmovdne %xcc, %f0, %f2 !
189 std %f2, [%l5+0x0]
190 nop; nop;
191 ldx [%l5+0x0], %g5
192 ldd [%l2+0x0], %f2 !
193 fmovde %xcc, %f0, %f2 !
194 std %f2, [%l5+0x0]
195 nop; nop;
196 ldx [%l5+0x0], %g5
197 ldd [%l2+0x0], %f2 !
198 fmovdg %xcc, %f0, %f2 !
199 std %f2, [%l5+0x0]
200 nop; nop;
201 ldx [%l5+0x0], %g5
202 ldd [%l2+0x0], %f2 !
203 fmovdle %xcc, %f0, %f2 !
204 std %f2, [%l5+0x0]
205 nop; nop;
206 ldx [%l5+0x0], %g5
207 ldd [%l2+0x0], %f2 !
208 fmovdge %xcc, %f0, %f2 !
209 std %f2, [%l5+0x0]
210 nop; nop;
211 ldx [%l5+0x0], %g5
212 ldd [%l2+0x0], %f2 !
213 fmovdl %xcc, %f0, %f2 !
214 std %f2, [%l5+0x0]
215 nop; nop;
216 ldx [%l5+0x0], %g5
217 ldd [%l2+0x0], %f2 !
218 fmovdgu %xcc, %f0, %f2 !
219 std %f2, [%l5+0x0]
220 nop; nop;
221 ldx [%l5+0x0], %g5
222 ldd [%l2+0x0], %f2 !
223 fmovdleu %xcc, %f0, %f2 !
224 std %f2, [%l5+0x0]
225 nop; nop;
226 ldx [%l5+0x0], %g5
227 ldd [%l2+0x0], %f2 !
228 fmovdcc %xcc, %f0, %f2 !
229 std %f2, [%l5+0x0]
230 nop; nop;
231 ldx [%l5+0x0], %g5
232 ldd [%l2+0x0], %f2 !
233 fmovdcs %xcc, %f0, %f2 !
234 std %f2, [%l5+0x0]
235 nop; nop;
236 ldx [%l5+0x0], %g5
237 ldd [%l2+0x0], %f2 !
238 fmovdpos %xcc, %f0, %f2 !
239 std %f2, [%l5+0x0]
240 nop; nop;
241 ldx [%l5+0x0], %g5
242 ldd [%l2+0x0], %f2 !
243 fmovdneg %xcc, %f0, %f2 !
244 std %f2, [%l5+0x0]
245 nop; nop;
246 ldx [%l5+0x0], %g5
247 ldd [%l2+0x0], %f2 !
248 fmovdvc %xcc, %f0, %f2 !
249 std %f2, [%l5+0x0]
250 nop; nop;
251 ldx [%l5+0x0], %g5
252 ldd [%l2+0x0], %f2 !
253 fmovdvs %xcc, %f0, %f2 !
254 std %f2, [%l5+0x0]
255 nop; nop;
256 ldx [%l5+0x0], %g5
257 ldd [%l2+0x0], %f2 !
258
259 ! sp, icc
260
261 ldd [%l2+0x0], %f0
262 fmovsa %icc, %f0, %f1 !
263 st %f1, [%l5+0x0]
264 nop; nop;
265 ld [%l5+0x0], %g5
266 ldd [%l2+0x0], %f0 !
267 fmovsn %icc, %f0, %f1 !
268 st %f1, [%l5+0x0]
269 nop; nop;
270 ld [%l5+0x0], %g5
271 ldd [%l2+0x0], %f0 !
272 fmovsne %icc, %f0, %f1 !
273 st %f1, [%l5+0x0]
274 nop; nop;
275 ld [%l5+0x0], %g5
276 ldd [%l2+0x0], %f0 !
277 fmovse %icc, %f0, %f1 !
278 st %f1, [%l5+0x0]
279 nop; nop;
280 ld [%l5+0x0], %g5
281 ldd [%l2+0x0], %f0 !
282 fmovsg %icc, %f0, %f1 !
283 st %f1, [%l5+0x0]
284 nop; nop;
285 ld [%l5+0x0], %g5
286 ldd [%l2+0x0], %f0 !
287 fmovsle %icc, %f0, %f1 !
288 st %f1, [%l5+0x0]
289 nop; nop;
290 ld [%l5+0x0], %g5
291 ldd [%l2+0x0], %f0 !
292 fmovsge %icc, %f0, %f1 !
293 st %f1, [%l5+0x0]
294 nop; nop;
295 ld [%l5+0x0], %g5
296 ldd [%l2+0x0], %f0 !
297 fmovsl %icc, %f0, %f1 !
298 st %f1, [%l5+0x0]
299 nop; nop;
300 ld [%l5+0x0], %g5
301 ldd [%l2+0x0], %f0 !
302 fmovsgu %icc, %f0, %f1 !
303 st %f1, [%l5+0x0]
304 nop; nop;
305 ld [%l5+0x0], %g5
306 ldd [%l2+0x0], %f0 !
307 fmovsleu %icc, %f0, %f1 !
308 st %f1, [%l5+0x0]
309 nop; nop;
310 ld [%l5+0x0], %g5
311 ldd [%l2+0x0], %f0 !
312 fmovscc %icc, %f0, %f1 !
313 st %f1, [%l5+0x0]
314 nop; nop;
315 ld [%l5+0x0], %g5
316 ldd [%l2+0x0], %f0 !
317 fmovscs %icc, %f0, %f1 !
318 st %f1, [%l5+0x0]
319 nop; nop;
320 ld [%l5+0x0], %g5
321 ldd [%l2+0x0], %f0 !
322 fmovspos %icc, %f0, %f1 !
323 st %f1, [%l5+0x0]
324 nop; nop;
325 ld [%l5+0x0], %g5
326 ldd [%l2+0x0], %f0 !
327 fmovsneg %icc, %f0, %f1 !
328 st %f1, [%l5+0x0]
329 nop; nop;
330 ld [%l5+0x0], %g5
331 ldd [%l2+0x0], %f0 !
332 fmovsvc %icc, %f0, %f1 !
333 st %f1, [%l5+0x0]
334 nop; nop;
335 ld [%l5+0x0], %g5
336
337 ! sp, icc
338
339 ldd [%l2+0x0], %f0
340 fmovsa %xcc, %f0, %f1 !
341 st %f1, [%l5+0x0]
342 nop; nop;
343 ld [%l5+0x0], %g5
344 ldd [%l2+0x0], %f0 !
345 fmovsn %xcc, %f0, %f1 !
346 st %f1, [%l5+0x0]
347 nop; nop;
348 ld [%l5+0x0], %g5
349 ldd [%l2+0x0], %f0 !
350 fmovsne %xcc, %f0, %f1 !
351 st %f1, [%l5+0x0]
352 nop; nop;
353 ld [%l5+0x0], %g5
354 ldd [%l2+0x0], %f0 !
355 fmovse %xcc, %f0, %f1 !
356 st %f1, [%l5+0x0]
357 nop; nop;
358 ld [%l5+0x0], %g5
359 ldd [%l2+0x0], %f0 !
360 fmovsg %xcc, %f0, %f1 !
361 st %f1, [%l5+0x0]
362 nop; nop;
363 ld [%l5+0x0], %g5
364 ldd [%l2+0x0], %f0 !
365 fmovsle %xcc, %f0, %f1 !
366 st %f1, [%l5+0x0]
367 nop; nop;
368 ld [%l5+0x0], %g5
369 ldd [%l2+0x0], %f0 !
370 fmovsge %xcc, %f0, %f1 !
371 st %f1, [%l5+0x0]
372 nop; nop;
373 ld [%l5+0x0], %g5
374 ldd [%l2+0x0], %f0 !
375 fmovsl %xcc, %f0, %f1 !
376 st %f1, [%l5+0x0]
377 nop; nop;
378 ld [%l5+0x0], %g5
379 ldd [%l2+0x0], %f0 !
380 fmovsgu %xcc, %f0, %f1 !
381 st %f1, [%l5+0x0]
382 nop; nop;
383 ld [%l5+0x0], %g5
384 ldd [%l2+0x0], %f0 !
385 fmovsleu %xcc, %f0, %f1 !
386 st %f1, [%l5+0x0]
387 nop; nop;
388 ld [%l5+0x0], %g5
389 ldd [%l2+0x0], %f0 !
390 fmovscc %xcc, %f0, %f1 !
391 st %f1, [%l5+0x0]
392 nop; nop;
393 ld [%l5+0x0], %g5
394 ldd [%l2+0x0], %f0 !
395 fmovscs %xcc, %f0, %f1 !
396 st %f1, [%l5+0x0]
397 nop; nop;
398 ld [%l5+0x0], %g5
399 ldd [%l2+0x0], %f0 !
400 fmovspos %xcc, %f0, %f1 !
401 st %f1, [%l5+0x0]
402 nop; nop;
403 ld [%l5+0x0], %g5
404 st %f1, [%l5+0x0]
405 nop; nop;
406 ld [%l5+0x0], %g5
407 ldd [%l2+0x0], %f0 !
408 fmovsneg %xcc, %f0, %f1 !
409 st %f1, [%l5+0x0]
410 nop; nop;
411 ld [%l5+0x0], %g5
412 st %f1, [%l5+0x0]
413 nop; nop;
414 ld [%l5+0x0], %g5
415 ldd [%l2+0x0], %f0 !
416 fmovsvc %xcc, %f0, %f1 !
417 st %f1, [%l5+0x0]
418 nop; nop;
419 ld [%l5+0x0], %g5
420 st %f1, [%l5+0x0]
421 nop; nop;
422 ld [%l5+0x0], %g5
423
424 add %g2, 0x1, %g2
425 subcc %g2, %g1, %g0
426
427 bne,a ccr_loop ! If not 0, go to test more
428 nop
429
430 ! cc forwarding
431
432 setx int_data_x, %l0, %l4 !
433
434 set 0x8, %g1 ! Max loop count
435 set 0x0, %g2 ! inner loop iterator
436
437 movixcc_loop:
438
439 sll %g2, 0x2, %g3 ! Align address
440 sll %g2, 0x3, %g4 ! Align address
441
442 ldx [%l4+%g4], %l1 ! single precision
443
444 ! sp, icc
445
446 setx ddata1, %l0, %l2 ! Non zero data with different data in f0 and f1
447
448 subcc %l1, %g0, %l1
449
450 ldd [%l2+0x0], %f0
451 fmovsa %xcc, %f0, %f1 !
452 st %f1, [%l5+0x0]
453 nop; nop;
454 ld [%l5+0x0], %g5
455 ldd [%l2+0x0], %f0 !
456 fmovsn %xcc, %f0, %f1 !
457 st %f1, [%l5+0x0]
458 nop; nop;
459 ld [%l5+0x0], %g5
460 ldd [%l2+0x0], %f0 !
461 fmovsne %xcc, %f0, %f1 !
462 st %f1, [%l5+0x0]
463 nop; nop;
464 ld [%l5+0x0], %g5
465 ldd [%l2+0x0], %f0 !
466 fmovse %xcc, %f0, %f1 !
467 st %f1, [%l5+0x0]
468 nop; nop;
469 ld [%l5+0x0], %g5
470 ldd [%l2+0x0], %f0 !
471 fmovsg %xcc, %f0, %f1 !
472 st %f1, [%l5+0x0]
473 nop; nop;
474 ld [%l5+0x0], %g5
475 ldd [%l2+0x0], %f0 !
476 fmovsle %xcc, %f0, %f1 !
477 st %f1, [%l5+0x0]
478 nop; nop;
479 ld [%l5+0x0], %g5
480 ldd [%l2+0x0], %f0 !
481 fmovsge %xcc, %f0, %f1 !
482 st %f1, [%l5+0x0]
483 nop; nop;
484 ld [%l5+0x0], %g5
485 ldd [%l2+0x0], %f0 !
486 fmovsl %icc, %f0, %f1 !
487 st %f1, [%l5+0x0]
488 nop; nop;
489 ld [%l5+0x0], %g5
490 ldd [%l2+0x0], %f0 !
491 fmovsgu %icc, %f0, %f1 !
492 st %f1, [%l5+0x0]
493 nop; nop;
494 ld [%l5+0x0], %g5
495 ldd [%l2+0x0], %f0 !
496 fmovsleu %icc, %f0, %f1 !
497 st %f1, [%l5+0x0]
498 nop; nop;
499 ld [%l5+0x0], %g5
500 ldd [%l2+0x0], %f0 !
501 fmovscc %icc, %f0, %f1 !
502 st %f1, [%l5+0x0]
503 nop; nop;
504 ld [%l5+0x0], %g5
505 ldd [%l2+0x0], %f0 !
506 fmovscs %icc, %f0, %f1 !
507 st %f1, [%l5+0x0]
508 nop; nop;
509 ld [%l5+0x0], %g5
510 ldd [%l2+0x0], %f0 !
511 fmovspos %icc, %f0, %f1 !
512 st %f1, [%l5+0x0]
513 nop; nop;
514 ld [%l5+0x0], %g5
515 ldd [%l2+0x0], %f0 !
516 fmovsneg %icc, %f0, %f1 !
517 st %f1, [%l5+0x0]
518 nop; nop;
519 ld [%l5+0x0], %g5
520 ldd [%l2+0x0], %f0 !
521 fmovsvc %icc, %f0, %f1 !
522 st %f1, [%l5+0x0]
523 nop; nop;
524 ld [%l5+0x0], %g5
525
526 add %g2, 0x1, %g2
527 subcc %g2, %g1, %g0
528
529 bne,a movixcc_loop ! If not 0, go to test more
530 nop
531
532/*******************************************************
533 * Exit code
534 *******************************************************/
535
536test_pass:
537 ta T_GOOD_TRAP
538
539test_fail:
540 ta T_BAD_TRAP
541
542/*******************************************************
543 * Data section
544 *******************************************************/
545
546.data
547
548data1:
549 .word 0x3f800000
550 .word 0x00000000
551 .word 0xbf800000
552 .word 0x80000000
553
554.align 128
555
556ddata1:
557 .xword 0x800fffffffffffff
558 .xword 0x800f000000000000
559
560.align 128
561
562int_data_x:
563 .xword 0x0000000000000000 ! 0
564 .xword 0x0000000000000001 ! 1
565 .xword 0x7fffffffffffffff !
566 .xword 0xffffffffffffffff !
567 .xword 0xaaaaaaaaaaaaaaaa ! 0
568 .xword 0x5555555555555555 ! 1
569 .xword 0x4000000000000000 !
570 .xword 0x8000000000000000 !
571
572int_data_i:
573 .word 0x00000000 ! 0
574 .word 0x00000001 ! 1
575 .word 0x7fffffff !
576 .word 0xffffffff !
577 .word 0xaaaaaaaa !
578 .word 0x55555555 !
579 .word 0x40000000 !
580 .word 0x80000000 !
581
582.align 256
583
584fsr_tem_en:
585 .word 0x0f800000 ! TEM - all enabled - rd 0
586 .word 0x4f800000 ! TEM - all enabled - rd 1
587 .word 0x8f800000 ! TEM - all enabled - rd 2
588 .word 0xcf800000 ! TEM - all enabled - rd 3
589
590fsr_tem_dis:
591 .word 0x00000000 ! TEM - all disabled
592
593.align 128
594
595scratch:
596 .word 0x00000000
597 .word 0x00000000
598 .word 0x00000000
599 .word 0x00000000
600 .word 0x00000000
601 .word 0x00000000
602 .word 0x00000000
603 .word 0x00000000