Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / diag / assembly / exu / fp_movixcc1_n2.s
CommitLineData
86530b38
AT
1/*
2* ========== Copyright Header Begin ==========================================
3*
4* OpenSPARC T2 Processor File: fp_movixcc1_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 ldx [%l5+0x0], %g5
95 ldd [%l2+0x0], %f2 !
96 fmovdn %icc, %f0, %f2 !
97 std %f2, [%l5+0x0]
98 ldx [%l5+0x0], %g5
99 ldd [%l2+0x0], %f2 !
100 fmovdne %icc, %f0, %f2 !
101 std %f2, [%l5+0x0]
102 ldx [%l5+0x0], %g5
103 ldd [%l2+0x0], %f2 !
104 fmovde %icc, %f0, %f2 !
105 std %f2, [%l5+0x0]
106 ldx [%l5+0x0], %g5
107 ldd [%l2+0x0], %f2 !
108 fmovdg %icc, %f0, %f2 !
109 std %f2, [%l5+0x0]
110 ldx [%l5+0x0], %g5
111 ldd [%l2+0x0], %f2 !
112 fmovdle %icc, %f0, %f2 !
113 std %f2, [%l5+0x0]
114 ldx [%l5+0x0], %g5
115 ldd [%l2+0x0], %f2 !
116 fmovdge %icc, %f0, %f2 !
117 std %f2, [%l5+0x0]
118 ldx [%l5+0x0], %g5
119 ldd [%l2+0x0], %f2 !
120 fmovdl %icc, %f0, %f2 !
121 std %f2, [%l5+0x0]
122 ldx [%l5+0x0], %g5
123 ldd [%l2+0x0], %f2 !
124 fmovdgu %icc, %f0, %f2 !
125 std %f2, [%l5+0x0]
126 ldx [%l5+0x0], %g5
127 ldd [%l2+0x0], %f2 !
128 fmovdleu %icc, %f0, %f2 !
129 std %f2, [%l5+0x0]
130 ldx [%l5+0x0], %g5
131 ldd [%l2+0x0], %f2 !
132 fmovdcc %icc, %f0, %f2 !
133 std %f2, [%l5+0x0]
134 ldx [%l5+0x0], %g5
135 ldd [%l2+0x0], %f2 !
136 fmovdcs %icc, %f0, %f2 !
137 std %f2, [%l5+0x0]
138 ldx [%l5+0x0], %g5
139 ldd [%l2+0x0], %f2 !
140 fmovdpos %icc, %f0, %f2 !
141 std %f2, [%l5+0x0]
142 ldx [%l5+0x0], %g5
143 ldd [%l2+0x0], %f2 !
144 fmovdneg %icc, %f0, %f2 !
145 std %f2, [%l5+0x0]
146 ldx [%l5+0x0], %g5
147 ldd [%l2+0x0], %f2 !
148 fmovdvc %icc, %f0, %f2 !
149 std %f2, [%l5+0x0]
150 ldx [%l5+0x0], %g5
151 ldd [%l2+0x0], %f2 !
152 fmovdvs %icc, %f0, %f2 !
153 std %f2, [%l5+0x0]
154 ldx [%l5+0x0], %g5
155 ldd [%l2+0x0], %f2 !
156
157 ! dp xcc
158
159 ldd [%l2+0x8], %f0
160
161 ldd [%l2+0x0], %f2 !
162 fmovda %xcc, %f0, %f2 !
163 std %f2, [%l5+0x0]
164 ldx [%l5+0x0], %g5
165 ldd [%l2+0x0], %f2 !
166 fmovdn %xcc, %f0, %f2 !
167 std %f2, [%l5+0x0]
168 ldx [%l5+0x0], %g5
169 ldd [%l2+0x0], %f2 !
170 fmovdne %xcc, %f0, %f2 !
171 std %f2, [%l5+0x0]
172 ldx [%l5+0x0], %g5
173 ldd [%l2+0x0], %f2 !
174 fmovde %xcc, %f0, %f2 !
175 std %f2, [%l5+0x0]
176 ldx [%l5+0x0], %g5
177 ldd [%l2+0x0], %f2 !
178 fmovdg %xcc, %f0, %f2 !
179 std %f2, [%l5+0x0]
180 ldx [%l5+0x0], %g5
181 ldd [%l2+0x0], %f2 !
182 fmovdle %xcc, %f0, %f2 !
183 std %f2, [%l5+0x0]
184 ldx [%l5+0x0], %g5
185 ldd [%l2+0x0], %f2 !
186 fmovdge %xcc, %f0, %f2 !
187 std %f2, [%l5+0x0]
188 ldx [%l5+0x0], %g5
189 ldd [%l2+0x0], %f2 !
190 fmovdl %xcc, %f0, %f2 !
191 std %f2, [%l5+0x0]
192 ldx [%l5+0x0], %g5
193 ldd [%l2+0x0], %f2 !
194 fmovdgu %xcc, %f0, %f2 !
195 std %f2, [%l5+0x0]
196 ldx [%l5+0x0], %g5
197 ldd [%l2+0x0], %f2 !
198 fmovdleu %xcc, %f0, %f2 !
199 std %f2, [%l5+0x0]
200 ldx [%l5+0x0], %g5
201 ldd [%l2+0x0], %f2 !
202 fmovdcc %xcc, %f0, %f2 !
203 std %f2, [%l5+0x0]
204 ldx [%l5+0x0], %g5
205 ldd [%l2+0x0], %f2 !
206 fmovdcs %xcc, %f0, %f2 !
207 std %f2, [%l5+0x0]
208 ldx [%l5+0x0], %g5
209 ldd [%l2+0x0], %f2 !
210 fmovdpos %xcc, %f0, %f2 !
211 std %f2, [%l5+0x0]
212 ldx [%l5+0x0], %g5
213 ldd [%l2+0x0], %f2 !
214 fmovdneg %xcc, %f0, %f2 !
215 std %f2, [%l5+0x0]
216 ldx [%l5+0x0], %g5
217 ldd [%l2+0x0], %f2 !
218 fmovdvc %xcc, %f0, %f2 !
219 std %f2, [%l5+0x0]
220 ldx [%l5+0x0], %g5
221 ldd [%l2+0x0], %f2 !
222 fmovdvs %xcc, %f0, %f2 !
223 std %f2, [%l5+0x0]
224 ldx [%l5+0x0], %g5
225 ldd [%l2+0x0], %f2 !
226
227 ! sp, icc
228
229 ldd [%l2+0x0], %f0
230 fmovsa %icc, %f0, %f1 !
231 st %f1, [%l5+0x0]
232 ld [%l5+0x0], %g5
233 ldd [%l2+0x0], %f0 !
234 fmovsn %icc, %f0, %f1 !
235 st %f1, [%l5+0x0]
236 ld [%l5+0x0], %g5
237 ldd [%l2+0x0], %f0 !
238 fmovsne %icc, %f0, %f1 !
239 st %f1, [%l5+0x0]
240 ld [%l5+0x0], %g5
241 ldd [%l2+0x0], %f0 !
242 fmovse %icc, %f0, %f1 !
243 st %f1, [%l5+0x0]
244 ld [%l5+0x0], %g5
245 ldd [%l2+0x0], %f0 !
246 fmovsg %icc, %f0, %f1 !
247 st %f1, [%l5+0x0]
248 ld [%l5+0x0], %g5
249 ldd [%l2+0x0], %f0 !
250 fmovsle %icc, %f0, %f1 !
251 st %f1, [%l5+0x0]
252 ld [%l5+0x0], %g5
253 ldd [%l2+0x0], %f0 !
254 fmovsge %icc, %f0, %f1 !
255 st %f1, [%l5+0x0]
256 ld [%l5+0x0], %g5
257 ldd [%l2+0x0], %f0 !
258 fmovsl %icc, %f0, %f1 !
259 st %f1, [%l5+0x0]
260 ld [%l5+0x0], %g5
261 ldd [%l2+0x0], %f0 !
262 fmovsgu %icc, %f0, %f1 !
263 st %f1, [%l5+0x0]
264 ld [%l5+0x0], %g5
265 ldd [%l2+0x0], %f0 !
266 fmovsleu %icc, %f0, %f1 !
267 st %f1, [%l5+0x0]
268 ld [%l5+0x0], %g5
269 ldd [%l2+0x0], %f0 !
270 fmovscc %icc, %f0, %f1 !
271 st %f1, [%l5+0x0]
272 ld [%l5+0x0], %g5
273 ldd [%l2+0x0], %f0 !
274 fmovscs %icc, %f0, %f1 !
275 st %f1, [%l5+0x0]
276 ld [%l5+0x0], %g5
277 ldd [%l2+0x0], %f0 !
278 fmovspos %icc, %f0, %f1 !
279 st %f1, [%l5+0x0]
280 ld [%l5+0x0], %g5
281 ldd [%l2+0x0], %f0 !
282 fmovsneg %icc, %f0, %f1 !
283 st %f1, [%l5+0x0]
284 ld [%l5+0x0], %g5
285 ldd [%l2+0x0], %f0 !
286 fmovsvc %icc, %f0, %f1 !
287 st %f1, [%l5+0x0]
288 ld [%l5+0x0], %g5
289
290 ! sp, icc
291
292 ldd [%l2+0x0], %f0
293 fmovsa %xcc, %f0, %f1 !
294 st %f1, [%l5+0x0]
295 ld [%l5+0x0], %g5
296 ldd [%l2+0x0], %f0 !
297 fmovsn %xcc, %f0, %f1 !
298 st %f1, [%l5+0x0]
299 ld [%l5+0x0], %g5
300 ldd [%l2+0x0], %f0 !
301 fmovsne %xcc, %f0, %f1 !
302 st %f1, [%l5+0x0]
303 ld [%l5+0x0], %g5
304 ldd [%l2+0x0], %f0 !
305 fmovse %xcc, %f0, %f1 !
306 st %f1, [%l5+0x0]
307 ld [%l5+0x0], %g5
308 ldd [%l2+0x0], %f0 !
309 fmovsg %xcc, %f0, %f1 !
310 st %f1, [%l5+0x0]
311 ld [%l5+0x0], %g5
312 ldd [%l2+0x0], %f0 !
313 fmovsle %xcc, %f0, %f1 !
314 st %f1, [%l5+0x0]
315 ld [%l5+0x0], %g5
316 ldd [%l2+0x0], %f0 !
317 fmovsge %xcc, %f0, %f1 !
318 st %f1, [%l5+0x0]
319 ld [%l5+0x0], %g5
320 ldd [%l2+0x0], %f0 !
321 fmovsl %xcc, %f0, %f1 !
322 st %f1, [%l5+0x0]
323 ld [%l5+0x0], %g5
324 ldd [%l2+0x0], %f0 !
325 fmovsgu %xcc, %f0, %f1 !
326 st %f1, [%l5+0x0]
327 ld [%l5+0x0], %g5
328 ldd [%l2+0x0], %f0 !
329 fmovsleu %xcc, %f0, %f1 !
330 st %f1, [%l5+0x0]
331 ld [%l5+0x0], %g5
332 ldd [%l2+0x0], %f0 !
333 fmovscc %xcc, %f0, %f1 !
334 st %f1, [%l5+0x0]
335 ld [%l5+0x0], %g5
336 ldd [%l2+0x0], %f0 !
337 fmovscs %xcc, %f0, %f1 !
338 st %f1, [%l5+0x0]
339 ld [%l5+0x0], %g5
340 ldd [%l2+0x0], %f0 !
341 fmovspos %xcc, %f0, %f1 !
342 st %f1, [%l5+0x0]
343 ld [%l5+0x0], %g5
344 st %f1, [%l5+0x0]
345 ld [%l5+0x0], %g5
346 ldd [%l2+0x0], %f0 !
347 fmovsneg %xcc, %f0, %f1 !
348 st %f1, [%l5+0x0]
349 ld [%l5+0x0], %g5
350 st %f1, [%l5+0x0]
351 ld [%l5+0x0], %g5
352 ldd [%l2+0x0], %f0 !
353 fmovsvc %xcc, %f0, %f1 !
354 st %f1, [%l5+0x0]
355 ld [%l5+0x0], %g5
356 st %f1, [%l5+0x0]
357 ld [%l5+0x0], %g5
358
359 add %g2, 0x1, %g2
360 subcc %g2, %g1, %g0
361
362 bne,a ccr_loop ! If not 0, go to test more
363 nop
364
365 ! cc forwarding
366
367 setx int_data_x, %l0, %l4 !
368
369 set 0x8, %g1 ! Max loop count
370 set 0x0, %g2 ! inner loop iterator
371
372 movixcc_loop:
373
374 sll %g2, 0x2, %g3 ! Align address
375 sll %g2, 0x3, %g4 ! Align address
376
377 ldx [%l4+%g4], %l1 ! single precision
378
379 ! sp, icc
380
381 setx ddata1, %l0, %l2 ! Non zero data with different data in f0 and f1
382
383 subcc %l1, %g0, %l1
384
385 ldd [%l2+0x0], %f0
386 fmovsa %xcc, %f0, %f1 !
387 st %f1, [%l5+0x0]
388 ld [%l5+0x0], %g5
389 ldd [%l2+0x0], %f0 !
390 fmovsn %xcc, %f0, %f1 !
391 st %f1, [%l5+0x0]
392 ld [%l5+0x0], %g5
393 ldd [%l2+0x0], %f0 !
394 fmovsne %xcc, %f0, %f1 !
395 st %f1, [%l5+0x0]
396 ld [%l5+0x0], %g5
397 ldd [%l2+0x0], %f0 !
398 fmovse %xcc, %f0, %f1 !
399 st %f1, [%l5+0x0]
400 ld [%l5+0x0], %g5
401 ldd [%l2+0x0], %f0 !
402 fmovsg %xcc, %f0, %f1 !
403 st %f1, [%l5+0x0]
404 ld [%l5+0x0], %g5
405 ldd [%l2+0x0], %f0 !
406 fmovsle %xcc, %f0, %f1 !
407 st %f1, [%l5+0x0]
408 ld [%l5+0x0], %g5
409 ldd [%l2+0x0], %f0 !
410 fmovsge %xcc, %f0, %f1 !
411 st %f1, [%l5+0x0]
412 ld [%l5+0x0], %g5
413 ldd [%l2+0x0], %f0 !
414 fmovsl %icc, %f0, %f1 !
415 st %f1, [%l5+0x0]
416 ld [%l5+0x0], %g5
417 ldd [%l2+0x0], %f0 !
418 fmovsgu %icc, %f0, %f1 !
419 st %f1, [%l5+0x0]
420 ld [%l5+0x0], %g5
421 ldd [%l2+0x0], %f0 !
422 fmovsleu %icc, %f0, %f1 !
423 st %f1, [%l5+0x0]
424 ld [%l5+0x0], %g5
425 ldd [%l2+0x0], %f0 !
426 fmovscc %icc, %f0, %f1 !
427 st %f1, [%l5+0x0]
428 ld [%l5+0x0], %g5
429 ldd [%l2+0x0], %f0 !
430 fmovscs %icc, %f0, %f1 !
431 st %f1, [%l5+0x0]
432 ld [%l5+0x0], %g5
433 ldd [%l2+0x0], %f0 !
434 fmovspos %icc, %f0, %f1 !
435 st %f1, [%l5+0x0]
436 ld [%l5+0x0], %g5
437 ldd [%l2+0x0], %f0 !
438 fmovsneg %icc, %f0, %f1 !
439 st %f1, [%l5+0x0]
440 ld [%l5+0x0], %g5
441 ldd [%l2+0x0], %f0 !
442 fmovsvc %icc, %f0, %f1 !
443 st %f1, [%l5+0x0]
444 ld [%l5+0x0], %g5
445
446 add %g2, 0x1, %g2
447 subcc %g2, %g1, %g0
448
449 bne,a movixcc_loop ! If not 0, go to test more
450 nop
451
452/*******************************************************
453 * Exit code
454 *******************************************************/
455
456test_pass:
457 ta T_GOOD_TRAP
458
459test_fail:
460 ta T_BAD_TRAP
461
462/*******************************************************
463 * Data section
464 *******************************************************/
465
466.data
467
468data1:
469 .word 0x3f800000
470 .word 0x00000000
471 .word 0xbf800000
472 .word 0x80000000
473
474.align 128
475
476ddata1:
477 .xword 0x800fffffffffffff
478 .xword 0x800f000000000000
479
480.align 128
481
482int_data_x:
483 .xword 0x0000000000000000 ! 0
484 .xword 0x0000000000000001 ! 1
485 .xword 0x7fffffffffffffff !
486 .xword 0xffffffffffffffff !
487 .xword 0xaaaaaaaaaaaaaaaa ! 0
488 .xword 0x5555555555555555 ! 1
489 .xword 0x4000000000000000 !
490 .xword 0x8000000000000000 !
491
492int_data_i:
493 .word 0x00000000 ! 0
494 .word 0x00000001 ! 1
495 .word 0x7fffffff !
496 .word 0xffffffff !
497 .word 0xaaaaaaaa !
498 .word 0x55555555 !
499 .word 0x40000000 !
500 .word 0x80000000 !
501
502.align 256
503
504fsr_tem_en:
505 .word 0x0f800000 ! TEM - all enabled - rd 0
506 .word 0x4f800000 ! TEM - all enabled - rd 1
507 .word 0x8f800000 ! TEM - all enabled - rd 2
508 .word 0xcf800000 ! TEM - all enabled - rd 3
509
510fsr_tem_dis:
511 .word 0x00000000 ! TEM - all disabled
512
513.align 128
514
515scratch:
516 .word 0x00000000
517 .word 0x00000000
518 .word 0x00000000
519 .word 0x00000000
520 .word 0x00000000
521 .word 0x00000000
522 .word 0x00000000
523 .word 0x00000000