|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 000008c8 * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _negf
6: 6 00000000 _negf:
7: 7 0001114C 0000 .word L215
8: 8 0001114E #
9: 9 0001114E # #include "fpp_defs.h"
10: 10 0001114E #
11: 11 0001114E #
12: 12 0001114E # /*****************************************************************************
13: 13 0001114E # *
14: 14 0001114E # * NEGF - SINGLE PRECISION FLOATING POINT LOAD_NEGATE TEST
15: 15 0001114E # *
16: 16 0001114E # *****************************************************************************/
17: 17 0001114E # negf()
18: 18 0001114E # {
19: 19 0001114E 11 50 jbr L217
20: 20 00011150 L218:
21: 21 00011150 # asm(".globl _negf_t");
22: 22 00011150 .globl _negf_t
23: 23 00011150 # asm("_negf_t:"); /* entry address */
24: 24 00011150 _negf_t:
25: 25 00011150 # if( ( cycle == 1 ) && ( prt_hdrs ) ) /* print headers on 1st pass */
26: 26 00011150 1d effffffff6 01 cmpl _cycle,$1
27: 27 00011157 21 15 jneq L219
28: 28 00011159 5d efffffffed tstl _prt_hdrs
29: 29 0001115F 31 0d jeql L219
30: 30 00011161 # writes(" NEGF");
31: 31 00011161 .data 1
32: 32 000008c8 * L221:
33: 33 000008c8 * 204E45474600 .ascii " NEGF\0"
34: 34 000008ce * .text
35: 35 00011161 dd 8f000008c8 pushl $L221
36: 36 00011167 fe 08 efffffffde callf $8,_writes
37: 37 0001116E # negf_1(); /* negate through the cache */
38: 38 0001116E L219:
39: 39 0001116E fe 04 ef0000002d callf $4,_negf_1
40: 40 00011175 # negf_2(); /* register stability */
41: 41 00011175 fe 04 ef0000018a callf $4,_negf_2
42: 42 0001117C # negf_3(); /* PSL stability test */
43: 43 0001117C fe 04 ef00000323 callf $4,_negf_3
44: 44 00011183 # if( !no_fpp_wcs ) {
45: 45 00011183 5d efffffffc3 tstl _no_fpp_wcs
46: 46 00011189 21 0e jneq L225
47: 47 0001118B # negf_4(); /* pipelined entry test */
48: 48 0001118B fe 04 ef000004c0 callf $4,_negf_4
49: 49 00011192 # negf_5(); /* pipelined exit test */
50: 50 00011192 fe 04 ef00000623 callf $4,_negf_5
51: 51 00011199 # };
52: 52 00011199 L225:
53: 53 00011199 # asm("jmp *return"); /* return to the test monitor */
54: 54 00011199 71 ffffffffad jmp *return
55: 55 0001119F # }
56: 56 0001119F 40 ret#2
57: 57 000111A0 .set L215,0x0
58: 58 000111A0 L217:
59: 59 000111A0 11 ae jbr L218
60: 60 000111A2 .data
61: 61 000008c8 * .text
62: 62 000111A2 .align 1
63: 63 000111A2 .globl _negf_1
64: 64 000111A2 _negf_1:
65: 65 000111A2 0000 .word L228
66: 66 000111A4 #
67: 67 000111A4 #
68: 68 000111A4 #
69: 69 000111A4 # /************************************************************************
70: 70 000111A4 # *
71: 71 000111A4 # * SUBTEST 1 - negate through memory
72: 72 000111A4 # *
73: 73 000111A4 # ************************************************************************/
74: 74 000111A4 # negf_1()
75: 75 000111A4 # {
76: 76 000111A4 13 015c jbr L230
77: 77 000111A7 L231:
78: 78 000111A7 # force_loop = FALSE;
79: 79 000111A7 4d efffffff9f clrl _force_loop
80: 80 000111AD # subtest = 1;
81: 81 000111AD 0d 01 efffffff98 movl $1,_subtest
82: 82 000111B4 # for( index = 0; index < max_lnf_1_index; index++ ) {
83: 83 000111B4 4d efffffff92 clrl _index
84: 84 000111BA L234:
85: 85 000111BA 1d efffffff8c efffffff87 cmpl _index,_max_lnf_1_index
86: 86 000111C5 91 03 13 0138 jgeq L233
87: 87 000111CA # sgl_ld_acc = lnf_1_data[index].ld; /* get value to negate */
88: 88 000111CA 0d efffffff7c 50 movl _index,r0
89: 89 000111D1 48 03 50 50 shll $3,r0,r0
90: 90 000111D5 0d e000000000 efffffff6c movl _lnf_1_data(r0),_sgl_ld_acc
91: 91 000111E0 # sgl_expected = lnf_1_data[index].exp; /* get expected result */
92: 92 000111E0 0d efffffff66 50 movl _index,r0
93: 93 000111E7 48 03 50 50 shll $3,r0,r0
94: 94 000111EB 0d e000000004 efffffff56 movl _lnf_1_data+4(r0),_sgl_expected
95: 95 000111F6 # /*
96: 96 000111F6 # * If LOOP ON ERROR is set, this is the loop for this subtest.
97: 97 000111F6 # * The force loop flag is set after the first error.
98: 98 000111F6 # */
99: 99 000111F6 # asm("_negf_1_lp1:");
100: 100 000111F6 _negf_1_lp1:
101: 101 000111F6 # asm("ldf _sgl_ld_acc"); /* load the value */
102: 102 000111F6 06 efffffff50 ldf _sgl_ld_acc
103: 103 000111FC # asm("negf"); /* negate the value */
104: 104 000111FC b6 negf
105: 105 000111FD # asm("stf _sgl_st_acc"); /* store the result */
106: 106 000111FD 26 efffffff49 stf _sgl_st_acc
107: 107 00011203 # if( force_loop )
108: 108 00011203 5d efffffff43 tstl _force_loop
109: 109 00011209 31 02 jeql L235
110: 110 0001120B # asm("brb _negf_1_lp1");; /* loop on the error */
111: 111 0001120B 11 e9 brb _negf_1_lp1
112: 112 0001120D L235:
113: 113 0001120D # /*
114: 114 0001120D # * end error loop - test the results
115: 115 0001120D # */
116: 116 0001120D # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
117: 117 0001120D 1d efffffff39 efffffff34 cmpl _sgl_st_acc,_sgl_expected
118: 118 00011218 21 03 13 00dc jeql L236
119: 119 0001121D # errcnt++; /* bump the error count */
120: 120 0001121D 6d efffffff29 incl _errcnt
121: 121 00011223 # if( prt_error ) {
122: 122 00011223 5d efffffff23 tstl _prt_error
123: 123 00011229 21 03 13 00a8 jeql L237
124: 124 0001122E # writes(" \n"); /* start a new print line */
125: 125 0001122E .data 1
126: 126 000008ce * L238:
127: 127 000008ce * 200A00 .ascii " \12\0"
128: 128 000008d1 * .text
129: 129 0001122E dd 8f000008ce pushl $L238
130: 130 00011234 fe 08 efffffff11 callf $8,_writes
131: 131 0001123B # writes("cycle: ");
132: 132 0001123B .data 1
133: 133 000008d1 * L239:
134: 134 000008d1 * 6379636C653A2000 .ascii "cycle: \0"
135: 135 000008d9 * .text
136: 136 0001123B dd 8f000008d1 pushl $L239
137: 137 00011241 fe 08 efffffff04 callf $8,_writes
138: 138 00011248 # writed( cycle );
139: 139 00011248 dd effffffefe pushl _cycle
140: 140 0001124E fe 08 effffffef7 callf $8,_writed
141: 141 00011255 # writes(" NEGF test ");
142: 142 00011255 .data 1
143: 143 000008d9 * L241:
144: 144 000008d9 * 20204E4547462074657374200 .ascii " NEGF test \0"
145: 0
146: 145 000008e6 * .text
147: 146 00011255 dd 8f000008d9 pushl $L241
148: 147 0001125B fe 08 effffffeea callf $8,_writes
149: 148 00011262 # writed( test_no );
150: 149 00011262 dd effffffee4 pushl _test_no
151: 150 00011268 fe 08 effffffedd callf $8,_writed
152: 151 0001126F # writes(", subtest 1 (Cache Data) - BAD FINAL ACC\n");
153: 152 0001126F .data 1
154: 153 000008e6 * L242:
155: 154 000008e6 * 2C20737562746573742031202 .ascii ", subtest 1 (Cache Data) - BAD FINAL ACC\12\0"
156: 8436163686520446174612920
157: 2D204241442046494E414C204
158: 143430A00
159: 155 00000910 * .text
160: 156 0001126F dd 8f000008e6 pushl $L242
161: 157 00011275 fe 08 effffffed0 callf $8,_writes
162: 158 0001127C # print_negf_data();
163: 159 0001127C fe 04 ef000006a3 callf $4,_print_negf_data
164: 160 00011283 # writes(", data index = ");
165: 161 00011283 .data 1
166: 162 00000910 * L244:
167: 163 00000910 * 2C2020206461746120696E646 .ascii ", data index = \0"
168: 578203D2000
169: 164 00000922 * .text
170: 165 00011283 dd 8f00000910 pushl $L244
171: 166 00011289 fe 08 effffffebc callf $8,_writes
172: 167 00011290 # writed( index );
173: 168 00011290 dd effffffeb6 pushl _index
174: 169 00011296 fe 08 effffffeaf callf $8,_writed
175: 170 0001129D # writec('\n');
176: 171 0001129D dd 0a pushl $10
177: 172 0001129F fe 08 effffffea6 callf $8,_writec
178: 173 000112A6 # writes(" ");
179: 174 000112A6 .data 1
180: 175 00000922 * L246:
181: 176 00000922 * 2020202020202020202020202 .ascii " \0"
182: 020202020202020202000
183: 177 00000939 * .text
184: 178 000112A6 dd 8f00000922 pushl $L246
185: 179 000112AC fe 08 effffffe99 callf $8,_writes
186: 180 000112B3 # writes("Acc expected = ");
187: 181 000112B3 .data 1
188: 182 00000939 * L247:
189: 183 00000939 * 4163632065787065637465642 .ascii "Acc expected = \0"
190: 03D2000
191: 184 00000949 * .text
192: 185 000112B3 dd 8f00000939 pushl $L247
193: 186 000112B9 fe 08 effffffe8c callf $8,_writes
194: 187 000112C0 # write32h( sgl_expected );
195: 188 000112C0 dd effffffe86 pushl _sgl_expected
196: 189 000112C6 fe 08 effffffe7f callf $8,_write32h
197: 190 000112CD # writec('\n');
198: 191 000112CD dd 0a pushl $10
199: 192 000112CF fe 08 effffffe76 callf $8,_writec
200: 193 000112D6 # }
201: 194 000112D6 # if( halt_flg )
202: 195 000112D6 L237:
203: 196 000112D6 5d effffffe70 tstl _halt_flg
204: 197 000112DC 31 09 jeql L249
205: 198 000112DE # negf_er_halt( BAD_ACC_HLT ); /* halt on the error */
206: 199 000112DE dd 01 pushl $1
207: 200 000112E0 fe 08 ef0000067b callf $8,_negf_er_halt
208: 201 000112E7 # if( loop_on_err ) {
209: 202 000112E7 L249:
210: 203 000112E7 5d effffffe5f tstl _loop_on_err
211: 204 000112ED 31 0a jeql L251
212: 205 000112EF # force_loop = TRUE; /* set the force loop flag */
213: 206 000112EF 0d 01 effffffe56 movl $1,_force_loop
214: 207 000112F6 # asm("brw _negf_1_lp1");; /* and loop on the error */
215: 208 000112F6 13 fefd brw _negf_1_lp1
216: 209 000112F9 # } /* end of loop on error */
217: 210 000112F9 # } /* end of compare error */
218: 211 000112F9 L251:
219: 212 000112F9 # } /* end of WHILE loop */
220: 213 000112F9 L236:
221: 214 000112F9 L232:
222: 215 000112F9 6d effffffe4d incl _index
223: 216 000112FF 13 feb8 jbr L234
224: 217 00011302 L233:
225: 218 00011302 # } /* end of subtest 1 */
226: 219 00011302 40 ret#2
227: 220 00011303 .set L228,0x0
228: 221 00011303 L230:
229: 222 00011303 13 fea1 jbr L231
230: 223 00011306 .data
231: 224 000008c8 * .text
232: 225 00011306 .align 1
233: 226 00011306 .globl _negf_2
234: 227 00011306 _negf_2:
235: 228 00011306 0000 .word L252
236: 229 00011308 #
237: 230 00011308 #
238: 231 00011308 #
239: 232 00011308 # /************************************************************************
240: 233 00011308 # *
241: 234 00011308 # * SUBTEST 2 - Check for register corruption
242: 235 00011308 # *
243: 236 00011308 # ************************************************************************/
244: 237 00011308 # negf_2()
245: 238 00011308 # {
246: 239 00011308 13 0197 jbr L254
247: 240 0001130B L255:
248: 241 0001130B # force_loop = FALSE; /* clear force_loop flg */
249: 242 0001130B 4d effffffe3b clrl _force_loop
250: 243 00011311 # subtest = 2;
251: 244 00011311 0d 02 effffffe34 movl $2,_subtest
252: 245 00011318 # fill_reg_buf( load_regs ); /* get patterns for regs */
253: 246 00011318 dd 8f00000000 pushl $_load_regs
254: 247 0001131E fe 08 effffffe27 callf $8,_fill_reg_buf
255: 248 00011325 # index = 0;
256: 249 00011325 4d effffffe21 clrl _index
257: 250 0001132B # sgl_ld_acc = lnf_1_data[0].ld; /* get value to negate */
258: 251 0001132B 0d effffffe1b effffffe16 movl _lnf_1_data,_sgl_ld_acc
259: 252 00011336 # sgl_expected = lnf_1_data[0].exp; /* get expected result */
260: 253 00011336 0d effffffe14 effffffe0b movl _lnf_1_data+4,_sgl_expected
261: 254 00011341 # /*
262: 255 00011341 # * If LOOP ON ERROR is set, this is the loop for this subtest.
263: 256 00011341 # * The force loop flag is set after the first error.
264: 257 00011341 # */
265: 258 00011341 # asm("_negf_2_lp1:");
266: 259 00011341 _negf_2_lp1:
267: 260 00011341 # asm("ldf _sgl_ld_acc"); /* load the initial value */
268: 261 00011341 06 effffffe05 ldf _sgl_ld_acc
269: 262 00011347 # asm("nop");
270: 263 00011347 10 nop
271: 264 00011348 # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
272: 265 00011348 ab 891fff effffffdfb loadr $0x1fff,_load_regs
273: 266 00011351 # asm("nop");
274: 267 00011351 10 nop
275: 268 00011352 # asm("negf"); /* negate the value */
276: 269 00011352 b6 negf
277: 270 00011353 # asm("nop");
278: 271 00011353 10 nop
279: 272 00011354 # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
280: 273 00011354 bb 891fff effffffdef storer $0x1fff,_store_regs
281: 274 0001135D # asm("stf _sgl_st_acc"); /* save the accumulator */
282: 275 0001135D 26 effffffde9 stf _sgl_st_acc
283: 276 00011363 # if( force_loop )
284: 277 00011363 5d effffffde3 tstl _force_loop
285: 278 00011369 31 02 jeql L257
286: 279 0001136B # asm("brb _negf_2_lp1");; /* loop on the error */
287: 280 0001136B 11 d4 brb _negf_2_lp1
288: 281 0001136D L257:
289: 282 0001136D # /*
290: 283 0001136D # * Now compare the stored register values to those that were loaded
291: 284 0001136D # */
292: 285 0001136D # index2 = 0;
293: 286 0001136D 4d effffffdd9 clrl _index2
294: 287 00011373 # while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) )
295: 288 00011373 L258:
296: 289 00011373 0d effffffdd3 50 movl _index2,r0
297: 290 0001137A 0d effffffdcc 51 movl _index2,r1
298: 291 00011381 1d 40effffffdc4 cmpl _load_regs[r0],_store_regs[r1]
299: 41effffffdbe
300: 292 0001138E 21 11 jneq L259
301: 293 00011390 1d effffffdb6 0d cmpl _index2,$13
302: 294 00011397 81 08 jgeq L259
303: 295 00011399 # index2++; /* check reg values */
304: 296 00011399 6d effffffdad incl _index2
305: 297 0001139F 11 d2 jbr L258
306: 298 000113A1 L259:
307: 299 000113A1 # if( index2 < 13 ) { /* error if index2 < 13 */
308: 300 000113A1 1d effffffda5 0d cmpl _index2,$13
309: 301 000113A8 91 03 13 00f4 jgeq L260
310: 302 000113AD # errcnt++; /* bump the error count */
311: 303 000113AD 6d effffffd99 incl _errcnt
312: 304 000113B3 # if( prt_error ) {
313: 305 000113B3 5d effffffd93 tstl _prt_error
314: 306 000113B9 21 03 13 00c0 jeql L261
315: 307 000113BE # writes(" \n"); /* start a new print line */
316: 308 000113BE .data 1
317: 309 00000949 * L262:
318: 310 00000949 * 200A00 .ascii " \12\0"
319: 311 0000094c * .text
320: 312 000113BE dd 8f00000949 pushl $L262
321: 313 000113C4 fe 08 effffffd81 callf $8,_writes
322: 314 000113CB # writes("cycle: ");
323: 315 000113CB .data 1
324: 316 0000094c * L263:
325: 317 0000094c * 6379636C653A2000 .ascii "cycle: \0"
326: 318 00000954 * .text
327: 319 000113CB dd 8f0000094c pushl $L263
328: 320 000113D1 fe 08 effffffd74 callf $8,_writes
329: 321 000113D8 # writed( cycle );
330: 322 000113D8 dd effffffd6e pushl _cycle
331: 323 000113DE fe 08 effffffd67 callf $8,_writed
332: 324 000113E5 # writes(" NEGF test ");
333: 325 000113E5 .data 1
334: 326 00000954 * L264:
335: 327 00000954 * 20204E4547462074657374200 .ascii " NEGF test \0"
336: 0
337: 328 00000961 * .text
338: 329 000113E5 dd 8f00000954 pushl $L264
339: 330 000113EB fe 08 effffffd5a callf $8,_writes
340: 331 000113F2 # writed( test_no );
341: 332 000113F2 dd effffffd54 pushl _test_no
342: 333 000113F8 fe 08 effffffd4d callf $8,_writed
343: 334 000113FF # writes(", subtest 2 (Reg. Corr.) - A REGISTER WAS MODIFIED\n");
344: 335 000113FF .data 1
345: 336 00000961 * L265:
346: 337 00000961 * 2C20737562746573742032202 .ascii ", subtest 2 (Reg. Corr.) - A REGISTER WAS MODIFIED\12\0"
347: 85265672E20436F72722E2920
348: 2D20412052454749535445522
349: 0574153204D4F444946494544
350: 0A00
351: 338 00000995 * .text
352: 339 000113FF dd 8f00000961 pushl $L265
353: 340 00011405 fe 08 effffffd40 callf $8,_writes
354: 341 0001140C # print_negf_data(); /* print the operands */
355: 342 0001140C fe 04 ef00000513 callf $4,_print_negf_data
356: 343 00011413 # writes("\nregister "); /* print the information */
357: 344 00011413 .data 1
358: 345 00000995 * L266:
359: 346 00000995 * 0A72656769737465722000 .ascii "\12register \0"
360: 347 000009a0 * .text
361: 348 00011413 dd 8f00000995 pushl $L266
362: 349 00011419 fe 08 effffffd2c callf $8,_writes
363: 350 00011420 # writed( index2 ); /* about the corrupted */
364: 351 00011420 dd effffffd26 pushl _index2
365: 352 00011426 fe 08 effffffd1f callf $8,_writed
366: 353 0001142D # writes(" = "); /* register */
367: 354 0001142D .data 1
368: 355 000009a0 * L267:
369: 356 000009a0 * 203D2000 .ascii " = \0"
370: 357 000009a4 * .text
371: 358 0001142D dd 8f000009a0 pushl $L267
372: 359 00011433 fe 08 effffffd12 callf $8,_writes
373: 360 0001143A # write32h( store_regs[index2] );
374: 361 0001143A 0d effffffd0c 50 movl _index2,r0
375: 362 00011441 dd 40effffffd04 pushl _store_regs[r0]
376: 363 00011448 fe 08 effffffcfd callf $8,_write32h
377: 364 0001144F # writes(", should be = ");
378: 365 0001144F .data 1
379: 366 000009a4 * L268:
380: 367 000009a4 * 2C202073686F756C642062652 .ascii ", should be = \0"
381: 03D2000
382: 368 000009b4 * .text
383: 369 0001144F dd 8f000009a4 pushl $L268
384: 370 00011455 fe 08 effffffcf0 callf $8,_writes
385: 371 0001145C # write32h( load_regs[index2] );
386: 372 0001145C 0d effffffcea 50 movl _index2,r0
387: 373 00011463 dd 40effffffce2 pushl _load_regs[r0]
388: 374 0001146A fe 08 effffffcdb callf $8,_write32h
389: 375 00011471 # writes("\n");
390: 376 00011471 .data 1
391: 377 000009b4 * L269:
392: 378 000009b4 * 0A00 .ascii "\12\0"
393: 379 000009b6 * .text
394: 380 00011471 dd 8f000009b4 pushl $L269
395: 381 00011477 fe 08 effffffcce callf $8,_writes
396: 382 0001147E # }
397: 383 0001147E # if( halt_flg )
398: 384 0001147E L261:
399: 385 0001147E 5d effffffcc8 tstl _halt_flg
400: 386 00011484 31 09 jeql L270
401: 387 00011486 # negf_er_halt( BAD_REG_HLT ); /* halt on the error */
402: 388 00011486 dd 02 pushl $2
403: 389 00011488 fe 08 ef000004d3 callf $8,_negf_er_halt
404: 390 0001148F # if( loop_on_err ) {
405: 391 0001148F L270:
406: 392 0001148F 5d effffffcb7 tstl _loop_on_err
407: 393 00011495 31 0a jeql L271
408: 394 00011497 # force_loop = TRUE; /* set the force loop flag */
409: 395 00011497 0d 01 effffffcae movl $1,_force_loop
410: 396 0001149E # asm("brw _negf_2_lp1");; /* and loop on the error */
411: 397 0001149E 13 fea0 brw _negf_2_lp1
412: 398 000114A1 # } /* end of loop on error */
413: 399 000114A1 # } /* end of register corruption error */
414: 400 000114A1 L271:
415: 401 000114A1 # } /* end of subtest 2 */
416: 402 000114A1 L260:
417: 403 000114A1 40 ret#2
418: 404 000114A2 .set L252,0x0
419: 405 000114A2 L254:
420: 406 000114A2 13 fe66 jbr L255
421: 407 000114A5 .data
422: 408 000008c8 * .text
423: 409 000114A5 00 .align 1
424: 410 000114A6 .globl _negf_3
425: 411 000114A6 _negf_3:
426: 412 000114A6 0000 .word L272
427: 413 000114A8 #
428: 414 000114A8 #
429: 415 000114A8 #
430: 416 000114A8 # /************************************************************************
431: 417 000114A8 # *
432: 418 000114A8 # * SUBTEST 3 - Check for PSL corruption
433: 419 000114A8 # *
434: 420 000114A8 # ************************************************************************/
435: 421 000114A8 # negf_3()
436: 422 000114A8 # {
437: 423 000114A8 13 01a4 jbr L274
438: 424 000114AB L275:
439: 425 000114AB # force_loop = FALSE; /* clear force_loop flg */
440: 426 000114AB 4d effffffc9b clrl _force_loop
441: 427 000114B1 # subtest = 3;
442: 428 000114B1 0d 03 effffffc94 movl $3,_subtest
443: 429 000114B8 # fill_reg_buf( load_regs ); /* get patterns for regs */
444: 430 000114B8 dd 8f00000000 pushl $_load_regs
445: 431 000114BE fe 08 effffffc87 callf $8,_fill_reg_buf
446: 432 000114C5 # for( index = 0; index < 3; index++ ) {
447: 433 000114C5 4d effffffc81 clrl _index
448: 434 000114CB L278:
449: 435 000114CB 1d effffffc7b 03 cmpl _index,$3
450: 436 000114D2 91 03 13 0177 jgeq L277
451: 437 000114D7 # sgl_ld_acc = lnf_1_data[index].ld; /* get value to negate */
452: 438 000114D7 0d effffffc6f 50 movl _index,r0
453: 439 000114DE 48 03 50 50 shll $3,r0,r0
454: 440 000114E2 0d e000000000 effffffc5f movl _lnf_1_data(r0),_sgl_ld_acc
455: 441 000114ED # sgl_expected = lnf_1_data[index].exp; /* get expected */
456: 442 000114ED 0d effffffc59 50 movl _index,r0
457: 443 000114F4 48 03 50 50 shll $3,r0,r0
458: 444 000114F8 0d e000000004 effffffc49 movl _lnf_1_data+4(r0),_sgl_expected
459: 445 00011503 # sgl_dummy1 = status_array[status_index]; /* status = +, -, 0 */
460: 446 00011503 0d effffffc43 50 movl _status_index,r0
461: 447 0001150A 0d 40effffffc3b movl _status_array[r0],_sgl_dummy1
462: effffffc36
463: 448 00011516 # /*
464: 449 00011516 # * If LOOP ON ERROR is set, this is the loop for this subtest.
465: 450 00011516 # * The force loop flag is set after the first error.
466: 451 00011516 # */
467: 452 00011516 # asm("_negf_3_lp1:");
468: 453 00011516 _negf_3_lp1:
469: 454 00011516 # asm("ldf _sgl_ld_acc"); /* load the initial value */
470: 455 00011516 06 effffffc30 ldf _sgl_ld_acc
471: 456 0001151C # asm("nop");
472: 457 0001151C 10 nop
473: 458 0001151D # asm("tstl _sgl_dummy1"); /* set the PSL status */
474: 459 0001151D 5d effffffc29 tstl _sgl_dummy1
475: 460 00011523 # asm("movpsl _init_psl"); /* save the initial PSL */
476: 461 00011523 cd effffffc23 movpsl _init_psl
477: 462 00011529 # asm("negf"); /* negate the value */
478: 463 00011529 b6 negf
479: 464 0001152A # asm("nop");
480: 465 0001152A 10 nop
481: 466 0001152B # asm("movpsl _psl_val"); /* save the final PSL */
482: 467 0001152B cd effffffc1b movpsl _psl_val
483: 468 00011531 # asm("stf _sgl_st_acc"); /* save the accumulator */
484: 469 00011531 26 effffffc15 stf _sgl_st_acc
485: 470 00011537 # if( force_loop )
486: 471 00011537 5d effffffc0f tstl _force_loop
487: 472 0001153D 31 02 jeql L279
488: 473 0001153F # asm("brb _negf_3_lp1");; /* loop on the error */
489: 474 0001153F 11 d5 brb _negf_3_lp1
490: 475 00011541 L279:
491: 476 00011541 # /*
492: 477 00011541 # * Now compare the final PSL to the initial PSL -they should be the same
493: 478 00011541 # */
494: 479 00011541 # exp_psl = init_psl;
495: 480 00011541 0d effffffc05 effffffc00 movl _init_psl,_exp_psl
496: 481 0001154C # if( psl_val != init_psl ) {
497: 482 0001154C 1d effffffbfa effffffbf5 cmpl _psl_val,_init_psl
498: 483 00011557 21 03 13 00e9 jeql L280
499: 484 0001155C # errcnt++; /* bump the error count */
500: 485 0001155C 6d effffffbea incl _errcnt
501: 486 00011562 # if( prt_error ) {
502: 487 00011562 5d effffffbe4 tstl _prt_error
503: 488 00011568 21 03 13 00b5 jeql L281
504: 489 0001156D # writes(" \n"); /* start a new print line */
505: 490 0001156D .data 1
506: 491 000009b6 * L282:
507: 492 000009b6 * 200A00 .ascii " \12\0"
508: 493 000009b9 * .text
509: 494 0001156D dd 8f000009b6 pushl $L282
510: 495 00011573 fe 08 effffffbd2 callf $8,_writes
511: 496 0001157A # writes("cycle: ");
512: 497 0001157A .data 1
513: 498 000009b9 * L283:
514: 499 000009b9 * 6379636C653A2000 .ascii "cycle: \0"
515: 500 000009c1 * .text
516: 501 0001157A dd 8f000009b9 pushl $L283
517: 502 00011580 fe 08 effffffbc5 callf $8,_writes
518: 503 00011587 # writed( cycle );
519: 504 00011587 dd effffffbbf pushl _cycle
520: 505 0001158D fe 08 effffffbb8 callf $8,_writed
521: 506 00011594 # writes(" NEGF test ");
522: 507 00011594 .data 1
523: 508 000009c1 * L284:
524: 509 000009c1 * 20204E4547462074657374200 .ascii " NEGF test \0"
525: 0
526: 510 000009ce * .text
527: 511 00011594 dd 8f000009c1 pushl $L284
528: 512 0001159A fe 08 effffffbab callf $8,_writes
529: 513 000115A1 # writed( test_no );
530: 514 000115A1 dd effffffba5 pushl _test_no
531: 515 000115A7 fe 08 effffffb9e callf $8,_writed
532: 516 000115AE # writes(", subtest 3 (PSL Corr.) - INCORRECT FINAL PSL\n");
533: 517 000115AE .data 1
534: 518 000009ce * L285:
535: 519 000009ce * 2C20737562746573742033202 .ascii ", subtest 3 (PSL Corr.) - INCORRECT FINAL PSL\12\0"
536: 850534C20436F72722E29202D
537: 20494E434F525245435420464
538: 94E414C2050534C0A00
539: 520 000009fd * .text
540: 521 000115AE dd 8f000009ce pushl $L285
541: 522 000115B4 fe 08 effffffb91 callf $8,_writes
542: 523 000115BB # print_negf_data(); /* print the operands */
543: 524 000115BB fe 04 ef00000364 callf $4,_print_negf_data
544: 525 000115C2 # writec('\n');
545: 526 000115C2 dd 0a pushl $10
546: 527 000115C4 fe 08 effffffb81 callf $8,_writec
547: 528 000115CB # writes("initial PSL = ");
548: 529 000115CB .data 1
549: 530 000009fd * L286:
550: 531 000009fd * 696E697469616C2050534C203 .ascii "initial PSL = \0"
551: D2000
552: 532 00000a0c * .text
553: 533 000115CB dd 8f000009fd pushl $L286
554: 534 000115D1 fe 08 effffffb74 callf $8,_writes
555: 535 000115D8 # write32h( init_psl );
556: 536 000115D8 dd effffffb6e pushl _init_psl
557: 537 000115DE fe 08 effffffb67 callf $8,_write32h
558: 538 000115E5 # writes(", final PSL = ");
559: 539 000115E5 .data 1
560: 540 00000a0c * L287:
561: 541 00000a0c * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
562: 03D2000
563: 542 00000a1c * .text
564: 543 000115E5 dd 8f00000a0c pushl $L287
565: 544 000115EB fe 08 effffffb5a callf $8,_writes
566: 545 000115F2 # write32h( psl_val );
567: 546 000115F2 dd effffffb54 pushl _psl_val
568: 547 000115F8 fe 08 effffffb4d callf $8,_write32h
569: 548 000115FF # writes(", expected PSL = ");
570: 549 000115FF .data 1
571: 550 00000a1c * L288:
572: 551 00000a1c * 2C20206578706563746564205 .ascii ", expected PSL = \0"
573: 0534C203D2000
574: 552 00000a2f * .text
575: 553 000115FF dd 8f00000a1c pushl $L288
576: 554 00011605 fe 08 effffffb40 callf $8,_writes
577: 555 0001160C # write32h( exp_psl );
578: 556 0001160C dd effffffb3a pushl _exp_psl
579: 557 00011612 fe 08 effffffb33 callf $8,_write32h
580: 558 00011619 # writec('\n');
581: 559 00011619 dd 0a pushl $10
582: 560 0001161B fe 08 effffffb2a callf $8,_writec
583: 561 00011622 # }
584: 562 00011622 # if( halt_flg )
585: 563 00011622 L281:
586: 564 00011622 5d effffffb24 tstl _halt_flg
587: 565 00011628 31 09 jeql L289
588: 566 0001162A # negf_er_halt( BAD_PSL_HLT ); /* halt on the error */
589: 567 0001162A dd 03 pushl $3
590: 568 0001162C fe 08 ef0000032f callf $8,_negf_er_halt
591: 569 00011633 # if( loop_on_err ) {
592: 570 00011633 L289:
593: 571 00011633 5d effffffb13 tstl _loop_on_err
594: 572 00011639 31 0a jeql L290
595: 573 0001163B # force_loop = TRUE; /* set the force loop flag */
596: 574 0001163B 0d 01 effffffb0a movl $1,_force_loop
597: 575 00011642 # asm("brw _negf_3_lp1");; /* and loop on the error */
598: 576 00011642 13 fed1 brw _negf_3_lp1
599: 577 00011645 # } /* end of loop on error */
600: 578 00011645 # } /* end of PSL corruption error */
601: 579 00011645 L290:
602: 580 00011645 # } /* end of WHILE loop */
603: 581 00011645 L280:
604: 582 00011645 L276:
605: 583 00011645 6d effffffb01 incl _index
606: 584 0001164B 13 fe7d jbr L278
607: 585 0001164E L277:
608: 586 0001164E # } /* end of subtest 3 */
609: 587 0001164E 40 ret#2
610: 588 0001164F .set L272,0x0
611: 589 0001164F L274:
612: 590 0001164F 13 fe59 jbr L275
613: 591 00011652 .data
614: 592 000008c8 * .text
615: 593 00011652 .align 1
616: 594 00011652 .globl _negf_4
617: 595 00011652 _negf_4:
618: 596 00011652 0000 .word L291
619: 597 00011654 #
620: 598 00011654 #
621: 599 00011654 #
622: 600 00011654 # /************************************************************************
623: 601 00011654 # *
624: 602 00011654 # * SUBTEST 4 - pipelined entry test
625: 603 00011654 # *
626: 604 00011654 # ************************************************************************/
627: 605 00011654 # negf_4()
628: 606 00011654 # {
629: 607 00011654 13 0161 jbr L293
630: 608 00011657 L294:
631: 609 00011657 # force_loop = FALSE;
632: 610 00011657 4d effffffaef clrl _force_loop
633: 611 0001165D # subtest = 4;
634: 612 0001165D 0d 04 effffffae8 movl $4,_subtest
635: 613 00011664 # for( index = 0; index < max_lnf_1_index; index++ ) {
636: 614 00011664 4d effffffae2 clrl _index
637: 615 0001166A L297:
638: 616 0001166A 1d effffffadc effffffad7 cmpl _index,_max_lnf_1_index
639: 617 00011675 91 03 13 013d jgeq L296
640: 618 0001167A # sgl_ld_acc = lnf_1_data[index].ld; /* get value to negate */
641: 619 0001167A 0d effffffacc 50 movl _index,r0
642: 620 00011681 48 03 50 50 shll $3,r0,r0
643: 621 00011685 0d e000000000 effffffabc movl _lnf_1_data(r0),_sgl_ld_acc
644: 622 00011690 # sgl_expected = lnf_1_data[index].exp; /* get expected result */
645: 623 00011690 0d effffffab6 50 movl _index,r0
646: 624 00011697 48 03 50 50 shll $3,r0,r0
647: 625 0001169B 0d e000000004 effffffaa6 movl _lnf_1_data+4(r0),_sgl_expected
648: 626 000116A6 # /*
649: 627 000116A6 # * If LOOP ON ERROR is set, this is the loop for this subtest.
650: 628 000116A6 # * The force loop flag is set after the first error.
651: 629 000116A6 # */
652: 630 000116A6 # asm("_negf_4_lp1:");
653: 631 000116A6 _negf_4_lp1:
654: 632 000116A6 # asm("movl $0,r0"); /* clear r0 */
655: 633 000116A6 0d 00 50 movl $0,r0
656: 634 000116A9 # asm("ldf r0"); /* load the Acc. with 0.0 */
657: 635 000116A9 06 50 ldf r0
658: 636 000116AB # asm("addf _sgl_ld_acc"); /* add the value to negate */
659: 637 000116AB c6 effffffa9b addf _sgl_ld_acc
660: 638 000116B1 # asm("negf"); /* negate the value */
661: 639 000116B1 b6 negf
662: 640 000116B2 # asm("stf _sgl_st_acc"); /* store the result */
663: 641 000116B2 26 effffffa94 stf _sgl_st_acc
664: 642 000116B8 # if( force_loop )
665: 643 000116B8 5d effffffa8e tstl _force_loop
666: 644 000116BE 31 02 jeql L298
667: 645 000116C0 # asm("brb _negf_4_lp1");; /* loop on the error */
668: 646 000116C0 11 e4 brb _negf_4_lp1
669: 647 000116C2 L298:
670: 648 000116C2 # /*
671: 649 000116C2 # * end error loop - test the results
672: 650 000116C2 # */
673: 651 000116C2 # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
674: 652 000116C2 1d effffffa84 effffffa7f cmpl _sgl_st_acc,_sgl_expected
675: 653 000116CD 21 03 13 00dc jeql L299
676: 654 000116D2 # errcnt++; /* bump the error count */
677: 655 000116D2 6d effffffa74 incl _errcnt
678: 656 000116D8 # if( prt_error ) {
679: 657 000116D8 5d effffffa6e tstl _prt_error
680: 658 000116DE 21 03 13 00a8 jeql L300
681: 659 000116E3 # writes(" \n"); /* start a new print line */
682: 660 000116E3 .data 1
683: 661 00000a2f * L301:
684: 662 00000a2f * 200A00 .ascii " \12\0"
685: 663 00000a32 * .text
686: 664 000116E3 dd 8f00000a2f pushl $L301
687: 665 000116E9 fe 08 effffffa5c callf $8,_writes
688: 666 000116F0 # writes("cycle: ");
689: 667 000116F0 .data 1
690: 668 00000a32 * L302:
691: 669 00000a32 * 6379636C653A2000 .ascii "cycle: \0"
692: 670 00000a3a * .text
693: 671 000116F0 dd 8f00000a32 pushl $L302
694: 672 000116F6 fe 08 effffffa4f callf $8,_writes
695: 673 000116FD # writed( cycle );
696: 674 000116FD dd effffffa49 pushl _cycle
697: 675 00011703 fe 08 effffffa42 callf $8,_writed
698: 676 0001170A # writes(" NEGF test ");
699: 677 0001170A .data 1
700: 678 00000a3a * L303:
701: 679 00000a3a * 20204E4547462074657374200 .ascii " NEGF test \0"
702: 0
703: 680 00000a47 * .text
704: 681 0001170A dd 8f00000a3a pushl $L303
705: 682 00011710 fe 08 effffffa35 callf $8,_writes
706: 683 00011717 # writed( test_no );
707: 684 00011717 dd effffffa2f pushl _test_no
708: 685 0001171D fe 08 effffffa28 callf $8,_writed
709: 686 00011724 # writes(", subtest 4 (Piped Entry) - BAD FINAL ACC\n");
710: 687 00011724 .data 1
711: 688 00000a47 * L304:
712: 689 00000a47 * 2C20737562746573742034202 .ascii ", subtest 4 (Piped Entry) - BAD FINAL ACC\12\0"
713: 8506970656420456E74727929
714: 202D204241442046494E414C2
715: 04143430A00
716: 690 00000a72 * .text
717: 691 00011724 dd 8f00000a47 pushl $L304
718: 692 0001172A fe 08 effffffa1b callf $8,_writes
719: 693 00011731 # print_negf_data();
720: 694 00011731 fe 04 ef000001ee callf $4,_print_negf_data
721: 695 00011738 # writes(", data index = ");
722: 696 00011738 .data 1
723: 697 00000a72 * L305:
724: 698 00000a72 * 2C2020206461746120696E646 .ascii ", data index = \0"
725: 578203D2000
726: 699 00000a84 * .text
727: 700 00011738 dd 8f00000a72 pushl $L305
728: 701 0001173E fe 08 effffffa07 callf $8,_writes
729: 702 00011745 # writed( index );
730: 703 00011745 dd effffffa01 pushl _index
731: 704 0001174B fe 08 effffff9fa callf $8,_writed
732: 705 00011752 # writec('\n');
733: 706 00011752 dd 0a pushl $10
734: 707 00011754 fe 08 effffff9f1 callf $8,_writec
735: 708 0001175B # writes(" ");
736: 709 0001175B .data 1
737: 710 00000a84 * L306:
738: 711 00000a84 * 2020202020202020202020202 .ascii " \0"
739: 020202020202020202000
740: 712 00000a9b * .text
741: 713 0001175B dd 8f00000a84 pushl $L306
742: 714 00011761 fe 08 effffff9e4 callf $8,_writes
743: 715 00011768 # writes("Acc expected = ");
744: 716 00011768 .data 1
745: 717 00000a9b * L307:
746: 718 00000a9b * 4163632065787065637465642 .ascii "Acc expected = \0"
747: 03D2000
748: 719 00000aab * .text
749: 720 00011768 dd 8f00000a9b pushl $L307
750: 721 0001176E fe 08 effffff9d7 callf $8,_writes
751: 722 00011775 # write32h( sgl_expected );
752: 723 00011775 dd effffff9d1 pushl _sgl_expected
753: 724 0001177B fe 08 effffff9ca callf $8,_write32h
754: 725 00011782 # writec('\n');
755: 726 00011782 dd 0a pushl $10
756: 727 00011784 fe 08 effffff9c1 callf $8,_writec
757: 728 0001178B # }
758: 729 0001178B # if( halt_flg )
759: 730 0001178B L300:
760: 731 0001178B 5d effffff9bb tstl _halt_flg
761: 732 00011791 31 09 jeql L308
762: 733 00011793 # negf_er_halt( BAD_ACC_HLT ); /* halt on the error */
763: 734 00011793 dd 01 pushl $1
764: 735 00011795 fe 08 ef000001c6 callf $8,_negf_er_halt
765: 736 0001179C # if( loop_on_err ) {
766: 737 0001179C L308:
767: 738 0001179C 5d effffff9aa tstl _loop_on_err
768: 739 000117A2 31 0a jeql L309
769: 740 000117A4 # force_loop = TRUE; /* set the force loop flag */
770: 741 000117A4 0d 01 effffff9a1 movl $1,_force_loop
771: 742 000117AB # asm("brw _negf_4_lp1");; /* and loop on the error */
772: 743 000117AB 13 fef8 brw _negf_4_lp1
773: 744 000117AE # } /* end of loop on error */
774: 745 000117AE # } /* end of compare error */
775: 746 000117AE L309:
776: 747 000117AE # } /* end of WHILE loop */
777: 748 000117AE L299:
778: 749 000117AE L295:
779: 750 000117AE 6d effffff998 incl _index
780: 751 000117B4 13 feb3 jbr L297
781: 752 000117B7 L296:
782: 753 000117B7 # } /* end of subtest 4 */
783: 754 000117B7 40 ret#2
784: 755 000117B8 .set L291,0x0
785: 756 000117B8 L293:
786: 757 000117B8 13 fe9c jbr L294
787: 758 000117BB .data
788: 759 000008c8 * .text
789: 760 000117BB 00 .align 1
790: 761 000117BC .globl _negf_5
791: 762 000117BC _negf_5:
792: 763 000117BC 0000 .word L310
793: 764 000117BE #
794: 765 000117BE #
795: 766 000117BE #
796: 767 000117BE # /************************************************************************
797: 768 000117BE # *
798: 769 000117BE # * SUBTEST 5 - pipelined exit test
799: 770 000117BE # *
800: 771 000117BE # ************************************************************************/
801: 772 000117BE # negf_5()
802: 773 000117BE # {
803: 774 000117BE 13 0161 jbr L312
804: 775 000117C1 L313:
805: 776 000117C1 # force_loop = FALSE;
806: 777 000117C1 4d effffff985 clrl _force_loop
807: 778 000117C7 # subtest = 5;
808: 779 000117C7 0d 05 effffff97e movl $5,_subtest
809: 780 000117CE # for( index = 0; index < max_lnf_1_index; index++ ) {
810: 781 000117CE 4d effffff978 clrl _index
811: 782 000117D4 L316:
812: 783 000117D4 1d effffff972 effffff96d cmpl _index,_max_lnf_1_index
813: 784 000117DF 91 03 13 013d jgeq L315
814: 785 000117E4 # sgl_ld_acc = lnf_1_data[index].ld; /* get value to negate */
815: 786 000117E4 0d effffff962 50 movl _index,r0
816: 787 000117EB 48 03 50 50 shll $3,r0,r0
817: 788 000117EF 0d e000000000 effffff952 movl _lnf_1_data(r0),_sgl_ld_acc
818: 789 000117FA # sgl_expected = lnf_1_data[index].exp; /* get expected result */
819: 790 000117FA 0d effffff94c 50 movl _index,r0
820: 791 00011801 48 03 50 50 shll $3,r0,r0
821: 792 00011805 0d e000000004 effffff93c movl _lnf_1_data+4(r0),_sgl_expected
822: 793 00011810 # /*
823: 794 00011810 # * If LOOP ON ERROR is set, this is the loop for this subtest.
824: 795 00011810 # * The force loop flag is set after the first error.
825: 796 00011810 # */
826: 797 00011810 # asm("_negf_5_lp1:");
827: 798 00011810 _negf_5_lp1:
828: 799 00011810 # asm("movl $0,r0"); /* clear r0 */
829: 800 00011810 0d 00 50 movl $0,r0
830: 801 00011813 # asm("ldf _sgl_ld_acc"); /* load the value */
831: 802 00011813 06 effffff933 ldf _sgl_ld_acc
832: 803 00011819 # asm("negf"); /* negate the value */
833: 804 00011819 b6 negf
834: 805 0001181A # asm("addf r0"); /* add a zero to the acc */
835: 806 0001181A c6 50 addf r0
836: 807 0001181C # asm("stf _sgl_st_acc"); /* store the result */
837: 808 0001181C 26 effffff92a stf _sgl_st_acc
838: 809 00011822 # if( force_loop )
839: 810 00011822 5d effffff924 tstl _force_loop
840: 811 00011828 31 02 jeql L317
841: 812 0001182A # asm("brb _negf_5_lp1");; /* loop on the error */
842: 813 0001182A 11 e4 brb _negf_5_lp1
843: 814 0001182C L317:
844: 815 0001182C # /*
845: 816 0001182C # * end error loop - test the results
846: 817 0001182C # */
847: 818 0001182C # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */
848: 819 0001182C 1d effffff91a effffff915 cmpl _sgl_st_acc,_sgl_expected
849: 820 00011837 21 03 13 00dc jeql L318
850: 821 0001183C # errcnt++; /* bump the error count */
851: 822 0001183C 6d effffff90a incl _errcnt
852: 823 00011842 # if( prt_error ) {
853: 824 00011842 5d effffff904 tstl _prt_error
854: 825 00011848 21 03 13 00a8 jeql L319
855: 826 0001184D # writes(" \n"); /* start a new print line */
856: 827 0001184D .data 1
857: 828 00000aab * L320:
858: 829 00000aab * 200A00 .ascii " \12\0"
859: 830 00000aae * .text
860: 831 0001184D dd 8f00000aab pushl $L320
861: 832 00011853 fe 08 effffff8f2 callf $8,_writes
862: 833 0001185A # writes("cycle: ");
863: 834 0001185A .data 1
864: 835 00000aae * L321:
865: 836 00000aae * 6379636C653A2000 .ascii "cycle: \0"
866: 837 00000ab6 * .text
867: 838 0001185A dd 8f00000aae pushl $L321
868: 839 00011860 fe 08 effffff8e5 callf $8,_writes
869: 840 00011867 # writed( cycle );
870: 841 00011867 dd effffff8df pushl _cycle
871: 842 0001186D fe 08 effffff8d8 callf $8,_writed
872: 843 00011874 # writes(" NEGF test ");
873: 844 00011874 .data 1
874: 845 00000ab6 * L322:
875: 846 00000ab6 * 20204E4547462074657374200 .ascii " NEGF test \0"
876: 0
877: 847 00000ac3 * .text
878: 848 00011874 dd 8f00000ab6 pushl $L322
879: 849 0001187A fe 08 effffff8cb callf $8,_writes
880: 850 00011881 # writed( test_no );
881: 851 00011881 dd effffff8c5 pushl _test_no
882: 852 00011887 fe 08 effffff8be callf $8,_writed
883: 853 0001188E # writes(", subtest 5 (Piped Exit) - BAD FINAL ACC\n");
884: 854 0001188E .data 1
885: 855 00000ac3 * L323:
886: 856 00000ac3 * 2C20737562746573742035202 .ascii ", subtest 5 (Piped Exit) - BAD FINAL ACC\12\0"
887: 8506970656420457869742920
888: 2D204241442046494E414C204
889: 143430A00
890: 857 00000aed * .text
891: 858 0001188E dd 8f00000ac3 pushl $L323
892: 859 00011894 fe 08 effffff8b1 callf $8,_writes
893: 860 0001189B # print_negf_data();
894: 861 0001189B fe 04 ef00000084 callf $4,_print_negf_data
895: 862 000118A2 # writes(", data index = ");
896: 863 000118A2 .data 1
897: 864 00000aed * L324:
898: 865 00000aed * 2C2020206461746120696E646 .ascii ", data index = \0"
899: 578203D2000
900: 866 00000aff * .text
901: 867 000118A2 dd 8f00000aed pushl $L324
902: 868 000118A8 fe 08 effffff89d callf $8,_writes
903: 869 000118AF # writed( index );
904: 870 000118AF dd effffff897 pushl _index
905: 871 000118B5 fe 08 effffff890 callf $8,_writed
906: 872 000118BC # writec('\n');
907: 873 000118BC dd 0a pushl $10
908: 874 000118BE fe 08 effffff887 callf $8,_writec
909: 875 000118C5 # writes(" ");
910: 876 000118C5 .data 1
911: 877 00000aff * L325:
912: 878 00000aff * 2020202020202020202020202 .ascii " \0"
913: 020202020202020202000
914: 879 00000b16 * .text
915: 880 000118C5 dd 8f00000aff pushl $L325
916: 881 000118CB fe 08 effffff87a callf $8,_writes
917: 882 000118D2 # writes("Acc expected = ");
918: 883 000118D2 .data 1
919: 884 00000b16 * L326:
920: 885 00000b16 * 4163632065787065637465642 .ascii "Acc expected = \0"
921: 03D2000
922: 886 00000b26 * .text
923: 887 000118D2 dd 8f00000b16 pushl $L326
924: 888 000118D8 fe 08 effffff86d callf $8,_writes
925: 889 000118DF # write32h( sgl_expected );
926: 890 000118DF dd effffff867 pushl _sgl_expected
927: 891 000118E5 fe 08 effffff860 callf $8,_write32h
928: 892 000118EC # writec('\n');
929: 893 000118EC dd 0a pushl $10
930: 894 000118EE fe 08 effffff857 callf $8,_writec
931: 895 000118F5 # }
932: 896 000118F5 # if( halt_flg )
933: 897 000118F5 L319:
934: 898 000118F5 5d effffff851 tstl _halt_flg
935: 899 000118FB 31 09 jeql L327
936: 900 000118FD # negf_er_halt( BAD_ACC_HLT ); /* halt on the error */
937: 901 000118FD dd 01 pushl $1
938: 902 000118FF fe 08 ef0000005c callf $8,_negf_er_halt
939: 903 00011906 # if( loop_on_err ) {
940: 904 00011906 L327:
941: 905 00011906 5d effffff840 tstl _loop_on_err
942: 906 0001190C 31 0a jeql L328
943: 907 0001190E # force_loop = TRUE; /* set the force loop flag */
944: 908 0001190E 0d 01 effffff837 movl $1,_force_loop
945: 909 00011915 # asm("brw _negf_5_lp1");; /* and loop on the error */
946: 910 00011915 13 fef8 brw _negf_5_lp1
947: 911 00011918 # } /* end of loop on error */
948: 912 00011918 # } /* end of compare error */
949: 913 00011918 L328:
950: 914 00011918 # } /* end of WHILE loop */
951: 915 00011918 L318:
952: 916 00011918 L314:
953: 917 00011918 6d effffff82e incl _index
954: 918 0001191E 13 feb3 jbr L316
955: 919 00011921 L315:
956: 920 00011921 # } /* end of subtest 5 */
957: 921 00011921 40 ret#2
958: 922 00011922 .set L310,0x0
959: 923 00011922 L312:
960: 924 00011922 13 fe9c jbr L313
961: 925 00011925 .data
962: 926 000008c8 * .text
963: 927 00011925 00 .align 1
964: 928 00011926 .globl _print_negf_data
965: 929 00011926 _print_negf_data:
966: 930 00011926 0000 .word L329
967: 931 00011928 #
968: 932 00011928 #
969: 933 00011928 #
970: 934 00011928 # /**************************************************************************
971: 935 00011928 # *
972: 936 00011928 # * PRINT THE DATA AND STORE RESULTS
973: 937 00011928 # *
974: 938 00011928 # * initial Acc = xxxxxxxx, stored = xxxxxxxx, data index = xx
975: 939 00011928 # * expected = xxxxxxxx
976: 940 00011928 # **************************************************************************/
977: 941 00011928 # print_negf_data()
978: 942 00011928 # {
979: 943 00011928 11 35 jbr L331
980: 944 0001192A L332:
981: 945 0001192A # writes("initial Acc = ");
982: 946 0001192A .data 1
983: 947 00000b26 * L333:
984: 948 00000b26 * 696E697469616C20416363203 .ascii "initial Acc = \0"
985: D2000
986: 949 00000b35 * .text
987: 950 0001192A dd 8f00000b26 pushl $L333
988: 951 00011930 fe 08 effffff815 callf $8,_writes
989: 952 00011937 # write32h( sgl_ld_acc );
990: 953 00011937 dd effffff80f pushl _sgl_ld_acc
991: 954 0001193D fe 08 effffff808 callf $8,_write32h
992: 955 00011944 # writes(", final Acc = ");
993: 956 00011944 .data 1
994: 957 00000b35 * L334:
995: 958 00000b35 * 2C202066696E616C204163632 .ascii ", final Acc = \0"
996: 03D2000
997: 959 00000b45 * .text
998: 960 00011944 dd 8f00000b35 pushl $L334
999: 961 0001194A fe 08 effffff7fb callf $8,_writes
1000: 962 00011951 # write32h( sgl_st_acc );
1001: 963 00011951 dd effffff7f5 pushl _sgl_st_acc
1002: 964 00011957 fe 08 effffff7ee callf $8,_write32h
1003: 965 0001195E # }
1004: 966 0001195E 40 ret#2
1005: 967 0001195F .set L329,0x0
1006: 968 0001195F L331:
1007: 969 0001195F 11 c9 jbr L332
1008: 970 00011961 .data
1009: 971 000008c8 * .text
1010: 972 00011961 00 .align 1
1011: 973 00011962 .globl _negf_er_halt
1012: 974 00011962 _negf_er_halt:
1013: 975 00011962 0000 .word L335
1014: 976 00011964 #
1015: 977 00011964 #
1016: 978 00011964 #
1017: 979 00011964 # /**************************************************************************
1018: 980 00011964 # *
1019: 981 00011964 # * HALT ON ERROR ROUTINE
1020: 982 00011964 # *
1021: 983 00011964 # **************************************************************************/
1022: 984 00011964 # negf_er_halt( halt_code )
1023: 985 00011964 # int halt_code;
1024: 986 00011964 # {
1025: 987 00011964 13 00a8 jbr L337
1026: 988 00011967 L338:
1027: 989 00011967 # sgl_dummy1 = halt_code; /* get the error type */
1028: 990 00011967 0d ad04 effffff7dd movl 4(fp),_sgl_dummy1
1029: 991 0001196F # asm("movl _test_no,r0"); /* r0 = test number */
1030: 992 0001196F 0d effffff7d7 50 movl _test_no,r0
1031: 993 00011976 # asm("movl _subtest,r1"); /* r1 = subtest number */
1032: 994 00011976 0d effffff7d0 51 movl _subtest,r1
1033: 995 0001197D # asm("movl _sgl_dummy1,r2"); /* r2 = error code */
1034: 996 0001197D 0d effffff7c9 52 movl _sgl_dummy1,r2
1035: 997 00011984 # asm("movl _cycle,r3"); /* r3 = cycle count */
1036: 998 00011984 0d effffff7c2 53 movl _cycle,r3
1037: 999 0001198B # asm("movl _sgl_ld_acc,r4"); /* r4 = initial data */
1038: 1000 0001198B 0d effffff7bb 54 movl _sgl_ld_acc,r4
1039: 1001 00011992 # asm("movl _sgl_value_1,r5"); /* r5 = data loaded */
1040: 1002 00011992 0d effffff7b4 55 movl _sgl_value_1,r5
1041: 1003 00011999 # if( halt_code == BAD_ACC_HLT ) {
1042: 1004 00011999 1d ad04 01 cmpl 4(fp),$1
1043: 1005 0001199D 21 10 jneq L339
1044: 1006 0001199F # asm("movl _sgl_st_acc,r6"); /* r6 = data stored */
1045: 1007 0001199F 0d effffff7a7 56 movl _sgl_st_acc,r6
1046: 1008 000119A6 # asm("movl _sgl_expected,r7"); /* r7 = data expected */
1047: 1009 000119A6 0d effffff7a0 57 movl _sgl_expected,r7
1048: 1010 000119AD # } else
1049: 1011 000119AD 11 5e jbr L340
1050: 1012 000119AF L339:
1051: 1013 000119AF # if( halt_code == BAD_REG_HLT ) {
1052: 1014 000119AF 1d ad04 02 cmpl 4(fp),$2
1053: 1015 000119B3 21 3d jneq L341
1054: 1016 000119B5 # sgl_dummy1 = load_regs[index2];
1055: 1017 000119B5 0d effffff791 50 movl _index2,r0
1056: 1018 000119BC 0d 40effffff789 movl _load_regs[r0],_sgl_dummy1
1057: effffff784
1058: 1019 000119C8 # sgl_dummy2 = store_regs[index2];
1059: 1020 000119C8 0d effffff77e 50 movl _index2,r0
1060: 1021 000119CF 0d 40effffff776 movl _store_regs[r0],_sgl_dummy2
1061: effffff771
1062: 1022 000119DB # asm("movl _index2,r6"); /* r6 = bad register # */
1063: 1023 000119DB 0d effffff76b 56 movl _index2,r6
1064: 1024 000119E2 # asm("movl _sgl_dummy1,r7"); /* r7 = actual value */
1065: 1025 000119E2 0d effffff764 57 movl _sgl_dummy1,r7
1066: 1026 000119E9 # asm("movl _sgl_dummy2,r8"); /* r8 = expected value */
1067: 1027 000119E9 0d effffff75d 58 movl _sgl_dummy2,r8
1068: 1028 000119F0 # } else
1069: 1029 000119F0 11 1b jbr L342
1070: 1030 000119F2 L341:
1071: 1031 000119F2 # if( halt_code == BAD_PSL_HLT ) {
1072: 1032 000119F2 1d ad04 03 cmpl 4(fp),$3
1073: 1033 000119F6 21 15 jneq L343
1074: 1034 000119F8 # asm("movl _init_psl,r6"); /* r6 = initial PSL */
1075: 1035 000119F8 0d effffff74e 56 movl _init_psl,r6
1076: 1036 000119FF # asm("movl _psl_val,r7"); /* r7 = final PSL */
1077: 1037 000119FF 0d effffff747 57 movl _psl_val,r7
1078: 1038 00011A06 # asm("movl _exp_psl,r8"); /* r8 = expected PSL */
1079: 1039 00011A06 0d effffff740 58 movl _exp_psl,r8
1080: 1040 00011A0D # };
1081: 1041 00011A0D L343:
1082: 1042 00011A0D L342:
1083: 1043 00011A0D L340:
1084: 1044 00011A0D # asm("halt"); /* HALT ... */
1085: 1045 00011A0D 00 halt
1086: 1046 00011A0E # }
1087: 1047 00011A0E 40 ret#2
1088: 1048 00011A0F .set L335,0x0
1089: 1049 00011A0F L337:
1090: 1050 00011A0F 13 ff55 jbr L338
1091: 1051 00011A12 .data
1092: 1051 00022B5E .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.