Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / diag / assembly / exu / fp_fdiv_man_sv_n2.s
CommitLineData
86530b38
AT
1/*
2* ========== Copyright Header Begin ==========================================
3*
4* OpenSPARC T2 Processor File: fp_fdiv_man_sv_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 H_T0_Fp_exception_ieee_754_0x21 T0_Fp_exception_ieee_754
39#define H_T0_Fp_exception_other_0x22 T0_Fp_exception_other
40
41#define ENABLE_T0_Fp_disabled_0x20
42#include "hboot.s"
43
44.global sam_fast_immu_miss
45.global sam_fast_dmmu_miss
46
47.text
48.global main
49
50main:
51
52 wr %g0, 0x4, %fprs /* make sure fef is 1 */
53
54 setx fsr_tem_en, %l0, %l3 ! fsr tem enable value
55
56/*******************************************************
57 * Simple data
58 *******************************************************/
59
60 ! By default, mask is disabled
61
62 ld [%l3+0x0], %fsr ! Read it from memory - trap disabled
63
64 setx fp_fdivd, %l0, %l4 ! Double precision data
65
66!!! set 0x40, %g6 ! Max loop count rd
67 set 0x177, %g6 ! Max loop count rd
68 set 0x0, %g2 ! loop1 iterator
69
70 set 0x0, %g5 ! loop1 iterator
71 set 0x0, %g7 ! loop0 iterator
72
73 walking_one_loop1:
74
75 ldd [%l4+%g2], %f0
76 add %g2, 0x8, %g2
77
78 ldd [%l4+%g2], %f2
79 add %g2, 0x8, %g2
80
81 fdivd %f0, %f2, %f10
82 fdivd %f2, %f0, %f20
83
84 add %g5, 0x1, %g5
85 subcc %g5, %g6, %g9
86
87 bne,a walking_one_loop1 ! If not 0, go to test more
88 nop
89
90
91/*******************************************************
92 * Exit code
93 *******************************************************/
94
95test_pass:
96 ta T_GOOD_TRAP
97
98test_fail:
99 ta T_BAD_TRAP
100
101/*******************************************************
102 * Data section
103 *******************************************************/
104
105.data
106
107.align 512
108
109fp_fdivd:
110! Special cases (for fdivd):
111! FPop(+{minsub,min,max},(1.0+3ulp)) RN,RZ,RM,RP
112 .word 0,0x00000000,0x000000a5,0x00000000,0x00000001
113 .word 0x3ff00000,0x00000003,0x00000000,0x00000001
114 .word 0,0x00000000,0x000000a5,0x00100000,0x00000000
115 .word 0x3ff00000,0x00000003,0x000fffff,0xfffffffd
116 .word 0,0x00000000,0x00000021,0x7fefffff,0xffffffff
117 .word 0x3ff00000,0x00000003,0x7fefffff,0xfffffff9
118 .word 0,0x40000000,0x400000a5,0x00000000,0x00000001
119 .word 0x3ff00000,0x00000003,0x00000000,0x00000000
120 .word 0,0x40000000,0x400000a5,0x00100000,0x00000000
121 .word 0x3ff00000,0x00000003,0x000fffff,0xfffffffd
122 .word 0,0x40000000,0x40000021,0x7fefffff,0xffffffff
123 .word 0x3ff00000,0x00000003,0x7fefffff,0xfffffff9
124 .word 0,0xc0000000,0xc00000a5,0x00000000,0x00000001
125 .word 0x3ff00000,0x00000003,0x00000000,0x00000000
126 .word 0,0xc0000000,0xc00000a5,0x00100000,0x00000000
127 .word 0x3ff00000,0x00000003,0x000fffff,0xfffffffd
128 .word 0,0xc0000000,0xc0000021,0x7fefffff,0xffffffff
129 .word 0x3ff00000,0x00000003,0x7fefffff,0xfffffff9
130 .word 0,0x80000000,0x800000a5,0x00000000,0x00000001
131 .word 0x3ff00000,0x00000003,0x00000000,0x00000001
132 .word 0,0x80000000,0x800000a5,0x00100000,0x00000000
133 .word 0x3ff00000,0x00000003,0x000fffff,0xfffffffe
134 .word 0,0x80000000,0x80000021,0x7fefffff,0xffffffff
135 .word 0x3ff00000,0x00000003,0x7fefffff,0xfffffffa
136! FPop(-{minsub,min,max},(1.0+3ulp)) RN,RZ,RM,RP
137 .word 0,0x00000000,0x000000a5,0x80000000,0x00000001
138 .word 0x3ff00000,0x00000003,0x80000000,0x00000001
139 .word 0,0x00000000,0x000000a5,0x80100000,0x00000000
140 .word 0x3ff00000,0x00000003,0x800fffff,0xfffffffd
141 .word 0,0x00000000,0x00000021,0xffefffff,0xffffffff
142 .word 0x3ff00000,0x00000003,0xffefffff,0xfffffff9
143 .word 0,0x40000000,0x400000a5,0x80000000,0x00000001
144 .word 0x3ff00000,0x00000003,0x80000000,0x00000000
145 .word 0,0x40000000,0x400000a5,0x80100000,0x00000000
146 .word 0x3ff00000,0x00000003,0x800fffff,0xfffffffd
147 .word 0,0x40000000,0x40000021,0xffefffff,0xffffffff
148 .word 0x3ff00000,0x00000003,0xffefffff,0xfffffff9
149 .word 0,0xc0000000,0xc00000a5,0x80000000,0x00000001
150 .word 0x3ff00000,0x00000003,0x80000000,0x00000001
151 .word 0,0xc0000000,0xc00000a5,0x80100000,0x00000000
152 .word 0x3ff00000,0x00000003,0x800fffff,0xfffffffe
153 .word 0,0xc0000000,0xc0000021,0xffefffff,0xffffffff
154 .word 0x3ff00000,0x00000003,0xffefffff,0xfffffffa
155 .word 0,0x80000000,0x800000a5,0x80000000,0x00000001
156 .word 0x3ff00000,0x00000003,0x80000000,0x00000000
157 .word 0,0x80000000,0x800000a5,0x80100000,0x00000000
158 .word 0x3ff00000,0x00000003,0x800fffff,0xfffffffd
159 .word 0,0x80000000,0x80000021,0xffefffff,0xffffffff
160 .word 0x3ff00000,0x00000003,0xffefffff,0xfffffff9
161! x+2ulp / x
162! x+3ulp / x+ulp where x=1.333333333....
163 .word 0,0x00000000,0x00000021,0x3ff55555,0x55555557
164 .word 0x3ff55555,0x55555555,0x3ff00000,0x00000002
165 .word 0,0x00000000,0x00000021,0x3ff55555,0x55555558
166 .word 0x3ff55555,0x55555556,0x3ff00000,0x00000001
167! misc
168 .word 0,0,0xa5,0x000fffff,0xfffffff8
169 .word 0x3ff00000,0x00000008,0x000fffff,0xfffffff0
170 .word 0,0x40000000,0x400000a5,0x000fffff,0xfffffff8
171 .word 0x3ff00000,0x00000008,0x000fffff,0xfffffff0
172 .word 0,0x80000000,0x800000a5,0x000fffff,0xfffffff8
173 .word 0x3ff00000,0x00000008,0x000fffff,0xfffffff1
174 .word 0,0xc0000000,0xc00000a5,0x000fffff,0xfffffff8
175 .word 0x3ff00000,0x00000008,0x000fffff,0xfffffff0
176 ! FPop(+-0,+-0) under all kind of roundings
177 .word 0,0x00000000,0x00000210,0x00000000,0x00000000
178 .word 0x00000000,0x00000000,0x7fffffff,0xffffffff
179 .word 0,0x00000000,0x00000210,0x80000000,0x00000000
180 .word 0x80000000,0x00000000,0x7fffffff,0xffffffff
181 .word 0,0x00000000,0x00000210,0x00000000,0x00000000
182 .word 0x80000000,0x00000000,0x7fffffff,0xffffffff
183 .word 0,0x00000000,0x00000210,0x80000000,0x00000000
184 .word 0x00000000,0x00000000,0x7fffffff,0xffffffff
185 .word 0,0x40000000,0x40000210,0x00000000,0x00000000
186 .word 0x00000000,0x00000000,0x7fffffff,0xffffffff
187 .word 0,0x40000000,0x40000210,0x80000000,0x00000000
188 .word 0x80000000,0x00000000,0x7fffffff,0xffffffff
189 .word 0,0x40000000,0x40000210,0x00000000,0x00000000
190 .word 0x80000000,0x00000000,0x7fffffff,0xffffffff
191 .word 0,0x40000000,0x40000210,0x80000000,0x00000000
192 .word 0x00000000,0x00000000,0x7fffffff,0xffffffff
193 .word 0,0x80000000,0x80000210,0x00000000,0x00000000
194 .word 0x00000000,0x00000000,0x7fffffff,0xffffffff
195 .word 0,0x80000000,0x80000210,0x80000000,0x00000000
196 .word 0x80000000,0x00000000,0x7fffffff,0xffffffff
197 .word 0,0x80000000,0x80000210,0x00000000,0x00000000
198 .word 0x80000000,0x00000000,0x7fffffff,0xffffffff
199 .word 0,0x80000000,0x80000210,0x80000000,0x00000000
200 .word 0x00000000,0x00000000,0x7fffffff,0xffffffff
201 .word 0,0xc0000000,0xc0000210,0x00000000,0x00000000
202 .word 0x00000000,0x00000000,0x7fffffff,0xffffffff
203 .word 0,0xc0000000,0xc0000210,0x80000000,0x00000000
204 .word 0x80000000,0x00000000,0x7fffffff,0xffffffff
205 .word 0,0xc0000000,0xc0000210,0x00000000,0x00000000
206 .word 0x80000000,0x00000000,0x7fffffff,0xffffffff
207 .word 0,0xc0000000,0xc0000210,0x80000000,0x00000000
208 .word 0x00000000,0x00000000,0x7fffffff,0xffffffff
209! FPop(+minsub ,+{minsub,min,1,max,inf,snan,qnan )
210 .word 0,0x00000000,0x00000000,0x00000000,0x00000001
211 .word 0x00000000,0x00000001,0x3ff00000,0x00000000
212 .word 0,0x00000000,0x00000000,0x00000000,0x00000001
213 .word 0x00100000,0x00000000,0x3cb00000,0x00000000
214 .word 0,0x00000000,0x00000000,0x00000000,0x00000001
215 .word 0x3ff00000,0x00000000,0x00000000,0x00000001
216 .word 0,0x00000000,0x000000a5,0x00000000,0x00000001
217 .word 0x7fefffff,0xffffffff,0x00000000,0x00000000
218 .word 0,0x00000000,0x00000000,0x00000000,0x00000001
219 .word 0x7ff00000,0x00000000,0x00000000,0x00000000
220 .word 0,0x00000000,0x00000210,0x00000000,0x00000001
221 .word 0x7ff00000,0x00000001,0x7ff80000,0x00000001
222 .word 0,0x00000000,0x00000000,0x00000000,0x00000001
223 .word 0x7ff80000,0x00000000,0x7ff80000,0x00000000
224! FPop(+minsub ,-{minsub,min,1,max,inf,snan,qnan )
225 .word 0,0x00000000,0x00000000,0x00000000,0x00000001
226 .word 0x80000000,0x00000001,0xbff00000,0x00000000
227 .word 0,0x00000000,0x00000000,0x00000000,0x00000001
228 .word 0x80100000,0x00000000,0xbcb00000,0x00000000
229 .word 0,0x00000000,0x00000000,0x00000000,0x00000001
230 .word 0xbff00000,0x00000000,0x80000000,0x00000001
231 .word 0,0x00000000,0x000000a5,0x00000000,0x00000001
232 .word 0xffefffff,0xffffffff,0x80000000,0x00000000
233 .word 0,0x00000000,0x00000000,0x00000000,0x00000001
234 .word 0xfff00000,0x00000000,0x80000000,0x00000000
235 .word 0,0x00000000,0x00000210,0x00000000,0x00000001
236 .word 0xfff00000,0x00000001,0xfff80000,0x00000001
237 .word 0,0x00000000,0x00000000,0x00000000,0x00000001
238 .word 0xfff80000,0x00000000,0xfff80000,0x00000000
239! FPop(-minsub ,+{minsub,min,1,max,inf,snan,qnan )
240 .word 0,0x00000000,0x00000000,0x80000000,0x00000001
241 .word 0x00000000,0x00000001,0xbff00000,0x00000000
242 .word 0,0x00000000,0x00000000,0x80000000,0x00000001
243 .word 0x00100000,0x00000000,0xbcb00000,0x00000000
244 .word 0,0x00000000,0x00000000,0x80000000,0x00000001
245 .word 0x3ff00000,0x00000000,0x80000000,0x00000001
246 .word 0,0x00000000,0x000000a5,0x80000000,0x00000001
247 .word 0x7fefffff,0xffffffff,0x80000000,0x00000000
248 .word 0,0x00000000,0x00000000,0x80000000,0x00000001
249 .word 0x7ff00000,0x00000000,0x80000000,0x00000000
250 .word 0,0x00000000,0x00000210,0x80000000,0x00000001
251 .word 0x7ff00000,0x00000001,0x7ff80000,0x00000001
252 .word 0,0x00000000,0x00000000,0x80000000,0x00000001
253 .word 0x7ff80000,0x00000000,0x7ff80000,0x00000000
254! FPop(-minsub ,-{minsub,min,1,max,inf,snan,qnan )
255 .word 0,0x00000000,0x00000000,0x80000000,0x00000001
256 .word 0x80000000,0x00000001,0x3ff00000,0x00000000
257 .word 0,0x00000000,0x00000000,0x80000000,0x00000001
258 .word 0x80100000,0x00000000,0x3cb00000,0x00000000
259 .word 0,0x00000000,0x00000000,0x80000000,0x00000001
260 .word 0xbff00000,0x00000000,0x00000000,0x00000001
261 .word 0,0x00000000,0x000000a5,0x80000000,0x00000001
262 .word 0xffefffff,0xffffffff,0x00000000,0x00000000
263 .word 0,0x00000000,0x00000000,0x80000000,0x00000001
264 .word 0xfff00000,0x00000000,0x00000000,0x00000000
265 .word 0,0x00000000,0x00000210,0x80000000,0x00000001
266 .word 0xfff00000,0x00000001,0xfff80000,0x00000001
267 .word 0,0x00000000,0x00000000,0x80000000,0x00000001
268 .word 0xfff80000,0x00000000,0xfff80000,0x00000000
269! FPop(+min ,+{minsub,min,1,max,inf,snan,qnan )
270 .word 0,0x00000000,0x00000000,0x00100000,0x00000000
271 .word 0x00000000,0x00000001,0x43300000,0x00000000
272 .word 0,0x00000000,0x00000000,0x00100000,0x00000000
273 .word 0x00100000,0x00000000,0x3ff00000,0x00000000
274 .word 0,0x00000000,0x00000000,0x00100000,0x00000000
275 .word 0x3ff00000,0x00000000,0x00100000,0x00000000
276 .word 0,0x00000000,0x000000a5,0x00100000,0x00000000
277 .word 0x7fefffff,0xffffffff,0x00000000,0x00000000
278 .word 0,0x00000000,0x00000000,0x00100000,0x00000000
279 .word 0x7ff00000,0x00000000,0x00000000,0x00000000
280 .word 0,0x00000000,0x00000210,0x00100000,0x00000000
281 .word 0x7ff00000,0x00000001,0x7ff80000,0x00000001
282 .word 0,0x00000000,0x00000000,0x00100000,0x00000000
283 .word 0x7ff80000,0x00000000,0x7ff80000,0x00000000
284! FPop(+min ,-{minsub,min,1,max,inf,snan,qnan )
285 .word 0,0x00000000,0x00000000,0x00100000,0x00000000
286 .word 0x80000000,0x00000001,0xc3300000,0x00000000
287 .word 0,0x00000000,0x00000000,0x00100000,0x00000000
288 .word 0x80100000,0x00000000,0xbff00000,0x00000000
289 .word 0,0x00000000,0x00000000,0x00100000,0x00000000
290 .word 0xbff00000,0x00000000,0x80100000,0x00000000
291 .word 0,0x00000000,0x000000a5,0x00100000,0x00000000
292 .word 0xffefffff,0xffffffff,0x80000000,0x00000000
293 .word 0,0x00000000,0x00000000,0x00100000,0x00000000
294 .word 0xfff00000,0x00000000,0x80000000,0x00000000
295 .word 0,0x00000000,0x00000210,0x00100000,0x00000000
296 .word 0xfff00000,0x00000001,0xfff80000,0x00000001
297 .word 0,0x00000000,0x00000000,0x00100000,0x00000000
298 .word 0xfff80000,0x00000000,0xfff80000,0x00000000
299! FPop(-min ,+{minsub,min,1,max,inf,snan,qnan )
300 .word 0,0x00000000,0x00000000,0x80100000,0x00000000
301 .word 0x00000000,0x00000001,0xc3300000,0x00000000
302 .word 0,0x00000000,0x00000000,0x80100000,0x00000000
303 .word 0x00100000,0x00000000,0xbff00000,0x00000000
304 .word 0,0x00000000,0x00000000,0x80100000,0x00000000
305 .word 0x3ff00000,0x00000000,0x80100000,0x00000000
306 .word 0,0x00000000,0x000000a5,0x80100000,0x00000000
307 .word 0x7fefffff,0xffffffff,0x80000000,0x00000000
308 .word 0,0x00000000,0x00000000,0x80100000,0x00000000
309 .word 0x7ff00000,0x00000000,0x80000000,0x00000000
310 .word 0,0x00000000,0x00000210,0x80100000,0x00000000
311 .word 0x7ff00000,0x00000001,0x7ff80000,0x00000001
312 .word 0,0x00000000,0x00000000,0x80100000,0x00000000
313 .word 0x7ff80000,0x00000000,0x7ff80000,0x00000000
314! FPop(-min ,-{minsub,min,1,max,inf,snan,qnan )
315 .word 0,0x00000000,0x00000000,0x80100000,0x00000000
316 .word 0x80000000,0x00000001,0x43300000,0x00000000
317 .word 0,0x00000000,0x00000000,0x80100000,0x00000000
318 .word 0x80100000,0x00000000,0x3ff00000,0x00000000
319 .word 0,0x00000000,0x00000000,0x80100000,0x00000000
320 .word 0xbff00000,0x00000000,0x00100000,0x00000000
321 .word 0,0x00000000,0x000000a5,0x80100000,0x00000000
322 .word 0xffefffff,0xffffffff,0x00000000,0x00000000
323 .word 0,0x00000000,0x00000000,0x80100000,0x00000000
324 .word 0xfff00000,0x00000000,0x00000000,0x00000000
325 .word 0,0x00000000,0x00000210,0x80100000,0x00000000
326 .word 0xfff00000,0x00000001,0xfff80000,0x00000001
327 .word 0,0x00000000,0x00000000,0x80100000,0x00000000
328 .word 0xfff80000,0x00000000,0xfff80000,0x00000000
329! FPop(+1.0 ,+{minsub,min,1,max,inf,snan,qnan )
330 .word 0,0x00000000,0x00000129,0x3ff00000,0x00000000
331 .word 0x00000000,0x00000001,0x7ff00000,0x00000000
332 .word 0,0x00000000,0x00000000,0x3ff00000,0x00000000
333 .word 0x00100000,0x00000000,0x7fd00000,0x00000000
334 .word 0,0x00000000,0x00000000,0x3ff00000,0x00000000
335 .word 0x3ff00000,0x00000000,0x3ff00000,0x00000000
336 .word 0,0x00000000,0x000000a5,0x3ff00000,0x00000000
337 .word 0x7fefffff,0xffffffff,0x00040000,0x00000000
338 .word 0,0x00000000,0x00000000,0x3ff00000,0x00000000
339 .word 0x7ff00000,0x00000000,0x00000000,0x00000000
340 .word 0,0x00000000,0x00000210,0x3ff00000,0x00000000
341 .word 0x7ff00000,0x00000001,0x7ff80000,0x00000001
342 .word 0,0x00000000,0x00000000,0x3ff00000,0x00000000
343 .word 0x7ff80000,0x00000000,0x7ff80000,0x00000000
344! FPop(+1.0 ,-{minsub,min,1,max,inf,snan,qnan )
345 .word 0,0x00000000,0x00000129,0x3ff00000,0x00000000
346 .word 0x80000000,0x00000001,0xfff00000,0x00000000
347 .word 0,0x00000000,0x00000000,0x3ff00000,0x00000000
348 .word 0x80100000,0x00000000,0xffd00000,0x00000000
349 .word 0,0x00000000,0x00000000,0x3ff00000,0x00000000
350 .word 0xbff00000,0x00000000,0xbff00000,0x00000000
351 .word 0,0x00000000,0x000000a5,0x3ff00000,0x00000000
352 .word 0xffefffff,0xffffffff,0x80040000,0x00000000
353 .word 0,0x00000000,0x00000000,0x3ff00000,0x00000000
354 .word 0xfff00000,0x00000000,0x80000000,0x00000000
355 .word 0,0x00000000,0x00000210,0x3ff00000,0x00000000
356 .word 0xfff00000,0x00000001,0xfff80000,0x00000001
357 .word 0,0x00000000,0x00000000,0x3ff00000,0x00000000
358 .word 0xfff80000,0x00000000,0xfff80000,0x00000000
359! FPop(-1.0 ,+{minsub,min,1,max,inf,snan,qnan )
360 .word 0,0x00000000,0x00000129,0xbff00000,0x00000000
361 .word 0x00000000,0x00000001,0xfff00000,0x00000000
362 .word 0,0x00000000,0x00000000,0xbff00000,0x00000000
363 .word 0x00100000,0x00000000,0xffd00000,0x00000000
364 .word 0,0x00000000,0x00000000,0xbff00000,0x00000000
365 .word 0x3ff00000,0x00000000,0xbff00000,0x00000000
366 .word 0,0x00000000,0x000000a5,0xbff00000,0x00000000
367 .word 0x7fefffff,0xffffffff,0x80040000,0x00000000
368 .word 0,0x00000000,0x00000000,0xbff00000,0x00000000
369 .word 0x7ff00000,0x00000000,0x80000000,0x00000000
370 .word 0,0x00000000,0x00000210,0xbff00000,0x00000000
371 .word 0x7ff00000,0x00000001,0x7ff80000,0x00000001
372 .word 0,0x00000000,0x00000000,0xbff00000,0x00000000
373 .word 0x7ff80000,0x00000000,0x7ff80000,0x00000000
374! FPop(-1.0 ,-{minsub,min,1,max,inf,snan,qnan )
375 .word 0,0x00000000,0x00000129,0xbff00000,0x00000000
376 .word 0x80000000,0x00000001,0x7ff00000,0x00000000
377 .word 0,0x00000000,0x00000000,0xbff00000,0x00000000
378 .word 0x80100000,0x00000000,0x7fd00000,0x00000000
379 .word 0,0x00000000,0x00000000,0xbff00000,0x00000000
380 .word 0xbff00000,0x00000000,0x3ff00000,0x00000000
381 .word 0,0x00000000,0x000000a5,0xbff00000,0x00000000
382 .word 0xffefffff,0xffffffff,0x00040000,0x00000000
383 .word 0,0x00000000,0x00000000,0xbff00000,0x00000000
384 .word 0xfff00000,0x00000000,0x00000000,0x00000000
385 .word 0,0x00000000,0x00000210,0xbff00000,0x00000000
386 .word 0xfff00000,0x00000001,0xfff80000,0x00000001
387 .word 0,0x00000000,0x00000000,0xbff00000,0x00000000
388 .word 0xfff80000,0x00000000,0xfff80000,0x00000000
389! FPop(max ,{minsub,min,1,max,inf,snan,qnan )
390 .word 0,0x00000000,0x00000129,0x7fefffff,0xffffffff
391 .word 0x00000000,0x00000001,0x7ff00000,0x00000000
392 .word 0,0x00000000,0x00000129,0x7fefffff,0xffffffff
393 .word 0x00100000,0x00000000,0x7ff00000,0x00000000
394 .word 0,0x00000000,0x00000000,0x7fefffff,0xffffffff
395 .word 0x3ff00000,0x00000000,0x7fefffff,0xffffffff
396 .word 0,0x00000000,0x00000000,0x7fefffff,0xffffffff
397 .word 0x7fefffff,0xffffffff,0x3ff00000,0x00000000
398 .word 0,0x00000000,0x00000000,0x7fefffff,0xffffffff
399 .word 0x7ff00000,0x00000000,0x00000000,0x00000000
400 .word 0,0x00000000,0x00000210,0x7fefffff,0xffffffff
401 .word 0x7ff00000,0x00000001,0x7ff80000,0x00000001
402 .word 0,0x00000000,0x00000000,0x7fefffff,0xffffffff
403 .word 0x7ff80000,0x00000000,0x7ff80000,0x00000000
404! FPop(max ,-{minsub,min,1,max,inf,snan,qnan )
405 .word 0,0x00000000,0x00000129,0x7fefffff,0xffffffff
406 .word 0x80000000,0x00000001,0xfff00000,0x00000000
407 .word 0,0x00000000,0x00000129,0x7fefffff,0xffffffff
408 .word 0x80100000,0x00000000,0xfff00000,0x00000000
409 .word 0,0x00000000,0x00000000,0x7fefffff,0xffffffff
410 .word 0xbff00000,0x00000000,0xffefffff,0xffffffff
411 .word 0,0x00000000,0x00000000,0x7fefffff,0xffffffff
412 .word 0xffefffff,0xffffffff,0xbff00000,0x00000000
413 .word 0,0x00000000,0x00000000,0x7fefffff,0xffffffff
414 .word 0xfff00000,0x00000000,0x80000000,0x00000000
415 .word 0,0x00000000,0x00000210,0x7fefffff,0xffffffff
416 .word 0xfff00000,0x00000001,0xfff80000,0x00000001
417 .word 0,0x00000000,0x00000000,0x7fefffff,0xffffffff
418 .word 0xfff80000,0x00000000,0xfff80000,0x00000000
419! FPop(-max ,{minsub,min,1,max,inf,snan,qnan )
420 .word 0,0x00000000,0x00000129,0xffefffff,0xffffffff
421 .word 0x00000000,0x00000001,0xfff00000,0x00000000
422 .word 0,0x00000000,0x00000129,0xffefffff,0xffffffff
423 .word 0x00100000,0x00000000,0xfff00000,0x00000000
424 .word 0,0x00000000,0x00000000,0xffefffff,0xffffffff
425 .word 0x3ff00000,0x00000000,0xffefffff,0xffffffff
426 .word 0,0x00000000,0x00000000,0xffefffff,0xffffffff
427 .word 0x7fefffff,0xffffffff,0xbff00000,0x00000000
428 .word 0,0x00000000,0x00000000,0xffefffff,0xffffffff
429 .word 0x7ff00000,0x00000000,0x80000000,0x00000000
430 .word 0,0x00000000,0x00000210,0xffefffff,0xffffffff
431 .word 0x7ff00000,0x00000001,0x7ff80000,0x00000001
432 .word 0,0x00000000,0x00000000,0xffefffff,0xffffffff
433 .word 0x7ff80000,0x00000000,0x7ff80000,0x00000000
434! FPop(-max ,-{minsub,min,1,max,inf,snan,qnan )
435 .word 0,0x00000000,0x00000129,0xffefffff,0xffffffff
436 .word 0x80000000,0x00000001,0x7ff00000,0x00000000
437 .word 0,0x00000000,0x00000129,0xffefffff,0xffffffff
438 .word 0x80100000,0x00000000,0x7ff00000,0x00000000
439 .word 0,0x00000000,0x00000000,0xffefffff,0xffffffff
440 .word 0xbff00000,0x00000000,0x7fefffff,0xffffffff
441 .word 0,0x00000000,0x00000000,0xffefffff,0xffffffff
442 .word 0xffefffff,0xffffffff,0x3ff00000,0x00000000
443 .word 0,0x00000000,0x00000000,0xffefffff,0xffffffff
444 .word 0xfff00000,0x00000000,0x00000000,0x00000000
445 .word 0,0x00000000,0x00000210,0xffefffff,0xffffffff
446 .word 0xfff00000,0x00000001,0xfff80000,0x00000001
447 .word 0,0x00000000,0x00000000,0xffefffff,0xffffffff
448 .word 0xfff80000,0x00000000,0xfff80000,0x00000000
449! FPop(inf ,{minsub,min,1,max,inf,snan,qnan )
450 .word 0,0x00000000,0x00000000,0x7ff00000,0x00000000
451 .word 0x00000000,0x00000001,0x7ff00000,0x00000000
452 .word 0,0x00000000,0x00000000,0x7ff00000,0x00000000
453 .word 0x00100000,0x00000000,0x7ff00000,0x00000000
454 .word 0,0x00000000,0x00000000,0x7ff00000,0x00000000
455 .word 0x3ff00000,0x00000000,0x7ff00000,0x00000000
456 .word 0,0x00000000,0x00000000,0x7ff00000,0x00000000
457 .word 0x7fefffff,0xffffffff,0x7ff00000,0x00000000
458 .word 0,0x00000000,0x00000210,0x7ff00000,0x00000000
459 .word 0x7ff00000,0x00000000,0x7fffffff,0xffffffff
460 .word 0,0x00000000,0x00000210,0x7ff00000,0x00000000
461 .word 0x7ff00000,0x00000001,0x7ff80000,0x00000001
462 .word 0,0x00000000,0x00000000,0x7ff00000,0x00000000
463 .word 0x7ff80000,0x00000000,0x7ff80000,0x00000000
464! FPop(inf ,-{minsub,min,1,max,inf,snan,qnan )
465 .word 0,0x00000000,0x00000000,0x7ff00000,0x00000000
466 .word 0x80000000,0x00000001,0xfff00000,0x00000000
467 .word 0,0x00000000,0x00000000,0x7ff00000,0x00000000
468 .word 0x80100000,0x00000000,0xfff00000,0x00000000
469 .word 0,0x00000000,0x00000000,0x7ff00000,0x00000000
470 .word 0xbff00000,0x00000000,0xfff00000,0x00000000
471 .word 0,0x00000000,0x00000000,0x7ff00000,0x00000000
472 .word 0xffefffff,0xffffffff,0xfff00000,0x00000000
473 .word 0,0x00000000,0x00000210,0x7ff00000,0x00000000
474 .word 0xfff00000,0x00000000,0x7fffffff,0xffffffff
475 .word 0,0x00000000,0x00000210,0x7ff00000,0x00000000
476 .word 0xfff00000,0x00000001,0xfff80000,0x00000001
477 .word 0,0x00000000,0x00000000,0x7ff00000,0x00000000
478 .word 0xfff80000,0x00000000,0xfff80000,0x00000000
479! FPop(-inf ,+{minsub,min,1,max,inf,snan,qnan )
480 .word 0,0x00000000,0x00000000,0xfff00000,0x00000000
481 .word 0x00000000,0x00000001,0xfff00000,0x00000000
482 .word 0,0x00000000,0x00000000,0xfff00000,0x00000000
483 .word 0x00100000,0x00000000,0xfff00000,0x00000000
484 .word 0,0x00000000,0x00000000,0xfff00000,0x00000000
485 .word 0x3ff00000,0x00000000,0xfff00000,0x00000000
486 .word 0,0x00000000,0x00000000,0xfff00000,0x00000000
487 .word 0x7fefffff,0xffffffff,0xfff00000,0x00000000
488 .word 0,0x00000000,0x00000210,0xfff00000,0x00000000
489 .word 0x7ff00000,0x00000000,0x7fffffff,0xffffffff
490 .word 0,0x00000000,0x00000210,0xfff00000,0x00000000
491 .word 0x7ff00000,0x00000001,0x7ff80000,0x00000001
492 .word 0,0x00000000,0x00000000,0xfff00000,0x00000000
493 .word 0x7ff80000,0x00000000,0x7ff80000,0x00000000
494! FPop(-inf ,-{minsub,min,1,max,inf,snan,qnan )
495 .word 0,0x00000000,0x00000000,0xfff00000,0x00000000
496 .word 0x80000000,0x00000001,0x7ff00000,0x00000000
497 .word 0,0x00000000,0x00000000,0xfff00000,0x00000000
498 .word 0x80100000,0x00000000,0x7ff00000,0x00000000
499 .word 0,0x00000000,0x00000000,0xfff00000,0x00000000
500 .word 0xbff00000,0x00000000,0x7ff00000,0x00000000
501 .word 0,0x00000000,0x00000000,0xfff00000,0x00000000
502 .word 0xffefffff,0xffffffff,0x7ff00000,0x00000000
503 .word 0,0x00000000,0x00000210,0xfff00000,0x00000000
504 .word 0xfff00000,0x00000000,0x7fffffff,0xffffffff
505 .word 0,0x00000000,0x00000210,0xfff00000,0x00000000
506 .word 0xfff00000,0x00000001,0xfff80000,0x00000001
507 .word 0,0x00000000,0x00000000,0xfff00000,0x00000000
508 .word 0xfff80000,0x00000000,0xfff80000,0x00000000
509! FPop(snan ,{minsub,min,1,max,inf,snan,qnan )
510 .word 0,0x00000000,0x00000210,0x7ff00000,0x00000001
511 .word 0x00000000,0x00000001,0x7ff80000,0x00000001
512 .word 0,0x00000000,0x00000210,0x7ff00000,0x00000001
513 .word 0x00100000,0x00000000,0x7ff80000,0x00000001
514 .word 0,0x00000000,0x00000210,0x7ff00000,0x00000001
515 .word 0x3ff00000,0x00000000,0x7ff80000,0x00000001
516 .word 0,0x00000000,0x00000210,0x7ff00000,0x00000001
517 .word 0x7fefffff,0xffffffff,0x7ff80000,0x00000001
518 .word 0,0x00000000,0x00000210,0x7ff00000,0x00000001
519 .word 0x7ff00000,0x00000000,0x7ff80000,0x00000001
520 .word 0,0x00000000,0x00000210,0x7ff00000,0x00000001
521 .word 0x7ff00000,0x00000002,0x7ff80000,0x00000002
522 .word 0,0x00000000,0x00000210,0x7ff00000,0x00000001
523 .word 0x7ff80000,0x00000000,0x7ff80000,0x00000001
524! FPop(qnan ,{minsub,min,1,max,inf,snan,qnan )
525 .word 0,0x00000000,0x00000000,0x7ff80000,0x00000000
526 .word 0x00000000,0x00000001,0x7ff80000,0x00000000
527 .word 0,0x00000000,0x00000000,0x7ff80000,0x00000000
528 .word 0x00100000,0x00000000,0x7ff80000,0x00000000
529 .word 0,0x00000000,0x00000000,0x7ff80000,0x00000000
530 .word 0x3ff00000,0x00000000,0x7ff80000,0x00000000
531 .word 0,0x00000000,0x00000000,0x7ff80000,0x00000000
532 .word 0x7fefffff,0xffffffff,0x7ff80000,0x00000000
533 .word 0,0x00000000,0x00000000,0x7ff80000,0x00000000
534 .word 0x7ff00000,0x00000000,0x7ff80000,0x00000000
535 .word 0,0x00000000,0x00000210,0x7ff80000,0x00000000
536 .word 0x7ff00000,0x00000001,0x7ff80000,0x00000001
537 .word 0,0x00000000,0x00000000,0x7ff80000,0x00000000
538 .word 0x7ff80000,0x00000002,0x7ff80000,0x00000002
539! Appendix N on with NaN operand(s)
540! number + qNaN = qNaN
541 .word 0,0,0x3fff0000,1
542 .word 0x7fff0000,0x3,0x7fff0000,0x3
543! number + sNaN = qsNaN (invalid)
544 .word 0,0,0x210,0x3fff0000,1
545 .word 0x7ff70000,0x3,0x7fff0000,0x3
546! qNaN + number = qNaN
547 .word 0,0,0x7ffa1111,0xffffffff
548 .word 0x40010000,0x2,0x7ffa1111,0xffffffff
549! sNaN + number = qsNaN (invalid)
550 .word 0,0,0x210,0x7ff21111,0xffffffff
551 .word 0x40010000,0x2,0x7ffa1111,0xffffffff
552! qNaN1 + qNaN2 = qNaN2
553 .word 0,0,0x7ff9abcd,0xffffffff
554 .word 0x7fff0000,0x1,0x7fff0000,0x1
555! qNaN1 + sNaN2 = qsNaN2 (invalid)
556 .word 0,0,0x210,0x7ff9abcd,0xffffffff
557 .word 0x7ff70000,0x1,0x7fff0000,0x1
558! sNaN1 + qNaN2 = qsNaN1
559 .word 0,0,0x210,0x7ff1abcd,0xffffffff
560 .word 0x7fff0000,0x1,0x7ff9abcd,0xffffffff
561! sNaN1 + sNaN2 = qsNaN2
562 .word 0,0,0x210,0x7ff1abcd,0xffffffff
563 .word 0x7ff70000,0x1,0x7fff0000,0x1
564 .word 0x00000000,0x00000000,0x00000000,0x00000000
565 .word 0x00000000,0x00000000,0x00000000,0x00000000
566 .word 0x00000000,0x00000000,0x00000000,0x00000000
567 .word 0x00000000,0x00000000,0x00000000,0x00000000
568 .word 0x00000000,0x00000000,0x00000000,0x00000000
569 .word 0x00000000,0x00000000,0x00000000,0x00000000
570 .word 0x00000000,0x00000000,0x00000000,0x00000000
571 .word 0x00000000,0x00000000,0x00000000,0x00000000
572 .word 0x00000000,0x00000000,0x00000000,0x00000000
573 .word 0x00000000,0x00000000,0x00000000,0x00000000
574 .word 0x00000000,0x00000000,0x00000000,0x00000000
575 .word 0x00000000,0x00000000,0x00000000,0x00000000
576 .word 0x00000000,0x00000000,0x00000000,0x00000000
577 .word 0x00000000,0x00000000,0x00000000,0x00000000
578 .word 0x00000000,0x00000000,0x00000000,0x00000000
579 .word 0x00000000,0x00000000,0x00000000,0x00000000
580 .word 0x00000000,0x00000000,0x00000000,0x00000000
581 .word 0x00000000,0x00000000,0x00000000,0x00000000
582 .word 0x00000000,0x00000000,0x00000000,0x00000000
583 .word 0x00000000,0x00000000,0x00000000,0x00000000
584 .word 0x00000000,0x00000000,0x00000000,0x00000000
585 .word 0x00000000,0x00000000,0x00000000,0x00000000
586 .word 0x00000000,0x00000000,0x00000000,0x00000000
587 .word 0x00000000,0x00000000,0x00000000,0x00000000
588 .word 0x00000000,0x00000000,0x00000000,0x00000000
589 .word 0x00000000,0x00000000,0x00000000,0x00000000
590 .word 0x00000000,0x00000000,0x00000000,0x00000000
591 .word 0x00000000,0x00000000,0x00000000,0x00000000
592 .word 0x00000000,0x00000000,0x00000000,0x00000000
593 .word 0x00000000,0x00000000,0x00000000,0x00000000
594 .word 0x00000000,0x00000000,0x00000000,0x00000000
595 .word 0x00000000,0x00000000,0x00000000,0x00000000
596
597.align 256
598
599fsr_tem_en:
600 .word 0x0f800000 ! TEM - all enabled - rd 0
601 .word 0x4f800000 ! TEM - all enabled - rd 1
602 .word 0x8f800000 ! TEM - all enabled - rd 2
603 .word 0xcf800000 ! TEM - all enabled - rd 3
604 .word 0x00000000 ! TEM - walk through all values
605 .word 0x0f800000
606 .word 0x01000000
607 .word 0x01800000
608 .word 0x02000000
609 .word 0x02800000
610 .word 0x03000000
611 .word 0x03800000
612 .word 0x04000000
613 .word 0x04800000
614 .word 0x05000000
615 .word 0x05800000
616 .word 0x06000000
617 .word 0x06800000
618 .word 0x07000000
619 .word 0x07800000
620 .word 0x08000000
621 .word 0x08800000
622 .word 0x09000000
623 .word 0x09800000
624 .word 0x0a000000
625 .word 0x0a800000
626 .word 0x0b000000
627 .word 0x0b800000
628 .word 0x0c000000
629 .word 0x0c800000
630 .word 0x0d000000
631 .word 0x0d800000
632 .word 0x0e000000
633 .word 0x0e800000
634 .word 0x0f000000
635 .word 0x0f800000
636 .word 0x01800000
637 .word 0x02800000
638 .word 0x03800000
639 .word 0x04800000
640
641
642
643
644fsr_tem_dis:
645 .word 0x00000000 ! TEM - all disabled
646 .word 0x40000000 ! TEM - all disabled
647 .word 0x80000000 ! TEM - all disabled
648 .word 0xc0000000 ! TEM - all disabled
649
650/*******************************************************
651 * My own trap handlers
652 *******************************************************/
653
654SECTION .TRAPS
655.text
656
657.global T0_Fp_exception_ieee_754
658.global T0_Fp_exception_other
659
660 T0_Fp_exception_ieee_754:
661 rdpr %tpc, %i0
662 rdpr %tnpc, %i1
663 rdpr %tstate, %i1
664 rdpr %tt, %i1
665 setx scratch, %l0, %l5 ! scratch
666 stx %fsr, [%l5+0x0]
667 ldx [%l5+0x0], %fsr ! Need to test the sync operation
668 done
669 nop
670
671T0_Fp_exception_other:
672 rdpr %tpc, %i0
673 rdpr %tnpc, %i1
674 rdpr %tstate, %i1
675 rdpr %tt, %i1
676 setx scratch, %l0, %l5 ! scratch
677 stx %fsr, [%l5+0x0]
678 ldx [%l5+0x0], %fsr ! Need to test the sync operation
679 done
680 nop
681
682.data
683.align 128
684
685scratch:
686 .word 0x00000000
687 .word 0x00000000
688 .word 0x00000000
689 .word 0x00000000
690 .word 0x00000000
691 .word 0x00000000
692 .word 0x00000000
693 .word 0x00000000