|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00000a64 * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _atanf
6: 6 00000000 _atanf:
7: 7 000234D0 0000 .word L215
8: 8 000234D2 # #include "fpp_defs.h"
9: 9 000234D2 #
10: 10 000234D2 #
11: 11 000234D2 #
12: 12 000234D2 # /***************************************************************************
13: 13 000234D2 # *
14: 14 000234D2 # * ATANF - SINGLE PRECISION FLOATING POINT ATANF FUNCTION TEST
15: 15 000234D2 # *
16: 16 000234D2 # * ATANF TEST MONITOR
17: 17 000234D2 # *
18: 18 000234D2 # *****************************************************************************/
19: 19 000234D2 # atanf()
20: 20 000234D2 # {
21: 21 000234D2 11 4f jbr L217
22: 22 000234D4 L218:
23: 23 000234D4 # asm(".globl _atanf_t");
24: 24 000234D4 .globl _atanf_t
25: 25 000234D4 # asm("_atanf_t:"); /* entry address */
26: 26 000234D4 _atanf_t:
27: 27 000234D4 # if( ( cycle == 1 ) && ( prt_hdrs ) ) /* print headers on 1st pass */
28: 28 000234D4 1d effffffff6 01 cmpl _cycle,$1
29: 29 000234DB 21 15 jneq L219
30: 30 000234DD 5d efffffffed tstl _prt_hdrs
31: 31 000234E3 31 0d jeql L219
32: 32 000234E5 # {
33: 33 000234E5 # writes(" ATANF");
34: 34 000234E5 .data 1
35: 35 00000a64 * L221:
36: 36 00000a64 * 204154414E4600 .ascii " ATANF\0"
37: 37 00000a6b * .text
38: 38 000234E5 dd 8f00000a64 pushl $L221
39: 39 000234EB fe 08 efffffffde callf $8,_writes
40: 40 000234F2 # }
41: 41 000234F2 # atanf_1(); /* test square root w/ delay */
42: 42 000234F2 L219:
43: 43 000234F2 fe 04 ef0000002d callf $4,_atanf_1
44: 44 000234F9 # atanf_2(); /* test square root */
45: 45 000234F9 fe 04 ef00000198 callf $4,_atanf_2
46: 46 00023500 # atanf_3(); /* register corruption */
47: 47 00023500 fe 04 ef000002f1 callf $4,_atanf_3
48: 48 00023507 # atanf_4(); /* test the PSL */
49: 49 00023507 fe 04 ef000004d4 callf $4,_atanf_4
50: 50 0002350E # atanf_5(); /* pipelined entry */
51: 51 0002350E fe 04 ef00000681 callf $4,_atanf_5
52: 52 00023515 # atanf_6(); /* pipelined exit */
53: 53 00023515 fe 04 ef000007d6 callf $4,_atanf_6
54: 54 0002351C # asm("jmp *return"); /* return to the test monitor */
55: 55 0002351C 71 ffffffffae jmp *return
56: 56 00023522 # }
57: 57 00023522 40 ret#2
58: 58 00023523 .set L215,0x0
59: 59 00023523 L217:
60: 60 00023523 11 af jbr L218
61: 61 00023525 .data
62: 62 00000a64 * .text
63: 63 00023525 00 .align 1
64: 64 00023526 .globl _atanf_1
65: 65 00023526 _atanf_1:
66: 66 00023526 0000 .word L228
67: 67 00023528 #
68: 68 00023528 # /***************************************************************************
69: 69 00023528 # *
70: 70 00023528 # * SUBTEST 1 - ATANF FUNCTION
71: 71 00023528 # *
72: 72 00023528 # ***************************************************************************/
73: 73 00023528 # atanf_1()
74: 74 00023528 # {
75: 75 00023528 13 016a jbr L230
76: 76 0002352B L231:
77: 77 0002352B # #define DELAY 20 /* delay 40 ticks between ATANF & STF */
78: 78 0002352B # force_loop = FALSE; /* clear the LOOP flag */
79: 79 0002352B 4d efffffff9f clrl _force_loop
80: 80 00023531 # subtest = 1;
81: 81 00023531 0d 01 efffffff98 movl $1,_subtest
82: 82 00023538 # index = 0;
83: 83 00023538 4d efffffff92 clrl _index
84: 84 0002353E # do
85: 85 0002353E L234:
86: 86 0002353E # {
87: 87 0002353E # sgl_ld_acc = atanf_1_data[index].ld; /* get the operand */
88: 88 0002353E 0d efffffff8c 50 movl _index,r0
89: 89 00023545 48 03 50 50 shll $3,r0,r0
90: 90 00023549 0d e000000000 efffffff7c movl _atanf_1_data(r0),_sgl_ld_acc
91: 91 00023554 # sgl_expected = atanf_1_data[index].exp; /* get expected results */
92: 92 00023554 0d efffffff76 50 movl _index,r0
93: 93 0002355B 48 03 50 50 shll $3,r0,r0
94: 94 0002355F 0d e000000004 efffffff66 movl _atanf_1_data+4(r0),_sgl_expected
95: 95 0002356A # sgl_dummy1 = DELAY;
96: 96 0002356A 0d 14 efffffff5f movl $20,_sgl_dummy1
97: 97 00023571 # /*
98: 98 00023571 # * If LOOP ON ERROR is set, this is the loop for this subtest.
99: 99 00023571 # * The force loop flag is set after the first error.
100: 100 00023571 # */
101: 101 00023571 # asm("_atanf_1_lp1:");
102: 102 00023571 _atanf_1_lp1:
103: 103 00023571 # asm("movl _sgl_ld_acc,r4"); /* set the data to load */
104: 104 00023571 0d efffffff59 54 movl _sgl_ld_acc,r4
105: 105 00023578 # asm("ldf r4"); /* load the accumulator */
106: 106 00023578 06 54 ldf r4
107: 107 0002357A # asm("movl _sgl_dummy1,r0"); /* get the delay factor */
108: 108 0002357A 0d efffffff50 50 movl _sgl_dummy1,r0
109: 109 00023581 # asm("atanf"); /* get ACC.'s atanf */
110: 110 00023581 25 atanf
111: 111 00023582 # asm("1:");
112: 112 00023582 1:
113: 113 00023582 # asm("decl r0"); /* delay to let the COSF */
114: 114 00023582 7d 50 decl r0
115: 115 00023584 # asm("bgtr 1b"); /* instruction finish */
116: 116 00023584 41 fc bgtr 1b
117: 117 00023586 # asm("stf r5"); /* store the result */
118: 118 00023586 26 55 stf r5
119: 119 00023588 # if( force_loop )
120: 120 00023588 5d efffffff42 tstl _force_loop
121: 121 0002358E 31 02 jeql L235
122: 122 00023590 # asm("brb _atanf_1_lp1");; /* loop on the error */
123: 123 00023590 11 df brb _atanf_1_lp1
124: 124 00023592 L235:
125: 125 00023592 # /*
126: 126 00023592 # * end error loop
127: 127 00023592 # */
128: 128 00023592 # asm("movl r5,_sgl_st_acc"); /* save the result */
129: 129 00023592 0d 55 efffffff37 movl r5,_sgl_st_acc
130: 130 00023599 # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */
131: 131 00023599 1d efffffff31 efffffff2c cmpl _sgl_st_acc,_sgl_expected
132: 132 000235A4 21 03 13 00d2 jeql L236
133: 133 000235A9 # {
134: 134 000235A9 # errcnt++; /* bump the error count */
135: 135 000235A9 6d efffffff21 incl _errcnt
136: 136 000235AF # if ( prt_error )
137: 137 000235AF 5d efffffff1b tstl _prt_error
138: 138 000235B5 21 03 13 009b jeql L237
139: 139 000235BA # {
140: 140 000235BA # writes(" \n"); /* start a new print line */
141: 141 000235BA .data 1
142: 142 00000a6b * L238:
143: 143 00000a6b * 200A00 .ascii " \12\0"
144: 144 00000a6e * .text
145: 145 000235BA dd 8f00000a6b pushl $L238
146: 146 000235C0 fe 08 efffffff09 callf $8,_writes
147: 147 000235C7 # writes("cycle: ");
148: 148 000235C7 .data 1
149: 149 00000a6e * L239:
150: 150 00000a6e * 6379636C653A2000 .ascii "cycle: \0"
151: 151 00000a76 * .text
152: 152 000235C7 dd 8f00000a6e pushl $L239
153: 153 000235CD fe 08 effffffefc callf $8,_writes
154: 154 000235D4 # writed( cycle );
155: 155 000235D4 dd effffffef6 pushl _cycle
156: 156 000235DA fe 08 effffffeef callf $8,_writed
157: 157 000235E1 # writes(" ATANF test ");
158: 158 000235E1 .data 1
159: 159 00000a76 * L241:
160: 160 00000a76 * 2020204154414E46207465737 .ascii " ATANF test \0"
161: 42000
162: 161 00000a85 * .text
163: 162 000235E1 dd 8f00000a76 pushl $L241
164: 163 000235E7 fe 08 effffffee2 callf $8,_writes
165: 164 000235EE # writed( test_no );
166: 165 000235EE dd effffffedc pushl _test_no
167: 166 000235F4 fe 08 effffffed5 callf $8,_writed
168: 167 000235FB # writes(", subtest 1 (delayed store) - BAD FINAL ACC\n");
169: 168 000235FB .data 1
170: 169 00000a85 * L242:
171: 170 00000a85 * 2C20737562746573742031202 .ascii ", subtest 1 (delayed store) - BAD FINAL ACC\12\0"
172: 864656C617965642073746F72
173: 6529202D204241442046494E4
174: 14C204143430A00
175: 171 00000ab2 * .text
176: 172 000235FB dd 8f00000a85 pushl $L242
177: 173 00023601 fe 08 effffffec8 callf $8,_writes
178: 174 00023608 # print_atanf_data();
179: 175 00023608 fe 04 ef0000083f callf $4,_print_atanf_data
180: 176 0002360F # writes(", data index = ");
181: 177 0002360F .data 1
182: 178 00000ab2 * L244:
183: 179 00000ab2 * 2C20206461746120696E64657 .ascii ", data index = \0"
184: 8203D2000
185: 180 00000ac3 * .text
186: 181 0002360F dd 8f00000ab2 pushl $L244
187: 182 00023615 fe 08 effffffeb4 callf $8,_writes
188: 183 0002361C # writed( index );
189: 184 0002361C dd effffffeae pushl _index
190: 185 00023622 fe 08 effffffea7 callf $8,_writed
191: 186 00023629 # writec('\n');
192: 187 00023629 dd 0a pushl $10
193: 188 0002362B fe 08 effffffe9e callf $8,_writec
194: 189 00023632 # writes(" Acc expected = ");
195: 190 00023632 .data 1
196: 191 00000ac3 * L246:
197: 192 00000ac3 * 2020202020202020202020202 .ascii " Acc expected = \0"
198: 0202020202020202020416363
199: 206578706563746564203D200
200: 0
201: 193 00000ae9 * .text
202: 194 00023632 dd 8f00000ac3 pushl $L246
203: 195 00023638 fe 08 effffffe91 callf $8,_writes
204: 196 0002363F # write32h( sgl_expected );
205: 197 0002363F dd effffffe8b pushl _sgl_expected
206: 198 00023645 fe 08 effffffe84 callf $8,_write32h
207: 199 0002364C # writec('\n');
208: 200 0002364C dd 0a pushl $10
209: 201 0002364E fe 08 effffffe7b callf $8,_writec
210: 202 00023655 # }
211: 203 00023655 # if ( halt_flg ) /* halt on error? */
212: 204 00023655 L237:
213: 205 00023655 5d effffffe75 tstl _halt_flg
214: 206 0002365B 31 09 jeql L248
215: 207 0002365D # atanf_er_halt( BAD_ACC_HLT );
216: 208 0002365D dd 01 pushl $1
217: 209 0002365F fe 08 ef00000824 callf $8,_atanf_er_halt
218: 210 00023666 # if ( loop_on_err )
219: 211 00023666 L248:
220: 212 00023666 5d effffffe64 tstl _loop_on_err
221: 213 0002366C 31 0d jeql L250
222: 214 0002366E # {
223: 215 0002366E # force_loop = TRUE; /* set the force loop flag */
224: 216 0002366E 0d 01 effffffe5b movl $1,_force_loop
225: 217 00023675 # asm("jmp _atanf_1_lp1"); /* and loop */
226: 218 00023675 71 effffffef6 jmp _atanf_1_lp1
227: 219 0002367B # }
228: 220 0002367B # } /* end of compare error */
229: 221 0002367B L250:
230: 222 0002367B # } while( index++ < max_atanf_1_index );
231: 223 0002367B L236:
232: 224 0002367B L233:
233: 225 0002367B 0d effffffe4f 50 movl _index,r0
234: 226 00023682 6d effffffe48 incl _index
235: 227 00023688 1d 50 effffffe41 cmpl r0,_max_atanf_1_index
236: 228 0002368F 81 03 13 feaa jlss L234
237: 229 00023694 L232:
238: 230 00023694 # } /* end of subtest 1 */
239: 231 00023694 40 ret#2
240: 232 00023695 .set L228,0x0
241: 233 00023695 L230:
242: 234 00023695 13 fe93 jbr L231
243: 235 00023698 .data
244: 236 00000a64 * .text
245: 237 00023698 .align 1
246: 238 00023698 .globl _atanf_2
247: 239 00023698 _atanf_2:
248: 240 00023698 0000 .word L251
249: 241 0002369A #
250: 242 0002369A #
251: 243 0002369A #
252: 244 0002369A # /***************************************************************************
253: 245 0002369A # *
254: 246 0002369A # * SUBTEST 2 - ATANF FUNCTION
255: 247 0002369A # *
256: 248 0002369A # ***************************************************************************/
257: 249 0002369A # atanf_2()
258: 250 0002369A # {
259: 251 0002369A 13 0158 jbr L253
260: 252 0002369D L254:
261: 253 0002369D # force_loop = FALSE; /* clear the LOOP flag */
262: 254 0002369D 4d effffffe2d clrl _force_loop
263: 255 000236A3 # subtest = 2;
264: 256 000236A3 0d 02 effffffe26 movl $2,_subtest
265: 257 000236AA # index = 0;
266: 258 000236AA 4d effffffe20 clrl _index
267: 259 000236B0 # do
268: 260 000236B0 L257:
269: 261 000236B0 # {
270: 262 000236B0 # sgl_ld_acc = atanf_1_data[index].ld; /* get the operand */
271: 263 000236B0 0d effffffe1a 50 movl _index,r0
272: 264 000236B7 48 03 50 50 shll $3,r0,r0
273: 265 000236BB 0d e000000000 effffffe0a movl _atanf_1_data(r0),_sgl_ld_acc
274: 266 000236C6 # sgl_expected = atanf_1_data[index].exp; /* get expected results */
275: 267 000236C6 0d effffffe04 50 movl _index,r0
276: 268 000236CD 48 03 50 50 shll $3,r0,r0
277: 269 000236D1 0d e000000004 effffffdf4 movl _atanf_1_data+4(r0),_sgl_expected
278: 270 000236DC # /*
279: 271 000236DC # * If LOOP ON ERROR is set, this is the loop for this subtest.
280: 272 000236DC # * The force loop flag is set after the first error.
281: 273 000236DC # */
282: 274 000236DC # asm("_atanf_2_lp1:");
283: 275 000236DC _atanf_2_lp1:
284: 276 000236DC # asm("movl _sgl_ld_acc,r4"); /* set the data to load */
285: 277 000236DC 0d effffffdee 54 movl _sgl_ld_acc,r4
286: 278 000236E3 # asm("ldf r4"); /* load the accumulator */
287: 279 000236E3 06 54 ldf r4
288: 280 000236E5 # asm("atanf"); /* get ACC.'s atanf */
289: 281 000236E5 25 atanf
290: 282 000236E6 # asm("stf r5"); /* store the result */
291: 283 000236E6 26 55 stf r5
292: 284 000236E8 # if( force_loop )
293: 285 000236E8 5d effffffde2 tstl _force_loop
294: 286 000236EE 31 02 jeql L258
295: 287 000236F0 # asm("brb _atanf_2_lp1");; /* loop on the error */
296: 288 000236F0 11 ea brb _atanf_2_lp1
297: 289 000236F2 L258:
298: 290 000236F2 # /*
299: 291 000236F2 # * end error loop
300: 292 000236F2 # */
301: 293 000236F2 # asm("movl r5,_sgl_st_acc"); /* save the result */
302: 294 000236F2 0d 55 effffffdd7 movl r5,_sgl_st_acc
303: 295 000236F9 # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */
304: 296 000236F9 1d effffffdd1 effffffdcc cmpl _sgl_st_acc,_sgl_expected
305: 297 00023704 21 03 13 00d2 jeql L259
306: 298 00023709 # {
307: 299 00023709 # errcnt++; /* bump the error count */
308: 300 00023709 6d effffffdc1 incl _errcnt
309: 301 0002370F # if ( prt_error )
310: 302 0002370F 5d effffffdbb tstl _prt_error
311: 303 00023715 21 03 13 009b jeql L260
312: 304 0002371A # {
313: 305 0002371A # writes(" \n"); /* start a new print line */
314: 306 0002371A .data 1
315: 307 00000ae9 * L261:
316: 308 00000ae9 * 200A00 .ascii " \12\0"
317: 309 00000aec * .text
318: 310 0002371A dd 8f00000ae9 pushl $L261
319: 311 00023720 fe 08 effffffda9 callf $8,_writes
320: 312 00023727 # writes("cycle: ");
321: 313 00023727 .data 1
322: 314 00000aec * L262:
323: 315 00000aec * 6379636C653A2000 .ascii "cycle: \0"
324: 316 00000af4 * .text
325: 317 00023727 dd 8f00000aec pushl $L262
326: 318 0002372D fe 08 effffffd9c callf $8,_writes
327: 319 00023734 # writed( cycle );
328: 320 00023734 dd effffffd96 pushl _cycle
329: 321 0002373A fe 08 effffffd8f callf $8,_writed
330: 322 00023741 # writes(" ATANF test ");
331: 323 00023741 .data 1
332: 324 00000af4 * L263:
333: 325 00000af4 * 2020204154414E46207465737 .ascii " ATANF test \0"
334: 42000
335: 326 00000b03 * .text
336: 327 00023741 dd 8f00000af4 pushl $L263
337: 328 00023747 fe 08 effffffd82 callf $8,_writes
338: 329 0002374E # writed( test_no );
339: 330 0002374E dd effffffd7c pushl _test_no
340: 331 00023754 fe 08 effffffd75 callf $8,_writed
341: 332 0002375B # writes(", subtest 2 (immediate store) - BAD FINAL ACC\n");
342: 333 0002375B .data 1
343: 334 00000b03 * L264:
344: 335 00000b03 * 2C20737562746573742032202 .ascii ", subtest 2 (immediate store) - BAD FINAL ACC\12\0"
345: 8696D6D656469617465207374
346: 6F726529202D2042414420464
347: 94E414C204143430A00
348: 336 00000b32 * .text
349: 337 0002375B dd 8f00000b03 pushl $L264
350: 338 00023761 fe 08 effffffd68 callf $8,_writes
351: 339 00023768 # print_atanf_data();
352: 340 00023768 fe 04 ef000006df callf $4,_print_atanf_data
353: 341 0002376F # writes(", data index = ");
354: 342 0002376F .data 1
355: 343 00000b32 * L265:
356: 344 00000b32 * 2C20206461746120696E64657 .ascii ", data index = \0"
357: 8203D2000
358: 345 00000b43 * .text
359: 346 0002376F dd 8f00000b32 pushl $L265
360: 347 00023775 fe 08 effffffd54 callf $8,_writes
361: 348 0002377C # writed( index );
362: 349 0002377C dd effffffd4e pushl _index
363: 350 00023782 fe 08 effffffd47 callf $8,_writed
364: 351 00023789 # writec('\n');
365: 352 00023789 dd 0a pushl $10
366: 353 0002378B fe 08 effffffd3e callf $8,_writec
367: 354 00023792 # writes(" Acc expected = ");
368: 355 00023792 .data 1
369: 356 00000b43 * L266:
370: 357 00000b43 * 2020202020202020202020202 .ascii " Acc expected = \0"
371: 0202020202020202020416363
372: 206578706563746564203D200
373: 0
374: 358 00000b69 * .text
375: 359 00023792 dd 8f00000b43 pushl $L266
376: 360 00023798 fe 08 effffffd31 callf $8,_writes
377: 361 0002379F # write32h( sgl_expected );
378: 362 0002379F dd effffffd2b pushl _sgl_expected
379: 363 000237A5 fe 08 effffffd24 callf $8,_write32h
380: 364 000237AC # writec('\n');
381: 365 000237AC dd 0a pushl $10
382: 366 000237AE fe 08 effffffd1b callf $8,_writec
383: 367 000237B5 # }
384: 368 000237B5 # if ( halt_flg ) /* halt on error? */
385: 369 000237B5 L260:
386: 370 000237B5 5d effffffd15 tstl _halt_flg
387: 371 000237BB 31 09 jeql L267
388: 372 000237BD # atanf_er_halt( BAD_ACC_HLT );
389: 373 000237BD dd 01 pushl $1
390: 374 000237BF fe 08 ef000006c4 callf $8,_atanf_er_halt
391: 375 000237C6 # if ( loop_on_err )
392: 376 000237C6 L267:
393: 377 000237C6 5d effffffd04 tstl _loop_on_err
394: 378 000237CC 31 0d jeql L268
395: 379 000237CE # {
396: 380 000237CE # force_loop = TRUE; /* set the force loop flag */
397: 381 000237CE 0d 01 effffffcfb movl $1,_force_loop
398: 382 000237D5 # asm("jmp _atanf_2_lp1"); /* and loop */
399: 383 000237D5 71 efffffff01 jmp _atanf_2_lp1
400: 384 000237DB # }
401: 385 000237DB # } /* end of compare error */
402: 386 000237DB L268:
403: 387 000237DB # } while( index++ < max_atanf_1_index );
404: 388 000237DB L259:
405: 389 000237DB L256:
406: 390 000237DB 0d effffffcef 50 movl _index,r0
407: 391 000237E2 6d effffffce8 incl _index
408: 392 000237E8 1d 50 effffffce1 cmpl r0,_max_atanf_1_index
409: 393 000237EF 81 03 13 febc jlss L257
410: 394 000237F4 L255:
411: 395 000237F4 # } /* end of subtest 2 */
412: 396 000237F4 40 ret#2
413: 397 000237F5 .set L251,0x0
414: 398 000237F5 L253:
415: 399 000237F5 13 fea5 jbr L254
416: 400 000237F8 .data
417: 401 00000a64 * .text
418: 402 000237F8 .align 1
419: 403 000237F8 .globl _atanf_3
420: 404 000237F8 _atanf_3:
421: 405 000237F8 0000 .word L269
422: 406 000237FA #
423: 407 000237FA #
424: 408 000237FA #
425: 409 000237FA # /***************************************************************************
426: 410 000237FA # *
427: 411 000237FA # * SUBTEST 3 - REGISTER INTEGRITY WITH THE ATANF FUNCTION
428: 412 000237FA # *
429: 413 000237FA # ***************************************************************************/
430: 414 000237FA # atanf_3()
431: 415 000237FA # {
432: 416 000237FA 13 01e1 jbr L271
433: 417 000237FD L272:
434: 418 000237FD # fill_reg_buf( load_regs ); /* set reg values to load */
435: 419 000237FD dd 8f00000000 pushl $_load_regs
436: 420 00023803 fe 08 effffffcc6 callf $8,_fill_reg_buf
437: 421 0002380A # force_loop = FALSE; /* clear the LOOP flag */
438: 422 0002380A 4d effffffcc0 clrl _force_loop
439: 423 00023810 # subtest = 3;
440: 424 00023810 0d 03 effffffcb9 movl $3,_subtest
441: 425 00023817 # index = 0;
442: 426 00023817 4d effffffcb3 clrl _index
443: 427 0002381D # do
444: 428 0002381D L276:
445: 429 0002381D # {
446: 430 0002381D # sgl_ld_acc = atanf_1_data[index].ld; /* get the operand */
447: 431 0002381D 0d effffffcad 50 movl _index,r0
448: 432 00023824 48 03 50 50 shll $3,r0,r0
449: 433 00023828 0d e000000000 effffffc9d movl _atanf_1_data(r0),_sgl_ld_acc
450: 434 00023833 # sgl_expected = atanf_1_data[index].exp; /* get expected results */
451: 435 00023833 0d effffffc97 50 movl _index,r0
452: 436 0002383A 48 03 50 50 shll $3,r0,r0
453: 437 0002383E 0d e000000004 effffffc87 movl _atanf_1_data+4(r0),_sgl_expected
454: 438 00023849 # /*
455: 439 00023849 # * If LOOP ON ERROR is set, this is the loop for this subtest.
456: 440 00023849 # * The force loop flag is set after the first error.
457: 441 00023849 # */
458: 442 00023849 # asm("_atanf_3_lp1:");
459: 443 00023849 _atanf_3_lp1:
460: 444 00023849 # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
461: 445 00023849 ab 891fff effffffc7e loadr $0x1fff,_load_regs
462: 446 00023852 # asm("ldf _sgl_ld_acc"); /* load the accumulator */
463: 447 00023852 06 effffffc78 ldf _sgl_ld_acc
464: 448 00023858 # asm("atanf"); /* get ACC.'s atanf */
465: 449 00023858 25 atanf
466: 450 00023859 # asm("stf _sgl_st_acc"); /* store the result */
467: 451 00023859 26 effffffc71 stf _sgl_st_acc
468: 452 0002385F # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
469: 453 0002385F bb 891fff effffffc68 storer $0x1fff,_store_regs
470: 454 00023868 # if( force_loop )
471: 455 00023868 5d effffffc62 tstl _force_loop
472: 456 0002386E 31 02 jeql L277
473: 457 00023870 # asm("brb _atanf_3_lp1");; /* loop on the error */
474: 458 00023870 11 d7 brb _atanf_3_lp1
475: 459 00023872 L277:
476: 460 00023872 # /*
477: 461 00023872 # * end error loop
478: 462 00023872 # */
479: 463 00023872 # reg_no = 0;
480: 464 00023872 4d effffffc58 clrl _reg_no
481: 465 00023878 # regs_ok = TRUE;
482: 466 00023878 0d 01 effffffc51 movl $1,_regs_ok
483: 467 0002387F # while( (reg_no < 13) && (regs_ok) ) /* check 1st 12 regs */
484: 468 0002387F L278:
485: 469 0002387F 1d effffffc4b 0d cmpl _reg_no,$13
486: 470 00023886 81 35 jgeq L279
487: 471 00023888 5d effffffc42 tstl _regs_ok
488: 472 0002388E 31 2d jeql L279
489: 473 00023890 # if( store_regs[ reg_no ] == load_regs[ reg_no ] )
490: 474 00023890 0d effffffc3a 50 movl _reg_no,r0
491: 475 00023897 0d effffffc33 51 movl _reg_no,r1
492: 476 0002389E 1d 40effffffc2b cmpl _store_regs[r0],_load_regs[r1]
493: 41effffffc25
494: 477 000238AB 21 08 jneq L280
495: 478 000238AD # reg_no++;
496: 479 000238AD 6d effffffc1d incl _reg_no
497: 480 000238B3 # else
498: 481 000238B3 11 06 jbr L281
499: 482 000238B5 L280:
500: 483 000238B5 # regs_ok = FALSE;
501: 484 000238B5 4d effffffc15 clrl _regs_ok
502: 485 000238BB L281:
503: 486 000238BB 11 c2 jbr L278
504: 487 000238BD L279:
505: 488 000238BD # if( !regs_ok )
506: 489 000238BD 5d effffffc0d tstl _regs_ok
507: 490 000238C3 31 03 13 00fc jneq L282
508: 491 000238C8 # {
509: 492 000238C8 # errcnt++; /* bump the error count */
510: 493 000238C8 6d effffffc02 incl _errcnt
511: 494 000238CE # if ( prt_error )
512: 495 000238CE 5d effffffbfc tstl _prt_error
513: 496 000238D4 21 03 13 00eb jeql L283
514: 497 000238D9 # {
515: 498 000238D9 # writes(" \n"); /* start a new print line */
516: 499 000238D9 .data 1
517: 500 00000b69 * L284:
518: 501 00000b69 * 200A00 .ascii " \12\0"
519: 502 00000b6c * .text
520: 503 000238D9 dd 8f00000b69 pushl $L284
521: 504 000238DF fe 08 effffffbea callf $8,_writes
522: 505 000238E6 # writes("cycle: ");
523: 506 000238E6 .data 1
524: 507 00000b6c * L285:
525: 508 00000b6c * 6379636C653A2000 .ascii "cycle: \0"
526: 509 00000b74 * .text
527: 510 000238E6 dd 8f00000b6c pushl $L285
528: 511 000238EC fe 08 effffffbdd callf $8,_writes
529: 512 000238F3 # writed( cycle );
530: 513 000238F3 dd effffffbd7 pushl _cycle
531: 514 000238F9 fe 08 effffffbd0 callf $8,_writed
532: 515 00023900 # writes(" ATANF test ");
533: 516 00023900 .data 1
534: 517 00000b74 * L286:
535: 518 00000b74 * 2020204154414E46207465737 .ascii " ATANF test \0"
536: 42000
537: 519 00000b83 * .text
538: 520 00023900 dd 8f00000b74 pushl $L286
539: 521 00023906 fe 08 effffffbc3 callf $8,_writes
540: 522 0002390D # writed( test_no );
541: 523 0002390D dd effffffbbd pushl _test_no
542: 524 00023913 fe 08 effffffbb6 callf $8,_writed
543: 525 0002391A # writes(", subtest 3 - A REGISTER WAS MODIFIED\n"); {
544: 526 0002391A .data 1
545: 527 00000b83 * L287:
546: 528 00000b83 * 2C20737562746573742033202 .ascii ", subtest 3 - A REGISTER WAS MODIFIED\12\0"
547: D204120524547495354455220
548: 574153204D4F4449464945440
549: A00
550: 529 00000baa * .text
551: 530 0002391A dd 8f00000b83 pushl $L287
552: 531 00023920 fe 08 effffffba9 callf $8,_writes
553: 532 00023927 # print_atanf_data();
554: 533 00023927 fe 04 ef00000520 callf $4,_print_atanf_data
555: 534 0002392E # writec('\n');
556: 535 0002392E dd 0a pushl $10
557: 536 00023930 fe 08 effffffb99 callf $8,_writec
558: 537 00023937 # writes("register ");
559: 538 00023937 .data 1
560: 539 00000baa * L288:
561: 540 00000baa * 72656769737465722000 .ascii "register \0"
562: 541 00000bb4 * .text
563: 542 00023937 dd 8f00000baa pushl $L288
564: 543 0002393D fe 08 effffffb8c callf $8,_writes
565: 544 00023944 # writed( reg_no );
566: 545 00023944 dd effffffb86 pushl _reg_no
567: 546 0002394A fe 08 effffffb7f callf $8,_writed
568: 547 00023951 # writes(" = ");
569: 548 00023951 .data 1
570: 549 00000bb4 * L289:
571: 550 00000bb4 * 203D2000 .ascii " = \0"
572: 551 00000bb8 * .text
573: 552 00023951 dd 8f00000bb4 pushl $L289
574: 553 00023957 fe 08 effffffb72 callf $8,_writes
575: 554 0002395E # write32h( load_regs[reg_no] );
576: 555 0002395E 0d effffffb6c 50 movl _reg_no,r0
577: 556 00023965 dd 40effffffb64 pushl _load_regs[r0]
578: 557 0002396C fe 08 effffffb5d callf $8,_write32h
579: 558 00023973 # writes(", should be = ");
580: 559 00023973 .data 1
581: 560 00000bb8 * L290:
582: 561 00000bb8 * 2C202073686F756C642062652 .ascii ", should be = \0"
583: 03D2000
584: 562 00000bc8 * .text
585: 563 00023973 dd 8f00000bb8 pushl $L290
586: 564 00023979 fe 08 effffffb50 callf $8,_writes
587: 565 00023980 # write32h( store_regs[reg_no] );
588: 566 00023980 0d effffffb4a 50 movl _reg_no,r0
589: 567 00023987 dd 40effffffb42 pushl _store_regs[r0]
590: 568 0002398E fe 08 effffffb3b callf $8,_write32h
591: 569 00023995 # writec('\n');
592: 570 00023995 dd 0a pushl $10
593: 571 00023997 fe 08 effffffb32 callf $8,_writec
594: 572 0002399E # }
595: 573 0002399E # if ( halt_flg ) /* halt on error? */
596: 574 0002399E 5d effffffb2c tstl _halt_flg
597: 575 000239A4 31 09 jeql L291
598: 576 000239A6 # atanf_er_halt( BAD_REG_HLT );
599: 577 000239A6 dd 02 pushl $2
600: 578 000239A8 fe 08 ef000004db callf $8,_atanf_er_halt
601: 579 000239AF # if ( loop_on_err )
602: 580 000239AF L291:
603: 581 000239AF 5d effffffb1b tstl _loop_on_err
604: 582 000239B5 31 0d jeql L292
605: 583 000239B7 # {
606: 584 000239B7 # force_loop = TRUE; /* get the force loop flag */
607: 585 000239B7 0d 01 effffffb12 movl $1,_force_loop
608: 586 000239BE # asm("jmp _atanf_3_lp1"); /* and loop */
609: 587 000239BE 71 effffffe85 jmp _atanf_3_lp1
610: 588 000239C4 # }
611: 589 000239C4 # } /* end of compare error */
612: 590 000239C4 L292:
613: 591 000239C4 # } /* end of while loop */
614: 592 000239C4 L283:
615: 593 000239C4 # } while( index++ < max_atanf_1_index );
616: 594 000239C4 L282:
617: 595 000239C4 L275:
618: 596 000239C4 0d effffffb06 50 movl _index,r0
619: 597 000239CB 6d effffffaff incl _index
620: 598 000239D1 1d 50 effffffaf8 cmpl r0,_max_atanf_1_index
621: 599 000239D8 81 03 13 fe40 jlss L276
622: 600 000239DD L274:
623: 601 000239DD # } /* end of subtest 3 */
624: 602 000239DD 40 ret#2
625: 603 000239DE .set L269,0x0
626: 604 000239DE L271:
627: 605 000239DE 13 fe1c jbr L272
628: 606 000239E1 .data
629: 607 00000a64 * .text
630: 608 000239E1 00 .align 1
631: 609 000239E2 .globl _atanf_4
632: 610 000239E2 _atanf_4:
633: 611 000239E2 0000 .word L293
634: 612 000239E4 #
635: 613 000239E4 #
636: 614 000239E4 #
637: 615 000239E4 # /************************************************************************
638: 616 000239E4 # *
639: 617 000239E4 # * SUBTEST 4 - Check for PSL corruption
640: 618 000239E4 # *
641: 619 000239E4 # ************************************************************************/
642: 620 000239E4 # atanf_4()
643: 621 000239E4 # {
644: 622 000239E4 13 01ac jbr L295
645: 623 000239E7 L296:
646: 624 000239E7 # force_loop = FALSE; /* clear force_loop flg */
647: 625 000239E7 4d effffffae3 clrl _force_loop
648: 626 000239ED # subtest = 4;
649: 627 000239ED 0d 04 effffffadc movl $4,_subtest
650: 628 000239F4 # fill_reg_buf( load_regs ); /* get patterns for regs */
651: 629 000239F4 dd 8f00000000 pushl $_load_regs
652: 630 000239FA fe 08 effffffacf callf $8,_fill_reg_buf
653: 631 00023A01 # for( index = 0; index < 3; index++ ) {
654: 632 00023A01 4d effffffac9 clrl _index
655: 633 00023A07 L299:
656: 634 00023A07 1d effffffac3 03 cmpl _index,$3
657: 635 00023A0E 91 03 13 017f jgeq L298
658: 636 00023A13 # sgl_ld_acc = atanf_1_data[index].ld; /* get operand 1 */
659: 637 00023A13 0d effffffab7 50 movl _index,r0
660: 638 00023A1A 48 03 50 50 shll $3,r0,r0
661: 639 00023A1E 0d e000000000 effffffaa7 movl _atanf_1_data(r0),_sgl_ld_acc
662: 640 00023A29 # sgl_expected = atanf_1_data[index].exp; /* get expected */
663: 641 00023A29 0d effffffaa1 50 movl _index,r0
664: 642 00023A30 48 03 50 50 shll $3,r0,r0
665: 643 00023A34 0d e000000004 effffffa91 movl _atanf_1_data+4(r0),_sgl_expected
666: 644 00023A3F # sgl_dummy1 = status_array[index]; /* status = +, -, 0 */
667: 645 00023A3F 0d effffffa8b 50 movl _index,r0
668: 646 00023A46 0d 40effffffa83 movl _status_array[r0],_sgl_dummy1
669: effffffa7e
670: 647 00023A52 # /*
671: 648 00023A52 # * If LOOP ON ERROR is set, this is the loop for this subtest.
672: 649 00023A52 # * The force loop flag is set after the first error.
673: 650 00023A52 # */
674: 651 00023A52 # asm("_atanf_4_lp1:");
675: 652 00023A52 _atanf_4_lp1:
676: 653 00023A52 # asm("ldf _sgl_ld_acc"); /* LOAD the accumulator */
677: 654 00023A52 06 effffffa78 ldf _sgl_ld_acc
678: 655 00023A58 # asm("nop");
679: 656 00023A58 10 nop
680: 657 00023A59 # asm("tstl _sgl_dummy1"); /* set the PSL status */
681: 658 00023A59 5d effffffa71 tstl _sgl_dummy1
682: 659 00023A5F # asm("movpsl _init_psl"); /* save the initial PSL */
683: 660 00023A5F cd effffffa6b movpsl _init_psl
684: 661 00023A65 # asm("atanf"); /* do the atanf */
685: 662 00023A65 25 atanf
686: 663 00023A66 # asm("nop");
687: 664 00023A66 10 nop
688: 665 00023A67 # asm("movpsl _psl_val"); /* save the final PSL */
689: 666 00023A67 cd effffffa63 movpsl _psl_val
690: 667 00023A6D # asm("stf _sgl_st_acc"); /* save the accumulator */
691: 668 00023A6D 26 effffffa5d stf _sgl_st_acc
692: 669 00023A73 # if( force_loop )
693: 670 00023A73 5d effffffa57 tstl _force_loop
694: 671 00023A79 31 02 jeql L300
695: 672 00023A7B # asm("brb _atanf_4_lp1");; /* loop on the error */
696: 673 00023A7B 11 d5 brb _atanf_4_lp1
697: 674 00023A7D L300:
698: 675 00023A7D # /*
699: 676 00023A7D # * Now compare the final PSL to the initial PSL -they should be the same
700: 677 00023A7D # */
701: 678 00023A7D # exp_psl = init_psl;
702: 679 00023A7D 0d effffffa4d effffffa48 movl _init_psl,_exp_psl
703: 680 00023A88 # if( psl_val != exp_psl ) {
704: 681 00023A88 1d effffffa42 effffffa3d cmpl _psl_val,_exp_psl
705: 682 00023A93 21 03 13 00f1 jeql L301
706: 683 00023A98 # errcnt++; /* bump the error count */
707: 684 00023A98 6d effffffa32 incl _errcnt
708: 685 00023A9E # if( prt_error ) {
709: 686 00023A9E 5d effffffa2c tstl _prt_error
710: 687 00023AA4 21 03 13 00bd jeql L302
711: 688 00023AA9 # writes(" \n"); /* start a new print line */
712: 689 00023AA9 .data 1
713: 690 00000bc8 * L303:
714: 691 00000bc8 * 200A00 .ascii " \12\0"
715: 692 00000bcb * .text
716: 693 00023AA9 dd 8f00000bc8 pushl $L303
717: 694 00023AAF fe 08 effffffa1a callf $8,_writes
718: 695 00023AB6 # writes("cycle: ");
719: 696 00023AB6 .data 1
720: 697 00000bcb * L304:
721: 698 00000bcb * 6379636C653A2000 .ascii "cycle: \0"
722: 699 00000bd3 * .text
723: 700 00023AB6 dd 8f00000bcb pushl $L304
724: 701 00023ABC fe 08 effffffa0d callf $8,_writes
725: 702 00023AC3 # writed( cycle );
726: 703 00023AC3 dd effffffa07 pushl _cycle
727: 704 00023AC9 fe 08 effffffa00 callf $8,_writed
728: 705 00023AD0 # writes(" ATANF test ");
729: 706 00023AD0 .data 1
730: 707 00000bd3 * L305:
731: 708 00000bd3 * 2020204154414E46207465737 .ascii " ATANF test \0"
732: 42000
733: 709 00000be2 * .text
734: 710 00023AD0 dd 8f00000bd3 pushl $L305
735: 711 00023AD6 fe 08 effffff9f3 callf $8,_writes
736: 712 00023ADD # writed( test_no );
737: 713 00023ADD dd effffff9ed pushl _test_no
738: 714 00023AE3 fe 08 effffff9e6 callf $8,_writed
739: 715 00023AEA # writes(", subtest 4 - INCORRECT FINAL PSL\n");
740: 716 00023AEA .data 1
741: 717 00000be2 * L306:
742: 718 00000be2 * 2C20737562746573742034202 .ascii ", subtest 4 - INCORRECT FINAL PSL\12\0"
743: D20494E434F52524543542046
744: 494E414C2050534C0A00
745: 719 00000c05 * .text
746: 720 00023AEA dd 8f00000be2 pushl $L306
747: 721 00023AF0 fe 08 effffff9d9 callf $8,_writes
748: 722 00023AF7 # print_atanf_data(); /* print the operands */
749: 723 00023AF7 fe 04 ef00000350 callf $4,_print_atanf_data
750: 724 00023AFE # writes("\n");
751: 725 00023AFE .data 1
752: 726 00000c05 * L307:
753: 727 00000c05 * 0A00 .ascii "\12\0"
754: 728 00000c07 * .text
755: 729 00023AFE dd 8f00000c05 pushl $L307
756: 730 00023B04 fe 08 effffff9c5 callf $8,_writes
757: 731 00023B0B # writes("initial PSL = ");
758: 732 00023B0B .data 1
759: 733 00000c07 * L308:
760: 734 00000c07 * 696E697469616C2050534C203 .ascii "initial PSL = \0"
761: D2000
762: 735 00000c16 * .text
763: 736 00023B0B dd 8f00000c07 pushl $L308
764: 737 00023B11 fe 08 effffff9b8 callf $8,_writes
765: 738 00023B18 # write32h( init_psl );
766: 739 00023B18 dd effffff9b2 pushl _init_psl
767: 740 00023B1E fe 08 effffff9ab callf $8,_write32h
768: 741 00023B25 # writes(", final PSL = ");
769: 742 00023B25 .data 1
770: 743 00000c16 * L309:
771: 744 00000c16 * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
772: 03D2000
773: 745 00000c26 * .text
774: 746 00023B25 dd 8f00000c16 pushl $L309
775: 747 00023B2B fe 08 effffff99e callf $8,_writes
776: 748 00023B32 # write32h( psl_val );
777: 749 00023B32 dd effffff998 pushl _psl_val
778: 750 00023B38 fe 08 effffff991 callf $8,_write32h
779: 751 00023B3F # writes(", expected PSL = ");
780: 752 00023B3F .data 1
781: 753 00000c26 * L310:
782: 754 00000c26 * 2C20206578706563746564205 .ascii ", expected PSL = \0"
783: 0534C203D2000
784: 755 00000c39 * .text
785: 756 00023B3F dd 8f00000c26 pushl $L310
786: 757 00023B45 fe 08 effffff984 callf $8,_writes
787: 758 00023B4C # write32h( exp_psl );
788: 759 00023B4C dd effffff97e pushl _exp_psl
789: 760 00023B52 fe 08 effffff977 callf $8,_write32h
790: 761 00023B59 # writes("\n");
791: 762 00023B59 .data 1
792: 763 00000c39 * L311:
793: 764 00000c39 * 0A00 .ascii "\12\0"
794: 765 00000c3b * .text
795: 766 00023B59 dd 8f00000c39 pushl $L311
796: 767 00023B5F fe 08 effffff96a callf $8,_writes
797: 768 00023B66 # }
798: 769 00023B66 # if( halt_flg )
799: 770 00023B66 L302:
800: 771 00023B66 5d effffff964 tstl _halt_flg
801: 772 00023B6C 31 09 jeql L312
802: 773 00023B6E # atanf_er_halt( BAD_PSL_HLT ); /* halt on the error */
803: 774 00023B6E dd 03 pushl $3
804: 775 00023B70 fe 08 ef00000313 callf $8,_atanf_er_halt
805: 776 00023B77 # if( loop_on_err ) {
806: 777 00023B77 L312:
807: 778 00023B77 5d effffff953 tstl _loop_on_err
808: 779 00023B7D 31 0a jeql L313
809: 780 00023B7F # force_loop = TRUE; /* set the force loop flag */
810: 781 00023B7F 0d 01 effffff94a movl $1,_force_loop
811: 782 00023B86 # asm("brw _atanf_4_lp1");; /* and loop on the error */
812: 783 00023B86 13 fec9 brw _atanf_4_lp1
813: 784 00023B89 # } /* end of loop on error */
814: 785 00023B89 # } /* end of PSL corruption error */
815: 786 00023B89 L313:
816: 787 00023B89 # } /* end of WHILE loop */
817: 788 00023B89 L301:
818: 789 00023B89 L297:
819: 790 00023B89 6d effffff941 incl _index
820: 791 00023B8F 13 fe75 jbr L299
821: 792 00023B92 L298:
822: 793 00023B92 # } /* end of subtest 4 */
823: 794 00023B92 40 ret#2
824: 795 00023B93 .set L293,0x0
825: 796 00023B93 L295:
826: 797 00023B93 13 fe51 jbr L296
827: 798 00023B96 .data
828: 799 00000a64 * .text
829: 800 00023B96 .align 1
830: 801 00023B96 .globl _atanf_5
831: 802 00023B96 _atanf_5:
832: 803 00023B96 0000 .word L314
833: 804 00023B98 #
834: 805 00023B98 #
835: 806 00023B98 #
836: 807 00023B98 # /************************************************************************
837: 808 00023B98 # *
838: 809 00023B98 # * SUBTEST 5 - pipelined entry test
839: 810 00023B98 # *
840: 811 00023B98 # ************************************************************************/
841: 812 00023B98 # atanf_5()
842: 813 00023B98 # {
843: 814 00023B98 13 0154 jbr L316
844: 815 00023B9B L317:
845: 816 00023B9B # force_loop = FALSE;
846: 817 00023B9B 4d effffff92f clrl _force_loop
847: 818 00023BA1 # subtest = 8;
848: 819 00023BA1 0d 08 effffff928 movl $8,_subtest
849: 820 00023BA8 # for( index = 0; index < max_atanf_1_index; index++ ) {
850: 821 00023BA8 4d effffff922 clrl _index
851: 822 00023BAE L320:
852: 823 00023BAE 1d effffff91c effffff917 cmpl _index,_max_atanf_1_index
853: 824 00023BB9 91 03 13 0130 jgeq L319
854: 825 00023BBE # sgl_ld_acc = atanf_1_data[index].ld; /* get operand 1 */
855: 826 00023BBE 0d effffff90c 50 movl _index,r0
856: 827 00023BC5 48 03 50 50 shll $3,r0,r0
857: 828 00023BC9 0d e000000000 effffff8fc movl _atanf_1_data(r0),_sgl_ld_acc
858: 829 00023BD4 # sgl_expected = atanf_1_data[index].exp; /* get expected result */
859: 830 00023BD4 0d effffff8f6 50 movl _index,r0
860: 831 00023BDB 48 03 50 50 shll $3,r0,r0
861: 832 00023BDF 0d e000000004 effffff8e6 movl _atanf_1_data+4(r0),_sgl_expected
862: 833 00023BEA # /*
863: 834 00023BEA # * If LOOP ON ERROR is set, this is the loop for this subtest.
864: 835 00023BEA # * The force loop flag is set after the first error.
865: 836 00023BEA # */
866: 837 00023BEA # asm("_atanf_5_lp1:");
867: 838 00023BEA _atanf_5_lp1:
868: 839 00023BEA # asm("movl $0,r0"); /* clear r0 */
869: 840 00023BEA 0d 00 50 movl $0,r0
870: 841 00023BED # asm("ldf r0"); /* load the Acc. with 0.0 */
871: 842 00023BED 06 50 ldf r0
872: 843 00023BEF # asm("addf _sgl_ld_acc"); /* add the 1st operand */
873: 844 00023BEF c6 effffff8db addf _sgl_ld_acc
874: 845 00023BF5 # asm("atanf"); /* get the atanf */
875: 846 00023BF5 25 atanf
876: 847 00023BF6 # asm("stf _sgl_st_acc"); /* store the result */
877: 848 00023BF6 26 effffff8d4 stf _sgl_st_acc
878: 849 00023BFC # if( force_loop )
879: 850 00023BFC 5d effffff8ce tstl _force_loop
880: 851 00023C02 31 02 jeql L321
881: 852 00023C04 # asm("brb _atanf_5_lp1");; /* loop on the error */
882: 853 00023C04 11 e4 brb _atanf_5_lp1
883: 854 00023C06 L321:
884: 855 00023C06 # /*
885: 856 00023C06 # * end error loop - test the results
886: 857 00023C06 # */
887: 858 00023C06 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
888: 859 00023C06 1d effffff8c4 effffff8bf cmpl _sgl_st_acc,_sgl_expected
889: 860 00023C11 21 03 13 00cf jeql L322
890: 861 00023C16 # errcnt++; /* bump the error count */
891: 862 00023C16 6d effffff8b4 incl _errcnt
892: 863 00023C1C # if( prt_error ) {
893: 864 00023C1C 5d effffff8ae tstl _prt_error
894: 865 00023C22 21 03 13 009b jeql L323
895: 866 00023C27 # writes(" \n"); /* start a new print line */
896: 867 00023C27 .data 1
897: 868 00000c3b * L324:
898: 869 00000c3b * 200A00 .ascii " \12\0"
899: 870 00000c3e * .text
900: 871 00023C27 dd 8f00000c3b pushl $L324
901: 872 00023C2D fe 08 effffff89c callf $8,_writes
902: 873 00023C34 # writes("cycle: ");
903: 874 00023C34 .data 1
904: 875 00000c3e * L325:
905: 876 00000c3e * 6379636C653A2000 .ascii "cycle: \0"
906: 877 00000c46 * .text
907: 878 00023C34 dd 8f00000c3e pushl $L325
908: 879 00023C3A fe 08 effffff88f callf $8,_writes
909: 880 00023C41 # writed( cycle );
910: 881 00023C41 dd effffff889 pushl _cycle
911: 882 00023C47 fe 08 effffff882 callf $8,_writed
912: 883 00023C4E # writes(" ATANF test ");
913: 884 00023C4E .data 1
914: 885 00000c46 * L326:
915: 886 00000c46 * 2020204154414E46207465737 .ascii " ATANF test \0"
916: 42000
917: 887 00000c55 * .text
918: 888 00023C4E dd 8f00000c46 pushl $L326
919: 889 00023C54 fe 08 effffff875 callf $8,_writes
920: 890 00023C5B # writed( test_no );
921: 891 00023C5B dd effffff86f pushl _test_no
922: 892 00023C61 fe 08 effffff868 callf $8,_writed
923: 893 00023C68 # writes(", subtest 5 (Piped Entry) - BAD FINAL ACC\n");
924: 894 00023C68 .data 1
925: 895 00000c55 * L327:
926: 896 00000c55 * 2C20737562746573742035202 .ascii ", subtest 5 (Piped Entry) - BAD FINAL ACC\12\0"
927: 8506970656420456E74727929
928: 202D204241442046494E414C2
929: 04143430A00
930: 897 00000c80 * .text
931: 898 00023C68 dd 8f00000c55 pushl $L327
932: 899 00023C6E fe 08 effffff85b callf $8,_writes
933: 900 00023C75 # print_atanf_data();
934: 901 00023C75 fe 04 ef000001d2 callf $4,_print_atanf_data
935: 902 00023C7C # writes(", data index = ");
936: 903 00023C7C .data 1
937: 904 00000c80 * L328:
938: 905 00000c80 * 2C20206461746120696E64657 .ascii ", data index = \0"
939: 8203D2000
940: 906 00000c91 * .text
941: 907 00023C7C dd 8f00000c80 pushl $L328
942: 908 00023C82 fe 08 effffff847 callf $8,_writes
943: 909 00023C89 # writed( index );
944: 910 00023C89 dd effffff841 pushl _index
945: 911 00023C8F fe 08 effffff83a callf $8,_writed
946: 912 00023C96 # writec('\n');
947: 913 00023C96 dd 0a pushl $10
948: 914 00023C98 fe 08 effffff831 callf $8,_writec
949: 915 00023C9F # writes(" Acc expected = ");
950: 916 00023C9F .data 1
951: 917 00000c91 * L329:
952: 918 00000c91 * 2020202020202020202020202 .ascii " Acc expected = \0"
953: 0202020202020202020416363
954: 206578706563746564203D200
955: 0
956: 919 00000cb7 * .text
957: 920 00023C9F dd 8f00000c91 pushl $L329
958: 921 00023CA5 fe 08 effffff824 callf $8,_writes
959: 922 00023CAC # write32h( sgl_expected );
960: 923 00023CAC dd effffff81e pushl _sgl_expected
961: 924 00023CB2 fe 08 effffff817 callf $8,_write32h
962: 925 00023CB9 # writec('\n');
963: 926 00023CB9 dd 0a pushl $10
964: 927 00023CBB fe 08 effffff80e callf $8,_writec
965: 928 00023CC2 # }
966: 929 00023CC2 # if( halt_flg )
967: 930 00023CC2 L323:
968: 931 00023CC2 5d effffff808 tstl _halt_flg
969: 932 00023CC8 31 09 jeql L330
970: 933 00023CCA # atanf_er_halt( BAD_ACC_HLT ); /* halt on the error */
971: 934 00023CCA dd 01 pushl $1
972: 935 00023CCC fe 08 ef000001b7 callf $8,_atanf_er_halt
973: 936 00023CD3 # if( loop_on_err ) {
974: 937 00023CD3 L330:
975: 938 00023CD3 5d effffff7f7 tstl _loop_on_err
976: 939 00023CD9 31 0a jeql L331
977: 940 00023CDB # force_loop = TRUE; /* set the force loop flag */
978: 941 00023CDB 0d 01 effffff7ee movl $1,_force_loop
979: 942 00023CE2 # asm("brw _atanf_5_lp1");; /* and loop on the error */
980: 943 00023CE2 13 ff05 brw _atanf_5_lp1
981: 944 00023CE5 # } /* end of loop on error */
982: 945 00023CE5 # } /* end of compare error */
983: 946 00023CE5 L331:
984: 947 00023CE5 # } /* end of WHILE loop */
985: 948 00023CE5 L322:
986: 949 00023CE5 L318:
987: 950 00023CE5 6d effffff7e5 incl _index
988: 951 00023CEB 13 fec0 jbr L320
989: 952 00023CEE L319:
990: 953 00023CEE # } /* end of subtest 5 */
991: 954 00023CEE 40 ret#2
992: 955 00023CEF .set L314,0x0
993: 956 00023CEF L316:
994: 957 00023CEF 13 fea9 jbr L317
995: 958 00023CF2 .data
996: 959 00000a64 * .text
997: 960 00023CF2 .align 1
998: 961 00023CF2 .globl _atanf_6
999: 962 00023CF2 _atanf_6:
1000: 963 00023CF2 0000 .word L332
1001: 964 00023CF4 #
1002: 965 00023CF4 #
1003: 966 00023CF4 #
1004: 967 00023CF4 # /************************************************************************
1005: 968 00023CF4 # *
1006: 969 00023CF4 # * SUBTEST 6 - pipelined exit test
1007: 970 00023CF4 # *
1008: 971 00023CF4 # ************************************************************************/
1009: 972 00023CF4 # atanf_6()
1010: 973 00023CF4 # {
1011: 974 00023CF4 13 0154 jbr L334
1012: 975 00023CF7 L335:
1013: 976 00023CF7 # force_loop = FALSE;
1014: 977 00023CF7 4d effffff7d3 clrl _force_loop
1015: 978 00023CFD # subtest = 8;
1016: 979 00023CFD 0d 08 effffff7cc movl $8,_subtest
1017: 980 00023D04 # for( index = 0; index < max_atanf_1_index; index++ ) {
1018: 981 00023D04 4d effffff7c6 clrl _index
1019: 982 00023D0A L338:
1020: 983 00023D0A 1d effffff7c0 effffff7bb cmpl _index,_max_atanf_1_index
1021: 984 00023D15 91 03 13 0130 jgeq L337
1022: 985 00023D1A # sgl_ld_acc = atanf_1_data[index].ld; /* get operand 1 */
1023: 986 00023D1A 0d effffff7b0 50 movl _index,r0
1024: 987 00023D21 48 03 50 50 shll $3,r0,r0
1025: 988 00023D25 0d e000000000 effffff7a0 movl _atanf_1_data(r0),_sgl_ld_acc
1026: 989 00023D30 # sgl_expected = atanf_1_data[index].exp; /* get expected result */
1027: 990 00023D30 0d effffff79a 50 movl _index,r0
1028: 991 00023D37 48 03 50 50 shll $3,r0,r0
1029: 992 00023D3B 0d e000000004 effffff78a movl _atanf_1_data+4(r0),_sgl_expected
1030: 993 00023D46 # /*
1031: 994 00023D46 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1032: 995 00023D46 # * The force loop flag is set after the first error.
1033: 996 00023D46 # */
1034: 997 00023D46 # asm("_atanf_6_lp1:");
1035: 998 00023D46 _atanf_6_lp1:
1036: 999 00023D46 # asm("movl $0,r0"); /* clear r0 */
1037: 1000 00023D46 0d 00 50 movl $0,r0
1038: 1001 00023D49 # asm("ldf _sgl_ld_acc"); /* load the Acc. */
1039: 1002 00023D49 06 effffff781 ldf _sgl_ld_acc
1040: 1003 00023D4F # asm("atanf"); /* get the atanf */
1041: 1004 00023D4F 25 atanf
1042: 1005 00023D50 # asm("addf r0"); /* add a zero to the acc */
1043: 1006 00023D50 c6 50 addf r0
1044: 1007 00023D52 # asm("stf _sgl_st_acc"); /* store the result */
1045: 1008 00023D52 26 effffff778 stf _sgl_st_acc
1046: 1009 00023D58 # if( force_loop )
1047: 1010 00023D58 5d effffff772 tstl _force_loop
1048: 1011 00023D5E 31 02 jeql L339
1049: 1012 00023D60 # asm("brb _atanf_6_lp1");; /* loop on the error */
1050: 1013 00023D60 11 e4 brb _atanf_6_lp1
1051: 1014 00023D62 L339:
1052: 1015 00023D62 # /*
1053: 1016 00023D62 # * end error loop - test the results
1054: 1017 00023D62 # */
1055: 1018 00023D62 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
1056: 1019 00023D62 1d effffff768 effffff763 cmpl _sgl_st_acc,_sgl_expected
1057: 1020 00023D6D 21 03 13 00cf jeql L340
1058: 1021 00023D72 # errcnt++; /* bump the error count */
1059: 1022 00023D72 6d effffff758 incl _errcnt
1060: 1023 00023D78 # if( prt_error ) {
1061: 1024 00023D78 5d effffff752 tstl _prt_error
1062: 1025 00023D7E 21 03 13 009b jeql L341
1063: 1026 00023D83 # writes(" \n"); /* start a new print line */
1064: 1027 00023D83 .data 1
1065: 1028 00000cb7 * L342:
1066: 1029 00000cb7 * 200A00 .ascii " \12\0"
1067: 1030 00000cba * .text
1068: 1031 00023D83 dd 8f00000cb7 pushl $L342
1069: 1032 00023D89 fe 08 effffff740 callf $8,_writes
1070: 1033 00023D90 # writes("cycle: ");
1071: 1034 00023D90 .data 1
1072: 1035 00000cba * L343:
1073: 1036 00000cba * 6379636C653A2000 .ascii "cycle: \0"
1074: 1037 00000cc2 * .text
1075: 1038 00023D90 dd 8f00000cba pushl $L343
1076: 1039 00023D96 fe 08 effffff733 callf $8,_writes
1077: 1040 00023D9D # writed( cycle );
1078: 1041 00023D9D dd effffff72d pushl _cycle
1079: 1042 00023DA3 fe 08 effffff726 callf $8,_writed
1080: 1043 00023DAA # writes(" ATANF test ");
1081: 1044 00023DAA .data 1
1082: 1045 00000cc2 * L344:
1083: 1046 00000cc2 * 2020204154414E46207465737 .ascii " ATANF test \0"
1084: 42000
1085: 1047 00000cd1 * .text
1086: 1048 00023DAA dd 8f00000cc2 pushl $L344
1087: 1049 00023DB0 fe 08 effffff719 callf $8,_writes
1088: 1050 00023DB7 # writed( test_no );
1089: 1051 00023DB7 dd effffff713 pushl _test_no
1090: 1052 00023DBD fe 08 effffff70c callf $8,_writed
1091: 1053 00023DC4 # writes(", subtest 6 (Piped Exit) - BAD FINAL ACC\n");
1092: 1054 00023DC4 .data 1
1093: 1055 00000cd1 * L345:
1094: 1056 00000cd1 * 2C20737562746573742036202 .ascii ", subtest 6 (Piped Exit) - BAD FINAL ACC\12\0"
1095: 8506970656420457869742920
1096: 2D204241442046494E414C204
1097: 143430A00
1098: 1057 00000cfb * .text
1099: 1058 00023DC4 dd 8f00000cd1 pushl $L345
1100: 1059 00023DCA fe 08 effffff6ff callf $8,_writes
1101: 1060 00023DD1 # print_atanf_data();
1102: 1061 00023DD1 fe 04 ef00000076 callf $4,_print_atanf_data
1103: 1062 00023DD8 # writes(", data index = ");
1104: 1063 00023DD8 .data 1
1105: 1064 00000cfb * L346:
1106: 1065 00000cfb * 2C20206461746120696E64657 .ascii ", data index = \0"
1107: 8203D2000
1108: 1066 00000d0c * .text
1109: 1067 00023DD8 dd 8f00000cfb pushl $L346
1110: 1068 00023DDE fe 08 effffff6eb callf $8,_writes
1111: 1069 00023DE5 # writed( index );
1112: 1070 00023DE5 dd effffff6e5 pushl _index
1113: 1071 00023DEB fe 08 effffff6de callf $8,_writed
1114: 1072 00023DF2 # writec('\n');
1115: 1073 00023DF2 dd 0a pushl $10
1116: 1074 00023DF4 fe 08 effffff6d5 callf $8,_writec
1117: 1075 00023DFB # writes(" Acc expected = ");
1118: 1076 00023DFB .data 1
1119: 1077 00000d0c * L347:
1120: 1078 00000d0c * 2020202020202020202020202 .ascii " Acc expected = \0"
1121: 0202020202020202020416363
1122: 206578706563746564203D200
1123: 0
1124: 1079 00000d32 * .text
1125: 1080 00023DFB dd 8f00000d0c pushl $L347
1126: 1081 00023E01 fe 08 effffff6c8 callf $8,_writes
1127: 1082 00023E08 # write32h( sgl_expected );
1128: 1083 00023E08 dd effffff6c2 pushl _sgl_expected
1129: 1084 00023E0E fe 08 effffff6bb callf $8,_write32h
1130: 1085 00023E15 # writec('\n');
1131: 1086 00023E15 dd 0a pushl $10
1132: 1087 00023E17 fe 08 effffff6b2 callf $8,_writec
1133: 1088 00023E1E # }
1134: 1089 00023E1E # if( halt_flg )
1135: 1090 00023E1E L341:
1136: 1091 00023E1E 5d effffff6ac tstl _halt_flg
1137: 1092 00023E24 31 09 jeql L348
1138: 1093 00023E26 # atanf_er_halt( BAD_ACC_HLT ); /* halt on the error */
1139: 1094 00023E26 dd 01 pushl $1
1140: 1095 00023E28 fe 08 ef0000005b callf $8,_atanf_er_halt
1141: 1096 00023E2F # if( loop_on_err ) {
1142: 1097 00023E2F L348:
1143: 1098 00023E2F 5d effffff69b tstl _loop_on_err
1144: 1099 00023E35 31 0a jeql L349
1145: 1100 00023E37 # force_loop = TRUE; /* set the force loop flag */
1146: 1101 00023E37 0d 01 effffff692 movl $1,_force_loop
1147: 1102 00023E3E # asm("brw _atanf_6_lp1");; /* and loop on the error */
1148: 1103 00023E3E 13 ff05 brw _atanf_6_lp1
1149: 1104 00023E41 # } /* end of loop on error */
1150: 1105 00023E41 # } /* end of compare error */
1151: 1106 00023E41 L349:
1152: 1107 00023E41 # } /* end of WHILE loop */
1153: 1108 00023E41 L340:
1154: 1109 00023E41 L336:
1155: 1110 00023E41 6d effffff689 incl _index
1156: 1111 00023E47 13 fec0 jbr L338
1157: 1112 00023E4A L337:
1158: 1113 00023E4A # } /* end of subtest 6 */
1159: 1114 00023E4A 40 ret#2
1160: 1115 00023E4B .set L332,0x0
1161: 1116 00023E4B L334:
1162: 1117 00023E4B 13 fea9 jbr L335
1163: 1118 00023E4E .data
1164: 1119 00000a64 * .text
1165: 1120 00023E4E .align 1
1166: 1121 00023E4E .globl _print_atanf_data
1167: 1122 00023E4E _print_atanf_data:
1168: 1123 00023E4E 0000 .word L350
1169: 1124 00023E50 #
1170: 1125 00023E50 #
1171: 1126 00023E50 # /**************************************************************************
1172: 1127 00023E50 # *
1173: 1128 00023E50 # * PRINT THE DATA AND STORE RESULTS
1174: 1129 00023E50 # *
1175: 1130 00023E50 # * initial Acc = xxxxxxxx, stored = xxxxxxxx, data index = xx
1176: 1131 00023E50 # * Acc expected = xxxxxxxx
1177: 1132 00023E50 # **************************************************************************/
1178: 1133 00023E50 # print_atanf_data()
1179: 1134 00023E50 # {
1180: 1135 00023E50 11 35 jbr L352
1181: 1136 00023E52 L353:
1182: 1137 00023E52 # writes("initial Acc = ");
1183: 1138 00023E52 .data 1
1184: 1139 00000d32 * L354:
1185: 1140 00000d32 * 696E697469616C20416363203 .ascii "initial Acc = \0"
1186: D2000
1187: 1141 00000d41 * .text
1188: 1142 00023E52 dd 8f00000d32 pushl $L354
1189: 1143 00023E58 fe 08 effffff671 callf $8,_writes
1190: 1144 00023E5F # write32h( sgl_ld_acc );
1191: 1145 00023E5F dd effffff66b pushl _sgl_ld_acc
1192: 1146 00023E65 fe 08 effffff664 callf $8,_write32h
1193: 1147 00023E6C # writes(", final Acc = ");
1194: 1148 00023E6C .data 1
1195: 1149 00000d41 * L355:
1196: 1150 00000d41 * 2C202066696E616C204163632 .ascii ", final Acc = \0"
1197: 03D2000
1198: 1151 00000d51 * .text
1199: 1152 00023E6C dd 8f00000d41 pushl $L355
1200: 1153 00023E72 fe 08 effffff657 callf $8,_writes
1201: 1154 00023E79 # write32h( sgl_st_acc );
1202: 1155 00023E79 dd effffff651 pushl _sgl_st_acc
1203: 1156 00023E7F fe 08 effffff64a callf $8,_write32h
1204: 1157 00023E86 # }
1205: 1158 00023E86 40 ret#2
1206: 1159 00023E87 .set L350,0x0
1207: 1160 00023E87 L352:
1208: 1161 00023E87 11 c9 jbr L353
1209: 1162 00023E89 .data
1210: 1163 00000a64 * .text
1211: 1164 00023E89 00 .align 1
1212: 1165 00023E8A .globl _atanf_er_halt
1213: 1166 00023E8A _atanf_er_halt:
1214: 1167 00023E8A 0000 .word L356
1215: 1168 00023E8C #
1216: 1169 00023E8C #
1217: 1170 00023E8C #
1218: 1171 00023E8C # /**************************************************************************
1219: 1172 00023E8C # *
1220: 1173 00023E8C # * HALT ON ERROR ROUTINE
1221: 1174 00023E8C # *
1222: 1175 00023E8C # **************************************************************************/
1223: 1176 00023E8C # atanf_er_halt( halt_code )
1224: 1177 00023E8C # int halt_code;
1225: 1178 00023E8C # {
1226: 1179 00023E8C 13 00a0 jbr L358
1227: 1180 00023E8F L359:
1228: 1181 00023E8F # sgl_dummy1 = halt_code; /* get the error type */
1229: 1182 00023E8F 0d ad04 effffff639 movl 4(fp),_sgl_dummy1
1230: 1183 00023E97 # asm("movl _test_no,r0"); /* r0 = test number */
1231: 1184 00023E97 0d effffff633 50 movl _test_no,r0
1232: 1185 00023E9E # asm("movl _subtest,r1"); /* r1 = subtest number */
1233: 1186 00023E9E 0d effffff62c 51 movl _subtest,r1
1234: 1187 00023EA5 # asm("movl _sgl_dummy1,r2"); /* r2 = error code */
1235: 1188 00023EA5 0d effffff625 52 movl _sgl_dummy1,r2
1236: 1189 00023EAC # asm("movl _cycle,r3"); /* r3 = cycle count */
1237: 1190 00023EAC 0d effffff61e 53 movl _cycle,r3
1238: 1191 00023EB3 # asm("movl _sgl_ld_acc,r4"); /* r4 = initial data */
1239: 1192 00023EB3 0d effffff617 54 movl _sgl_ld_acc,r4
1240: 1193 00023EBA # asm("movl _sgl_st_acc,r5"); /* r5 = data stored */
1241: 1194 00023EBA 0d effffff610 55 movl _sgl_st_acc,r5
1242: 1195 00023EC1 # asm("movl _sgl_expected,r6"); /* r6 = data expected */
1243: 1196 00023EC1 0d effffff609 56 movl _sgl_expected,r6
1244: 1197 00023EC8 # asm("movl _index,r7"); /* r7 = data index */
1245: 1198 00023EC8 0d effffff602 57 movl _index,r7
1246: 1199 00023ECF # if( halt_code == BAD_REG_HLT ) {
1247: 1200 00023ECF 1d ad04 02 cmpl 4(fp),$2
1248: 1201 00023ED3 21 3d jneq L360
1249: 1202 00023ED5 # sgl_dummy1 = load_regs[index2];
1250: 1203 00023ED5 0d effffff5f5 50 movl _index2,r0
1251: 1204 00023EDC 0d 40effffff5ed movl _load_regs[r0],_sgl_dummy1
1252: effffff5e8
1253: 1205 00023EE8 # sgl_dummy2 = store_regs[index2];
1254: 1206 00023EE8 0d effffff5e2 50 movl _index2,r0
1255: 1207 00023EEF 0d 40effffff5da movl _store_regs[r0],_sgl_dummy2
1256: effffff5d5
1257: 1208 00023EFB # asm("movl _index2,r6"); /* r6 = bad register # */
1258: 1209 00023EFB 0d effffff5cf 56 movl _index2,r6
1259: 1210 00023F02 # asm("movl _sgl_dummy2,r7"); /* r7 = actual value */
1260: 1211 00023F02 0d effffff5c8 57 movl _sgl_dummy2,r7
1261: 1212 00023F09 # asm("movl _sgl_dummy1,r8"); /* r8 = expected value */
1262: 1213 00023F09 0d effffff5c1 58 movl _sgl_dummy1,r8
1263: 1214 00023F10 # } else
1264: 1215 00023F10 11 1b jbr L361
1265: 1216 00023F12 L360:
1266: 1217 00023F12 # if( halt_code == BAD_PSL_HLT ) {
1267: 1218 00023F12 1d ad04 03 cmpl 4(fp),$3
1268: 1219 00023F16 21 15 jneq L362
1269: 1220 00023F18 # asm("movl _init_psl,r6"); /* r6 = initial PSL */
1270: 1221 00023F18 0d effffff5b2 56 movl _init_psl,r6
1271: 1222 00023F1F # asm("movl _psl_val,r7"); /* r7 = final PSL */
1272: 1223 00023F1F 0d effffff5ab 57 movl _psl_val,r7
1273: 1224 00023F26 # asm("movl _exp_psl,r8"); /* r8 = expected PSL */
1274: 1225 00023F26 0d effffff5a4 58 movl _exp_psl,r8
1275: 1226 00023F2D # };
1276: 1227 00023F2D L362:
1277: 1228 00023F2D L361:
1278: 1229 00023F2D # asm("halt"); /* HALT ... */
1279: 1230 00023F2D 00 halt
1280: 1231 00023F2E # }
1281: 1232 00023F2E 40 ret#2
1282: 1233 00023F2F .set L356,0x0
1283: 1234 00023F2F L358:
1284: 1235 00023F2F 13 ff5d jbr L359
1285: 1236 00023F32 .data
1286: 1236 00047402 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.