|
|
Power 6/32 Unix version 1.21
1 00000000 LL0:
2 00000000 .data
3 00000d38 * .text
4 00000000 .align 1
5 00000000 .globl _mull3
6 00000000 _mull3:
7 00024C8C 0000 .word L215
8 00024C8E # #include "fpp_defs.h"
9 00024C8E #
10 00024C8E #
11 00024C8E # /***************************************************************************
12 00024C8E # *
13 00024C8E # * MULL3 -MULTIPLY INTEGER 3 INSTRUCTION TEST
14 00024C8E # *
15 00024C8E # *****************************************************************************/
16 00024C8E # mull3()
17 00024C8E # {
18 00024C8E 11 4f jbr L217
19 00024C90 L218:
20 00024C90 # asm(".globl _mull3_t");
21 00024C90 .globl _mull3_t
22 00024C90 # asm("_mull3_t:"); /* entry address */
23 00024C90 _mull3_t:
24 00024C90 # if( (cycle == 1) && (prt_hdrs) ) /* print headers on 1st cycle */
25 00024C90 1d effffffff6 01 cmpl _cycle,$1
26 00024C97 21 15 jneq L219
27 00024C99 5d efffffffed tstl _prt_hdrs
28 00024C9F 31 0d jeql L219
29 00024CA1 # {
30 00024CA1 # writes(" MULL3");
31 00024CA1 .data 1
32 00000d38 * L221:
33 00000d38 * 204D554C4C3300 .ascii " MULL3\0"
34 00000d3f * .text
35 00024CA1 dd 8f00000d38 pushl $L221
36 00024CA7 fe 08 efffffffde callf $8,_writes
37 00024CAE # }
38 00024CAE # mull3_1(); /* register data / SGL acc. */
39 00024CAE L219:
40 00024CAE fe 04 ef0000002d callf $4,_mull3_1
41 00024CB5 # mull3_2(); /* memory data / DBL acc. */
42 00024CB5 fe 04 ef000001d0 callf $4,_mull3_2
43 00024CBC # mull3_3(); /* register corruption test */
44 00024CBC fe 04 ef000003d3 callf $4,_mull3_3
45 00024CC3 # mull3_4(); /* PSL corruption test */
46 00024CC3 fe 04 ef0000055c callf $4,_mull3_4
47 00024CCA # mull3_5(); /* pipelined entry test */
48 00024CCA fe 04 ef000006f9 callf $4,_mull3_5
49 00024CD1 # mull3_6(); /* pipelined exit test */
50 00024CD1 fe 04 ef000008be callf $4,_mull3_6
51 00024CD8 # asm("jmp *return"); /* return to the test monitor */
52 00024CD8 71 ffffffffae jmp *return
53 00024CDE # }
54 00024CDE 40 ret#2
55 00024CDF .set L215,0x0
56 00024CDF L217:
57 00024CDF 11 af jbr L218
58 00024CE1 .data
59 00000d38 * .text
60 00024CE1 00 .align 1
61 00024CE2 .globl _mull3_1
62 00024CE2 _mull3_1:
63 00024CE2 0000 .word L228
64 00024CE4 #
65 00024CE4 #
66 00024CE4 #
67 00024CE4 # /************************************************************************
68 00024CE4 # *
69 00024CE4 # * SUBTEST 1 - register addressing / single precsion accumulator
70 00024CE4 # *
71 00024CE4 # ************************************************************************/
72 00024CE4 # mull3_1()
73 00024CE4 # {
74 00024CE4 13 01a2 jbr L230
75 00024CE7 L231:
76 00024CE7 # force_loop = FALSE;
77 00024CE7 4d efffffff9f clrl _force_loop
78 00024CED # subtest = 1;
79 00024CED 0d 01 efffffff98 movl $1,_subtest
80 00024CF4 # for( index = 0; index < max_mull_1_index; index++ ) {
81 00024CF4 4d efffffff92 clrl _index
82 00024CFA L234:
83 00024CFA 1d efffffff8c efffffff87 cmpl _index,_max_mull_1_index
84 00024D05 91 03 13 017e jgeq L233
85 00024D0A # sgl_value_1 = mull_1_data[index].op_1; /* get operand 1 */
86 00024D0A 5c 0c efffffff7b 50 mull3 $12,_index,r0
87 00024D12 0d e000000000 efffffff6f movl _mull_1_data(r0),_sgl_value_1
88 00024D1D # sgl_value_2 = mull_1_data[index].op_2; /* get operand 2 */
89 00024D1D 5c 0c efffffff68 50 mull3 $12,_index,r0
90 00024D25 0d e000000004 efffffff5c movl _mull_1_data+4(r0),_sgl_value_2
91 00024D30 # sgl_value_4 = mull_1_data[index].exp; /* get expected results */
92 00024D30 5c 0c efffffff55 50 mull3 $12,_index,r0
93 00024D38 0d e000000008 efffffff49 movl _mull_1_data+8(r0),_sgl_value_4
94 00024D43 # sgl_ld_acc = 0x12345678; /* set acc data pattern */
95 00024D43 0d 8f12345678 efffffff3e movl $305419896,_sgl_ld_acc
96 00024D4E # sgl_expected = sgl_ld_acc; /* final Acc expected */
97 00024D4E 0d efffffff38 efffffff33 movl _sgl_ld_acc,_sgl_expected
98 00024D59 # /*
99 00024D59 # * If LOOP ON ERROR is set, this is the loop for this subtest.
100 00024D59 # */
101 00024D59 # asm("_mull3_1_lp1:");
102 00024D59 _mull3_1_lp1:
103 00024D59 # asm("movl _sgl_value_1,r3"); /* move the 1st data to r3 */
104 00024D59 0d efffffff2d 53 movl _sgl_value_1,r3
105 00024D60 # asm("movl _sgl_value_2,r4"); /* move the 2nd data to r4 */
106 00024D60 0d efffffff26 54 movl _sgl_value_2,r4
107 00024D67 # asm("ldf _sgl_ld_acc"); /* load the acc */
108 00024D67 06 efffffff1f ldf _sgl_ld_acc
109 00024D6D # asm("mull3 r3,r4,r5"); /* do the multiply */
110 00024D6D 5c 53 54 55 mull3 r3,r4,r5
111 00024D71 # asm("nop");
112 00024D71 10 nop
113 00024D72 # asm("stf _sgl_st_acc"); /* save the acc */
114 00024D72 26 efffffff14 stf _sgl_st_acc
115 00024D78 # if( force_loop )
116 00024D78 5d efffffff0e tstl _force_loop
117 00024D7E 31 02 jeql L235
118 00024D80 # asm("brb _mull3_1_lp1");;
119 00024D80 11 d7 brb _mull3_1_lp1
120 00024D82 L235:
121 00024D82 # asm("movl r5,_sgl_value_3");
122 00024D82 0d 55 efffffff03 movl r5,_sgl_value_3
123 00024D89 # if( sgl_expected != sgl_st_acc ) { /* COMPARE the values */
124 00024D89 1d effffffefd effffffef8 cmpl _sgl_expected,_sgl_st_acc
125 00024D94 21 03 13 0098 jeql L236
126 00024D99 # errcnt++; /* bump the error count */
127 00024D99 6d effffffeed incl _errcnt
128 00024D9F # if ( prt_error ) {
129 00024D9F 5d effffffee7 tstl _prt_error
130 00024DA5 31 64 jeql L237
131 00024DA7 # print_mull3_error("(Reg. Data) -THE ACC WAS MODIFIED");
132 00024DA7 .data 1
133 00000d3f * L239:
134 00000d3f * 285265672E204461746129202 .ascii "(Reg. Data) -THE ACC WAS MODIFIED\0"
D544845204143432057415320
4D4F44494649454400
135 00000d61 * .text
136 00024DA7 dd 8f00000d3f pushl $L239
137 00024DAD fe 08 ef000009ae callf $8,_print_mull3_error
138 00024DB4 # writes("initial Acc = ");
139 00024DB4 .data 1
140 00000d61 * L240:
141 00000d61 * 696E697469616C20416363203 .ascii "initial Acc = \0"
D2000
142 00000d70 * .text
143 00024DB4 dd 8f00000d61 pushl $L240
144 00024DBA fe 08 effffffecb callf $8,_writes
145 00024DC1 # write32h( sgl_ld_acc );
146 00024DC1 dd effffffec5 pushl _sgl_ld_acc
147 00024DC7 fe 08 effffffebe callf $8,_write32h
148 00024DCE # writes(", final Acc = ");
149 00024DCE .data 1
150 00000d70 * L242:
151 00000d70 * 2C202020202066696E616C204 .ascii ", final Acc = \0"
16363203D2000
152 00000d83 * .text
153 00024DCE dd 8f00000d70 pushl $L242
154 00024DD4 fe 08 effffffeb1 callf $8,_writes
155 00024DDB # write32h( sgl_st_acc );
156 00024DDB dd effffffeab pushl _sgl_st_acc
157 00024DE1 fe 08 effffffea4 callf $8,_write32h
158 00024DE8 # writes("\n expected Acc = ");
159 00024DE8 .data 1
160 00000d83 * L243:
161 00000d83 * 0A20202020202020202020202 .ascii "\12 expected Acc = \0"
0202020202020202020202020
2020202065787065637465642
0416363203D2000
162 00000db0 * .text
163 00024DE8 dd 8f00000d83 pushl $L243
164 00024DEE fe 08 effffffe97 callf $8,_writes
165 00024DF5 # write32h( sgl_expected );
166 00024DF5 dd effffffe91 pushl _sgl_expected
167 00024DFB fe 08 effffffe8a callf $8,_write32h
168 00024E02 # writec('\n');
169 00024E02 dd 0a pushl $10
170 00024E04 fe 08 effffffe81 callf $8,_writec
171 00024E0B # }
172 00024E0B # if ( halt_flg ) /* halt on error? */
173 00024E0B L237:
174 00024E0B 5d effffffe7b tstl _halt_flg
175 00024E11 31 09 jeql L245
176 00024E13 # mull3_halt( 4 );
177 00024E13 dd 04 pushl $4
178 00024E15 fe 08 ef00000a4c callf $8,_mull3_halt
179 00024E1C # if ( loop_on_err ) {
180 00024E1C L245:
181 00024E1C 5d effffffe6a tstl _loop_on_err
182 00024E22 31 0d jeql L247
183 00024E24 # force_loop = TRUE; /* set the force loop flag */
184 00024E24 0d 01 effffffe61 movl $1,_force_loop
185 00024E2B # asm("jmp _mull3_1_lp1"); /* and loop */
186 00024E2B 71 efffffff28 jmp _mull3_1_lp1
187 00024E31 # } /* end of loop-on-error */
188 00024E31 # } /* end of acc corr error */
189 00024E31 L247:
190 00024E31 # if( sgl_value_4 != sgl_value_3 ) /* COMPARE the values */
191 00024E31 L236:
192 00024E31 1d effffffe55 effffffe50 cmpl _sgl_value_4,_sgl_value_3
193 00024E3C 31 41 jeql L248
194 00024E3E # {
195 00024E3E # errcnt++; /* bump the error count */
196 00024E3E 6d effffffe48 incl _errcnt
197 00024E44 # if ( prt_error ) {
198 00024E44 5d effffffe42 tstl _prt_error
199 00024E4A 31 0d jeql L249
200 00024E4C # print_mull3_error("(Reg. Data) -BAD MULTIPLY RESULT");
201 00024E4C .data 1
202 00000db0 * L250:
203 00000db0 * 285265672E204461746129202 .ascii "(Reg. Data) -BAD MULTIPLY RESULT\0"
D424144204D554C5449504C59
20524553554C5400
204 00000dd1 * .text
205 00024E4C dd 8f00000db0 pushl $L250
206 00024E52 fe 08 ef00000909 callf $8,_print_mull3_error
207 00024E59 # }
208 00024E59 # if ( halt_flg ) /* halt on error? */
209 00024E59 L249:
210 00024E59 5d effffffe2d tstl _halt_flg
211 00024E5F 31 09 jeql L251
212 00024E61 # mull3_halt( 1 );
213 00024E61 dd 01 pushl $1
214 00024E63 fe 08 ef000009fe callf $8,_mull3_halt
215 00024E6A # if ( loop_on_err ) {
216 00024E6A L251:
217 00024E6A 5d effffffe1c tstl _loop_on_err
218 00024E70 31 0d jeql L252
219 00024E72 # force_loop = TRUE; /* set the force loop flag */
220 00024E72 0d 01 effffffe13 movl $1,_force_loop
221 00024E79 # asm("jmp _mull3_1_lp1"); /* and loop */
222 00024E79 71 effffffeda jmp _mull3_1_lp1
223 00024E7F # } /* end of loop-on-error */
224 00024E7F # } /* end of multiply error */
225 00024E7F L252:
226 00024E7F # }
227 00024E7F L248:
228 00024E7F L232:
229 00024E7F 6d effffffe07 incl _index
230 00024E85 13 fe72 jbr L234
231 00024E88 L233:
232 00024E88 # } /* end of subtest 1 */
233 00024E88 40 ret#2
234 00024E89 .set L228,0x0
235 00024E89 L230:
236 00024E89 13 fe5b jbr L231
237 00024E8C .data
238 00000d38 * .text
239 00024E8C .align 1
240 00024E8C .globl _mull3_2
241 00024E8C _mull3_2:
242 00024E8C 0000 .word L253
243 00024E8E #
244 00024E8E #
245 00024E8E #
246 00024E8E # /************************************************************************
247 00024E8E # *
248 00024E8E # * SUBTEST 2 - cache addressing / double precsion accumulator
249 00024E8E # *
250 00024E8E # ************************************************************************/
251 00024E8E # mull3_2()
252 00024E8E # {
253 00024E8E 13 0201 jbr L255
254 00024E91 L256:
255 00024E91 # force_loop = FALSE;
256 00024E91 4d effffffdf5 clrl _force_loop
257 00024E97 # subtest = 2;
258 00024E97 0d 02 effffffdee movl $2,_subtest
259 00024E9E # for( index = 0; index < max_mull_1_index; index++ ) {
260 00024E9E 4d effffffde8 clrl _index
261 00024EA4 L259:
262 00024EA4 1d effffffde2 effffffddd cmpl _index,_max_mull_1_index
263 00024EAF 91 03 13 01dd jgeq L258
264 00024EB4 # sgl_value_1 = mull_1_data[index].op_1; /* get operand 1 */
265 00024EB4 5c 0c effffffdd1 50 mull3 $12,_index,r0
266 00024EBC 0d e000000000 effffffdc5 movl _mull_1_data(r0),_sgl_value_1
267 00024EC7 # sgl_value_2 = mull_1_data[index].op_2; /* get operand 2 */
268 00024EC7 5c 0c effffffdbe 50 mull3 $12,_index,r0
269 00024ECF 0d e000000004 effffffdb2 movl _mull_1_data+4(r0),_sgl_value_2
270 00024EDA # sgl_value_4 = mull_1_data[index].exp; /* get expected results */
271 00024EDA 5c 0c effffffdab 50 mull3 $12,_index,r0
272 00024EE2 0d e000000008 effffffd9f movl _mull_1_data+8(r0),_sgl_value_4
273 00024EED # dbl_ld_acc.m = 0x12345678; /* set acc data pattern */
274 00024EED 0d 8f12345678 effffffd94 movl $305419896,_dbl_ld_acc
275 00024EF8 # dbl_ld_acc.l = 0x9abcdef0;
276 00024EF8 0d 8f9abcdef0 effffffd8d movl $-1698898192,_dbl_ld_acc+4
277 00024F03 # dbl_expected.m = dbl_ld_acc.m; /* final Acc expected */
278 00024F03 0d effffffd83 effffffd7e movl _dbl_ld_acc,_dbl_expected
279 00024F0E # dbl_expected.l = dbl_ld_acc.l;
280 00024F0E 0d effffffd7c effffffd77 movl _dbl_ld_acc+4,_dbl_expected+4
281 00024F19 # /*
282 00024F19 # * If LOOP ON ERROR is set, this is the loop for this subtest.
283 00024F19 # */
284 00024F19 # asm("_mull3_2_lp1:");
285 00024F19 _mull3_2_lp1:
286 00024F19 # asm("ldd _dbl_ld_acc"); /* load the acc */
287 00024F19 07 effffffd6d ldd _dbl_ld_acc
288 00024F1F # asm("mull3 _sgl_value_1,_sgl_value_2,_sgl_value_3");
289 00024F1F 5c effffffd67 effffffd62 mull3 _sgl_value_1,_sgl_value_2,_sgl_value_3
effffffd5d
290 00024F2F # asm("nop");
291 00024F2F 10 nop
292 00024F30 # asm("std _dbl_st_acc"); /* save the acc */
293 00024F30 27 effffffd56 std _dbl_st_acc
294 00024F36 # if( force_loop )
295 00024F36 5d effffffd50 tstl _force_loop
296 00024F3C 31 02 jeql L260
297 00024F3E # asm("brb _mull3_2_lp1");;
298 00024F3E 11 d9 brb _mull3_2_lp1
299 00024F40 L260:
300 00024F40 # if( (dbl_expected.m != dbl_st_acc.m) || /* COMPARE the Acc */
301 00024F40 # (dbl_expected.l != dbl_st_acc.l) ) {
302 00024F40 1d effffffd46 effffffd41 cmpl _dbl_expected,_dbl_st_acc
303 00024F4B 21 10 jneq L9999
304 00024F4D 1d effffffd3d effffffd38 cmpl _dbl_expected+4,_dbl_st_acc+4
305 00024F58 21 03 13 00dd jeql L261
306 00024F5D L9999:
307 00024F5D # errcnt++; /* bump the error count */
308 00024F5D 6d effffffd29 incl _errcnt
309 00024F63 # if ( prt_error ) {
310 00024F63 5d effffffd23 tstl _prt_error
311 00024F69 21 03 13 00a6 jeql L262
312 00024F6E # print_mull3_error("(Memory data) -THE ACC WAS MODIFIED");
313 00024F6E .data 1
314 00000dd1 * L263:
315 00000dd1 * 284D656D6F727920646174612 .ascii "(Memory data) -THE ACC WAS MODIFIED\0"
9202D54484520414343205741
53204D4F44494649454400
316 00000df5 * .text
317 00024F6E dd 8f00000dd1 pushl $L263
318 00024F74 fe 08 ef000007e7 callf $8,_print_mull3_error
319 00024F7B # writes("initial Acc = ");
320 00024F7B .data 1
321 00000df5 * L264:
322 00000df5 * 696E697469616C20416363203 .ascii "initial Acc = \0"
D2000
323 00000e04 * .text
324 00024F7B dd 8f00000df5 pushl $L264
325 00024F81 fe 08 effffffd04 callf $8,_writes
326 00024F88 # write32h( dbl_ld_acc.m );
327 00024F88 dd effffffcfe pushl _dbl_ld_acc
328 00024F8E fe 08 effffffcf7 callf $8,_write32h
329 00024F95 # writec(' ');
330 00024F95 dd 20 pushl $32
331 00024F97 fe 08 effffffcee callf $8,_writec
332 00024F9E # write32h( dbl_ld_acc.l );
333 00024F9E dd effffffcec pushl _dbl_ld_acc+4
334 00024FA4 fe 08 effffffce1 callf $8,_write32h
335 00024FAB # writes(", final Acc = ");
336 00024FAB .data 1
337 00000e04 * L265:
338 00000e04 * 2C202020202066696E616C204 .ascii ", final Acc = \0"
16363203D2000
339 00000e17 * .text
340 00024FAB dd 8f00000e04 pushl $L265
341 00024FB1 fe 08 effffffcd4 callf $8,_writes
342 00024FB8 # write32h( dbl_st_acc.m );
343 00024FB8 dd effffffcce pushl _dbl_st_acc
344 00024FBE fe 08 effffffcc7 callf $8,_write32h
345 00024FC5 # writec(' ');
346 00024FC5 dd 20 pushl $32
347 00024FC7 fe 08 effffffcbe callf $8,_writec
348 00024FCE # write32h( dbl_st_acc.l );
349 00024FCE dd effffffcbc pushl _dbl_st_acc+4
350 00024FD4 fe 08 effffffcb1 callf $8,_write32h
351 00024FDB # writes("\n expected Acc = ");
352 00024FDB .data 1
353 00000e17 * L266:
354 00000e17 * 0A20202020202020202020202 .ascii "\12 expected Acc = \0"
0202020202020202020202020
2020202020202020202065787
0656374656420416363203D20
00
355 00000e4a * .text
356 00024FDB dd 8f00000e17 pushl $L266
357 00024FE1 fe 08 effffffca4 callf $8,_writes
358 00024FE8 # write32h( dbl_expected.m );
359 00024FE8 dd effffffc9e pushl _dbl_expected
360 00024FEE fe 08 effffffc97 callf $8,_write32h
361 00024FF5 # writec(' ');
362 00024FF5 dd 20 pushl $32
363 00024FF7 fe 08 effffffc8e callf $8,_writec
364 00024FFE # write32h( dbl_expected.l );
365 00024FFE dd effffffc8c pushl _dbl_expected+4
366 00025004 fe 08 effffffc81 callf $8,_write32h
367 0002500B # writec('\n');
368 0002500B dd 0a pushl $10
369 0002500D fe 08 effffffc78 callf $8,_writec
370 00025014 # }
371 00025014 # if ( halt_flg ) /* halt on error? */
372 00025014 L262:
373 00025014 5d effffffc72 tstl _halt_flg
374 0002501A 31 09 jeql L267
375 0002501C # mull3_halt( 4 );
376 0002501C dd 04 pushl $4
377 0002501E fe 08 ef00000843 callf $8,_mull3_halt
378 00025025 # if ( loop_on_err ) {
379 00025025 L267:
380 00025025 5d effffffc61 tstl _loop_on_err
381 0002502B 31 0d jeql L268
382 0002502D # force_loop = TRUE; /* set the force loop flag */
383 0002502D 0d 01 effffffc58 movl $1,_force_loop
384 00025034 # asm("jmp _mull3_2_lp1"); /* and loop */
385 00025034 71 effffffedf jmp _mull3_2_lp1
386 0002503A # } /* end of loop-on-error */
387 0002503A # } /* end of acc corr error */
388 0002503A L268:
389 0002503A # if( sgl_value_4 != sgl_value_3 ) /* COMPARE the values */
390 0002503A L261:
391 0002503A 1d effffffc4c effffffc47 cmpl _sgl_value_4,_sgl_value_3
392 00025045 31 41 jeql L269
393 00025047 # {
394 00025047 # errcnt++; /* bump the error count */
395 00025047 6d effffffc3f incl _errcnt
396 0002504D # if ( prt_error ) {
397 0002504D 5d effffffc39 tstl _prt_error
398 00025053 31 0d jeql L270
399 00025055 # print_mull3_error("(Memory data) -BAD MULTIPLY RESULT");
400 00025055 .data 1
401 00000e4a * L271:
402 00000e4a * 284D656D6F727920646174612 .ascii "(Memory data) -BAD MULTIPLY RESULT\0"
9202D424144204D554C544950
4C5920524553554C5400
403 00000e6d * .text
404 00025055 dd 8f00000e4a pushl $L271
405 0002505B fe 08 ef00000700 callf $8,_print_mull3_error
406 00025062 # }
407 00025062 # if ( halt_flg ) /* halt on error? */
408 00025062 L270:
409 00025062 5d effffffc24 tstl _halt_flg
410 00025068 31 09 jeql L272
411 0002506A # mull3_halt( 1 );
412 0002506A dd 01 pushl $1
413 0002506C fe 08 ef000007f5 callf $8,_mull3_halt
414 00025073 # if ( loop_on_err ) {
415 00025073 L272:
416 00025073 5d effffffc13 tstl _loop_on_err
417 00025079 31 0d jeql L273
418 0002507B # force_loop = TRUE; /* set the force loop flag */
419 0002507B 0d 01 effffffc0a movl $1,_force_loop
420 00025082 # asm("jmp _mull3_2_lp1"); /* and loop */
421 00025082 71 effffffe91 jmp _mull3_2_lp1
422 00025088 # } /* end of loop-on-error */
423 00025088 # } /* end of multiply error */
424 00025088 L273:
425 00025088 # }
426 00025088 L269:
427 00025088 L257:
428 00025088 6d effffffbfe incl _index
429 0002508E 13 fe13 jbr L259
430 00025091 L258:
431 00025091 # } /* end of subtest 2 */
432 00025091 40 ret#2
433 00025092 .set L253,0x0
434 00025092 L255:
435 00025092 13 fdfc jbr L256
436 00025095 .data
437 00000d38 * .text
438 00025095 00 .align 1
439 00025096 .globl _mull3_3
440 00025096 _mull3_3:
441 00025096 0000 .word L274
442 00025098 #
443 00025098 #
444 00025098 #
445 00025098 # /************************************************************************
446 00025098 # *
447 00025098 # * SUBTEST 3 - register corruption test
448 00025098 # *
449 00025098 # ************************************************************************/
450 00025098 # mull3_3()
451 00025098 # {
452 00025098 13 0188 jbr L276
453 0002509B L277:
454 0002509B # force_loop = FALSE;
455 0002509B 4d effffffbeb clrl _force_loop
456 000250A1 # subtest = 2;
457 000250A1 0d 02 effffffbe4 movl $2,_subtest
458 000250A8 # fill_reg_buf( load_regs ); /* get pattern for registers */
459 000250A8 dd 8f00000000 pushl $_load_regs
460 000250AE fe 08 effffffbd7 callf $8,_fill_reg_buf
461 000250B5 # for( index = 0; index < max_mull_1_index; index++ ) {
462 000250B5 4d effffffbd1 clrl _index
463 000250BB L281:
464 000250BB 1d effffffbcb effffffbc6 cmpl _index,_max_mull_1_index
465 000250C6 91 03 13 0157 jgeq L280
466 000250CB # sgl_value_1 = mull_1_data[index].op_1; /* get operand 1 */
467 000250CB 5c 0c effffffbba 50 mull3 $12,_index,r0
468 000250D3 0d e000000000 effffffbae movl _mull_1_data(r0),_sgl_value_1
469 000250DE # sgl_value_2 = mull_1_data[index].op_2; /* get operand 2 */
470 000250DE 5c 0c effffffba7 50 mull3 $12,_index,r0
471 000250E6 0d e000000004 effffffb9b movl _mull_1_data+4(r0),_sgl_value_2
472 000250F1 # sgl_value_4 = mull_1_data[index].exp; /* get expected results */
473 000250F1 5c 0c effffffb94 50 mull3 $12,_index,r0
474 000250F9 0d e000000008 effffffb88 movl _mull_1_data+8(r0),_sgl_value_4
475 00025104 # /*
476 00025104 # * If LOOP ON ERROR is set, this is the loop for this subtest.
477 00025104 # */
478 00025104 # asm("_mull3_3_lp1:");
479 00025104 _mull3_3_lp1:
480 00025104 # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */
481 00025104 ab 891fff effffffb7f loadr $0x1fff,_load_regs
482 0002510D # asm("mull3 _sgl_value_1,_sgl_value_2,_sgl_value_3");
483 0002510D 5c effffffb79 effffffb74 mull3 _sgl_value_1,_sgl_value_2,_sgl_value_3
effffffb6f
484 0002511D # asm("nop");
485 0002511D 10 nop
486 0002511E # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */
487 0002511E bb 891fff effffffb65 storer $0x1fff,_store_regs
488 00025127 # if( force_loop )
489 00025127 5d effffffb5f tstl _force_loop
490 0002512D 31 02 jeql L282
491 0002512F # asm("brb _mull3_3_lp1");
492 0002512F 11 d3 brb _mull3_3_lp1
493 00025131 # /*
494 00025131 # * Now check the result
495 00025131 # */
496 00025131 # index2 = 0;
497 00025131 L282:
498 00025131 4d effffffb55 clrl _index2
499 00025137 # while( (load_regs[index2] == store_regs[index2]) && (index2 < 13) )
500 00025137 L283:
501 00025137 0d effffffb4f 50 movl _index2,r0
502 0002513E 0d effffffb48 51 movl _index2,r1
503 00025145 1d 40effffffb40 cmpl _load_regs[r0],_store_regs[r1]
41effffffb3a
504 00025152 21 11 jneq L284
505 00025154 1d effffffb32 0d cmpl _index2,$13
506 0002515B 81 08 jgeq L284
507 0002515D # index2++; /* check reg values */
508 0002515D 6d effffffb29 incl _index2
509 00025163 11 d2 jbr L283
510 00025165 L284:
511 00025165 # if( index2 < 13 ) { /* error if index2 < 13 */
512 00025165 1d effffffb21 0d cmpl _index2,$13
513 0002516C 91 03 13 00a8 jgeq L285
514 00025171 # errcnt++; /* bump the error count */
515 00025171 6d effffffb15 incl _errcnt
516 00025177 # if ( prt_error ) {
517 00025177 5d effffffb0f tstl _prt_error
518 0002517D 31 74 jeql L286
519 0002517F # print_mull3_error(" -A REGISTER WAS MODIFIED");
520 0002517F .data 1
521 00000e6d * L287:
522 00000e6d * 202D412052454749535445522 .ascii " -A REGISTER WAS MODIFIED\0"
0574153204D4F444946494544
00
523 00000e87 * .text
524 0002517F dd 8f00000e6d pushl $L287
525 00025185 fe 08 ef000005d6 callf $8,_print_mull3_error
526 0002518C # writes("register ");
527 0002518C .data 1
528 00000e87 * L288:
529 00000e87 * 72656769737465722000 .ascii "register \0"
530 00000e91 * .text
531 0002518C dd 8f00000e87 pushl $L288
532 00025192 fe 08 effffffaf3 callf $8,_writes
533 00025199 # writeh( index2 );
534 00025199 dd effffffaed pushl _index2
535 0002519F fe 08 effffffae6 callf $8,_writeh
536 000251A6 # writes(" = ");
537 000251A6 .data 1
538 00000e91 * L290:
539 00000e91 * 203D2000 .ascii " = \0"
540 00000e95 * .text
541 000251A6 dd 8f00000e91 pushl $L290
542 000251AC fe 08 effffffad9 callf $8,_writes
543 000251B3 # write32h( store_regs[index2] );
544 000251B3 0d effffffad3 50 movl _index2,r0
545 000251BA dd 40effffffacb pushl _store_regs[r0]
546 000251C1 fe 08 effffffac4 callf $8,_write32h
547 000251C8 # writes(", should be = ");
548 000251C8 .data 1
549 00000e95 * L291:
550 00000e95 * 2C202073686F756C642062652 .ascii ", should be = \0"
03D2000
551 00000ea5 * .text
552 000251C8 dd 8f00000e95 pushl $L291
553 000251CE fe 08 effffffab7 callf $8,_writes
554 000251D5 # write32h( load_regs[index2] );
555 000251D5 0d effffffab1 50 movl _index2,r0
556 000251DC dd 40effffffaa9 pushl _load_regs[r0]
557 000251E3 fe 08 effffffaa2 callf $8,_write32h
558 000251EA # writec('\n');
559 000251EA dd 0a pushl $10
560 000251EC fe 08 effffffa99 callf $8,_writec
561 000251F3 # }
562 000251F3 # if ( halt_flg ) /* halt on error? */
563 000251F3 L286:
564 000251F3 5d effffffa93 tstl _halt_flg
565 000251F9 31 09 jeql L292
566 000251FB # mull3_halt( 2 );
567 000251FB dd 02 pushl $2
568 000251FD fe 08 ef00000664 callf $8,_mull3_halt
569 00025204 # if ( loop_on_err ) {
570 00025204 L292:
571 00025204 5d effffffa82 tstl _loop_on_err
572 0002520A 31 0d jeql L293
573 0002520C # force_loop = TRUE; /* set the force loop flag */
574 0002520C 0d 01 effffffa79 movl $1,_force_loop
575 00025213 # asm("jmp _mull3_3_lp1"); /* and loop */
576 00025213 71 effffffeeb jmp _mull3_3_lp1
577 00025219 # }; /* end of loop-on-error */
578 00025219 L293:
579 00025219 # } /* end of multiply error */
580 00025219 # }
581 00025219 L285:
582 00025219 L279:
583 00025219 6d effffffa6d incl _index
584 0002521F 13 fe99 jbr L281
585 00025222 L280:
586 00025222 # } /* end of subtest 3 */
587 00025222 40 ret#2
588 00025223 .set L274,0x0
589 00025223 L276:
590 00025223 13 fe75 jbr L277
591 00025226 .data
592 00000d38 * .text
593 00025226 .align 1
594 00025226 .globl _mull3_4
595 00025226 _mull3_4:
596 00025226 0000 .word L294
597 00025228 #
598 00025228 #
599 00025228 #
600 00025228 # /************************************************************************
601 00025228 # *
602 00025228 # * SUBTEST 4 - PSL corruption test
603 00025228 # *
604 00025228 # ************************************************************************/
605 00025228 # mull3_4()
606 00025228 # {
607 00025228 13 019c jbr L296
608 0002522B L297:
609 0002522B # force_loop = FALSE;
610 0002522B 4d effffffa5b clrl _force_loop
611 00025231 # subtest = 4;
612 00025231 0d 04 effffffa54 movl $4,_subtest
613 00025238 # status_index = 0;
614 00025238 4d effffffa4e clrl _status_index
615 0002523E # for( index = 0; index < max_mull_1_index; index++ ) {
616 0002523E 4d effffffa48 clrl _index
617 00025244 L300:
618 00025244 1d effffffa42 effffffa3d cmpl _index,_max_mull_1_index
619 0002524F 91 03 13 0172 jgeq L299
620 00025254 # sgl_value_1 = mull_1_data[index].op_1; /* get operand 1 */
621 00025254 5c 0c effffffa31 50 mull3 $12,_index,r0
622 0002525C 0d e000000000 effffffa25 movl _mull_1_data(r0),_sgl_value_1
623 00025267 # sgl_value_2 = mull_1_data[index].op_2; /* get operand 2 */
624 00025267 5c 0c effffffa1e 50 mull3 $12,_index,r0
625 0002526F 0d e000000004 effffffa12 movl _mull_1_data+4(r0),_sgl_value_2
626 0002527A # sgl_value_4 = mull_1_data[index].exp; /* get expected results */
627 0002527A 5c 0c effffffa0b 50 mull3 $12,_index,r0
628 00025282 0d e000000008 effffff9ff movl _mull_1_data+8(r0),_sgl_value_4
629 0002528D # sgl_dummy1 = status_array[status_index]; /* status = +, -, 0 */
630 0002528D 0d effffff9f9 50 movl _status_index,r0
631 00025294 0d 40effffff9f1 movl _status_array[r0],_sgl_dummy1
effffff9ec
632 000252A0 # /*
633 000252A0 # * If LOOP ON ERROR is set, this is the loop for this subtest.
634 000252A0 # */
635 000252A0 # asm("_mull3_4_lp1:");
636 000252A0 _mull3_4_lp1:
637 000252A0 # asm("tstl _sgl_dummy1");
638 000252A0 5d effffff9e6 tstl _sgl_dummy1
639 000252A6 # asm("movpsl _init_psl"); /* save the initial PSL */
640 000252A6 cd effffff9e0 movpsl _init_psl
641 000252AC # asm("mull3 _sgl_value_1,_sgl_value_2,_sgl_value_3");
642 000252AC 5c effffff9da effffff9d5 mull3 _sgl_value_1,_sgl_value_2,_sgl_value_3
effffff9d0
643 000252BC # asm("movpsl _psl_val"); /* save the final PSL */
644 000252BC cd effffff9ca movpsl _psl_val
645 000252C2 # if( force_loop )
646 000252C2 5d effffff9c4 tstl _force_loop
647 000252C8 31 02 jeql L301
648 000252CA # asm("brb _mull3_4_lp1");
649 000252CA 11 d4 brb _mull3_4_lp1
650 000252CC # /*
651 000252CC # * Now check the result
652 000252CC # */
653 000252CC # exp_psl = init_psl & 0xffffff3; /* strip off the PSL status */
654 000252CC L301:
655 000252CC bc 8f0ffffff3 effffff9b5 andl3 $268435443,_init_psl,r0
50
656 000252D8 0d 50 effffff9ad movl r0,_exp_psl
657 000252DF # if( sgl_value_4 < 0 ) /* check the MULL result */
658 000252DF 5d effffff9a7 tstl _sgl_value_4
659 000252E5 81 07 jgeq L302
660 000252E7 # exp_psl |= PSL_N; /* set the NEGATIVE bit */
661 000252E7 8c 08 effffff99e orl2 $8,_exp_psl
662 000252EE # if( !sgl_value_4 )
663 000252EE L302:
664 000252EE 5d effffff998 tstl _sgl_value_4
665 000252F4 21 07 jneq L303
666 000252F6 # exp_psl |= PSL_Z; /* set the ZERO bit */
667 000252F6 8c 04 effffff98f orl2 $4,_exp_psl
668 000252FD # if( psl_val != exp_psl ) { /* was the final PSL correct */
669 000252FD L303:
670 000252FD 1d effffff989 effffff984 cmpl _psl_val,_exp_psl
671 00025308 21 03 13 0098 jeql L304
672 0002530D # errcnt++; /* bump the error count */
673 0002530D 6d effffff979 incl _errcnt
674 00025313 # if ( prt_error ) {
675 00025313 5d effffff973 tstl _prt_error
676 00025319 31 64 jeql L305
677 0002531B # print_mull3_error(" -INCORRECT FINAL PSL");
678 0002531B .data 1
679 00000ea5 * L306:
680 00000ea5 * 202D494E434F5252454354204 .ascii " -INCORRECT FINAL PSL\0"
6494E414C2050534C00
681 00000ebb * .text
682 0002531B dd 8f00000ea5 pushl $L306
683 00025321 fe 08 ef0000043a callf $8,_print_mull3_error
684 00025328 # writes("initial PSL = ");
685 00025328 .data 1
686 00000ebb * L307:
687 00000ebb * 696E697469616C2050534C203 .ascii "initial PSL = \0"
D2000
688 00000eca * .text
689 00025328 dd 8f00000ebb pushl $L307
690 0002532E fe 08 effffff957 callf $8,_writes
691 00025335 # write32h( init_psl );
692 00025335 dd effffff951 pushl _init_psl
693 0002533B fe 08 effffff94a callf $8,_write32h
694 00025342 # writes(", final PSL = ");
695 00025342 .data 1
696 00000eca * L308:
697 00000eca * 2C202066696E616C2050534C2 .ascii ", final PSL = \0"
03D2000
698 00000eda * .text
699 00025342 dd 8f00000eca pushl $L308
700 00025348 fe 08 effffff93d callf $8,_writes
701 0002534F # write32h( psl_val );
702 0002534F dd effffff937 pushl _psl_val
703 00025355 fe 08 effffff930 callf $8,_write32h
704 0002535C # writes(", expected PSL = ");
705 0002535C .data 1
706 00000eda * L309:
707 00000eda * 2C20206578706563746564205 .ascii ", expected PSL = \0"
0534C203D2000
708 00000eed * .text
709 0002535C dd 8f00000eda pushl $L309
710 00025362 fe 08 effffff923 callf $8,_writes
711 00025369 # write32h( exp_psl );
712 00025369 dd effffff91d pushl _exp_psl
713 0002536F fe 08 effffff916 callf $8,_write32h
714 00025376 # writec('\n');
715 00025376 dd 0a pushl $10
716 00025378 fe 08 effffff90d callf $8,_writec
717 0002537F # }
718 0002537F # if ( halt_flg ) /* halt on error? */
719 0002537F L305:
720 0002537F 5d effffff907 tstl _halt_flg
721 00025385 31 09 jeql L310
722 00025387 # mull3_halt( 3 );
723 00025387 dd 03 pushl $3
724 00025389 fe 08 ef000004d8 callf $8,_mull3_halt
725 00025390 # if ( loop_on_err ) {
726 00025390 L310:
727 00025390 5d effffff8f6 tstl _loop_on_err
728 00025396 31 0d jeql L311
729 00025398 # force_loop = TRUE; /* set the force loop flag */
730 00025398 0d 01 effffff8ed movl $1,_force_loop
731 0002539F # asm("jmp _mull3_4_lp1"); /* and loop */
732 0002539F 71 effffffefb jmp _mull3_4_lp1
733 000253A5 # }; /* end of loop-on-error */
734 000253A5 L311:
735 000253A5 # }; /* end of error */
736 000253A5 L304:
737 000253A5 # if( ++status_index >= 3 )
738 000253A5 6d effffff8e1 incl _status_index
739 000253AB 0d effffff8db 50 movl _status_index,r0
740 000253B2 1d 50 03 cmpl r0,$3
741 000253B5 91 06 jlss L312
742 000253B7 # status_index = 0;
743 000253B7 4d effffff8cf clrl _status_index
744 000253BD # }
745 000253BD L312:
746 000253BD L298:
747 000253BD 6d effffff8c9 incl _index
748 000253C3 13 fe7e jbr L300
749 000253C6 L299:
750 000253C6 # } /* end of subtest 4 */
751 000253C6 40 ret#2
752 000253C7 .set L294,0x0
753 000253C7 L296:
754 000253C7 13 fe61 jbr L297
755 000253CA .data
756 00000d38 * .text
757 000253CA .align 1
758 000253CA .globl _mull3_5
759 000253CA _mull3_5:
760 000253CA 0000 .word L313
761 000253CC #
762 000253CC #
763 000253CC #
764 000253CC # /************************************************************************
765 000253CC # *
766 000253CC # * SUBTEST 5 - Pipelined Entry test
767 000253CC # *
768 000253CC # ************************************************************************/
769 000253CC # mull3_5()
770 000253CC # {
771 000253CC 13 01c3 jbr L315
772 000253CF L316:
773 000253CF # force_loop = FALSE;
774 000253CF 4d effffff8b7 clrl _force_loop
775 000253D5 # subtest = 5;
776 000253D5 0d 05 effffff8b0 movl $5,_subtest
777 000253DC # for( index = 0; index < max_mull_1_index; index++ ) {
778 000253DC 4d effffff8aa clrl _index
779 000253E2 L319:
780 000253E2 1d effffff8a4 effffff89f cmpl _index,_max_mull_1_index
781 000253ED 91 03 13 019f jgeq L318
782 000253F2 # sgl_value_1 = mull_1_data[index].op_1; /* get operand 1 */
783 000253F2 5c 0c effffff893 50 mull3 $12,_index,r0
784 000253FA 0d e000000000 effffff887 movl _mull_1_data(r0),_sgl_value_1
785 00025405 # sgl_value_2 = mull_1_data[index].op_2; /* get operand 2 */
786 00025405 5c 0c effffff880 50 mull3 $12,_index,r0
787 0002540D 0d e000000004 effffff874 movl _mull_1_data+4(r0),_sgl_value_2
788 00025418 # sgl_value_4 = mull_1_data[index].exp; /* get expected results */
789 00025418 5c 0c effffff86d 50 mull3 $12,_index,r0
790 00025420 0d e000000008 effffff861 movl _mull_1_data+8(r0),_sgl_value_4
791 0002542B # sgl_ld_acc = 0x12345678; /* set acc data pattern */
792 0002542B 0d 8f12345678 effffff856 movl $305419896,_sgl_ld_acc
793 00025436 # sgl_expected = sgl_ld_acc; /* final Acc expected */
794 00025436 0d effffff850 effffff84b movl _sgl_ld_acc,_sgl_expected
795 00025441 # sgl_value_10 = 0x40800000; /* floating "1.0" */
796 00025441 0d 8f40800000 effffff840 movl $1082130432,_sgl_value_10
797 0002544C # /*
798 0002544C # * If LOOP ON ERROR is set, this is the loop for this subtest.
799 0002544C # */
800 0002544C # asm("_mull3_5_lp1:");
801 0002544C _mull3_5_lp1:
802 0002544C # asm("ldf _sgl_ld_acc"); /* load the acc */
803 0002544C 06 effffff83a ldf _sgl_ld_acc
804 00025452 # asm("mulf _sgl_value_10"); /* do a floating multiply */
805 00025452 e6 effffff834 mulf _sgl_value_10
806 00025458 # asm("mull3 _sgl_value_1,_sgl_value_2,_sgl_value_3");
807 00025458 5c effffff82e effffff829 mull3 _sgl_value_1,_sgl_value_2,_sgl_value_3
effffff824
808 00025468 # asm("stf _sgl_st_acc"); /* save the acc */
809 00025468 26 effffff81e stf _sgl_st_acc
810 0002546E # if( force_loop )
811 0002546E 5d effffff818 tstl _force_loop
812 00025474 31 02 jeql L320
813 00025476 # asm("brb _mull3_5_lp1");;
814 00025476 11 d4 brb _mull3_5_lp1
815 00025478 L320:
816 00025478 # if( sgl_expected != sgl_st_acc ) { /* COMPARE the values */
817 00025478 1d effffff80e effffff809 cmpl _sgl_expected,_sgl_st_acc
818 00025483 21 03 13 00b2 jeql L321
819 00025488 # errcnt++; /* bump the error count */
820 00025488 6d effffff7fe incl _errcnt
821 0002548E # if ( prt_error ) {
822 0002548E 5d effffff7f8 tstl _prt_error
823 00025494 31 7e jeql L322
824 00025496 # print_mull3_error("(Piped Entry) -BAD FINAL ACC");
825 00025496 .data 1
826 00000eed * L323:
827 00000eed * 28506970656420456E7472792 .ascii "(Piped Entry) -BAD FINAL ACC\0"
9202D4241442046494E414C20
41434300
828 00000f0a * .text
829 00025496 dd 8f00000eed pushl $L323
830 0002549C fe 08 ef000002bf callf $8,_print_mull3_error
831 000254A3 # writes("initial Acc = ");
832 000254A3 .data 1
833 00000f0a * L324:
834 00000f0a * 696E697469616C20416363203 .ascii "initial Acc = \0"
D2000
835 00000f19 * .text
836 000254A3 dd 8f00000f0a pushl $L324
837 000254A9 fe 08 effffff7dc callf $8,_writes
838 000254B0 # write32h( sgl_ld_acc );
839 000254B0 dd effffff7d6 pushl _sgl_ld_acc
840 000254B6 fe 08 effffff7cf callf $8,_write32h
841 000254BD # writes(", final Acc = ");
842 000254BD .data 1
843 00000f19 * L325:
844 00000f19 * 2C202020202066696E616C204 .ascii ", final Acc = \0"
16363203D2000
845 00000f2c * .text
846 000254BD dd 8f00000f19 pushl $L325
847 000254C3 fe 08 effffff7c2 callf $8,_writes
848 000254CA # write32h( sgl_st_acc );
849 000254CA dd effffff7bc pushl _sgl_st_acc
850 000254D0 fe 08 effffff7b5 callf $8,_write32h
851 000254D7 # writes("\nFPP operand = ");
852 000254D7 .data 1
853 00000f2c * L326:
854 00000f2c * 0A465050206F706572616E642 .ascii "\12FPP operand = \0"
03D2000
855 00000f3c * .text
856 000254D7 dd 8f00000f2c pushl $L326
857 000254DD fe 08 effffff7a8 callf $8,_writes
858 000254E4 # write32h( sgl_value_10 );
859 000254E4 dd effffff7a2 pushl _sgl_value_10
860 000254EA fe 08 effffff79b callf $8,_write32h
861 000254F1 # writes(", expected Acc = ");
862 000254F1 .data 1
863 00000f3c * L327:
864 00000f3c * 2C20206578706563746564204 .ascii ", expected Acc = \0"
16363203D2000
865 00000f4f * .text
866 000254F1 dd 8f00000f3c pushl $L327
867 000254F7 fe 08 effffff78e callf $8,_writes
868 000254FE # write32h( sgl_expected );
869 000254FE dd effffff788 pushl _sgl_expected
870 00025504 fe 08 effffff781 callf $8,_write32h
871 0002550B # writec('\n');
872 0002550B dd 0a pushl $10
873 0002550D fe 08 effffff778 callf $8,_writec
874 00025514 # }
875 00025514 # if ( halt_flg ) /* halt on error? */
876 00025514 L322:
877 00025514 5d effffff772 tstl _halt_flg
878 0002551A 31 09 jeql L328
879 0002551C # mull3_halt( 5 );
880 0002551C dd 05 pushl $5
881 0002551E fe 08 ef00000343 callf $8,_mull3_halt
882 00025525 # if ( loop_on_err ) {
883 00025525 L328:
884 00025525 5d effffff761 tstl _loop_on_err
885 0002552B 31 0d jeql L329
886 0002552D # force_loop = TRUE; /* set the force loop flag */
887 0002552D 0d 01 effffff758 movl $1,_force_loop
888 00025534 # asm("jmp _mull3_5_lp1"); /* and loop */
889 00025534 71 efffffff12 jmp _mull3_5_lp1
890 0002553A # } /* end of loop-on-error */
891 0002553A # } /* end of acc corr error */
892 0002553A L329:
893 0002553A # if( sgl_value_4 != sgl_value_3 ) /* COMPARE the values */
894 0002553A L321:
895 0002553A 1d effffff74c effffff747 cmpl _sgl_value_4,_sgl_value_3
896 00025545 31 41 jeql L330
897 00025547 # {
898 00025547 # errcnt++; /* bump the error count */
899 00025547 6d effffff73f incl _errcnt
900 0002554D # if ( prt_error ) {
901 0002554D 5d effffff739 tstl _prt_error
902 00025553 31 0d jeql L331
903 00025555 # print_mull3_error("(Piped Entry) -BAD MULTIPLY RESULT");
904 00025555 .data 1
905 00000f4f * L332:
906 00000f4f * 28506970656420456E7472792 .ascii "(Piped Entry) -BAD MULTIPLY RESULT\0"
9202D424144204D554C544950
4C5920524553554C5400
907 00000f72 * .text
908 00025555 dd 8f00000f4f pushl $L332
909 0002555B fe 08 ef00000200 callf $8,_print_mull3_error
910 00025562 # }
911 00025562 # if ( halt_flg ) /* halt on error? */
912 00025562 L331:
913 00025562 5d effffff724 tstl _halt_flg
914 00025568 31 09 jeql L333
915 0002556A # mull3_halt( 1 );
916 0002556A dd 01 pushl $1
917 0002556C fe 08 ef000002f5 callf $8,_mull3_halt
918 00025573 # if ( loop_on_err ) {
919 00025573 L333:
920 00025573 5d effffff713 tstl _loop_on_err
921 00025579 31 0d jeql L334
922 0002557B # force_loop = TRUE; /* set the force loop flag */
923 0002557B 0d 01 effffff70a movl $1,_force_loop
924 00025582 # asm("jmp _mull3_5_lp1"); /* and loop */
925 00025582 71 effffffec4 jmp _mull3_5_lp1
926 00025588 # } /* end of loop-on-error */
927 00025588 # } /* end of multiply error */
928 00025588 L334:
929 00025588 # }
930 00025588 L330:
931 00025588 L317:
932 00025588 6d effffff6fe incl _index
933 0002558E 13 fe51 jbr L319
934 00025591 L318:
935 00025591 # } /* end of subtest 5 */
936 00025591 40 ret#2
937 00025592 .set L313,0x0
938 00025592 L315:
939 00025592 13 fe3a jbr L316
940 00025595 .data
941 00000d38 * .text
942 00025595 00 .align 1
943 00025596 .globl _mull3_6
944 00025596 _mull3_6:
945 00025596 0000 .word L335
946 00025598 #
947 00025598 #
948 00025598 #
949 00025598 # /************************************************************************
950 00025598 # *
951 00025598 # * SUBTEST 6 - Pipelined Exit test
952 00025598 # *
953 00025598 # ************************************************************************/
954 00025598 # mull3_6()
955 00025598 # {
956 00025598 13 01c3 jbr L337
957 0002559B L338:
958 0002559B # force_loop = FALSE;
959 0002559B 4d effffff6eb clrl _force_loop
960 000255A1 # subtest = 6;
961 000255A1 0d 06 effffff6e4 movl $6,_subtest
962 000255A8 # for( index = 0; index < max_mull_1_index; index++ ) {
963 000255A8 4d effffff6de clrl _index
964 000255AE L341:
965 000255AE 1d effffff6d8 effffff6d3 cmpl _index,_max_mull_1_index
966 000255B9 91 03 13 019f jgeq L340
967 000255BE # sgl_value_1 = mull_1_data[index].op_1; /* get operand 1 */
968 000255BE 5c 0c effffff6c7 50 mull3 $12,_index,r0
969 000255C6 0d e000000000 effffff6bb movl _mull_1_data(r0),_sgl_value_1
970 000255D1 # sgl_value_2 = mull_1_data[index].op_2; /* get operand 2 */
971 000255D1 5c 0c effffff6b4 50 mull3 $12,_index,r0
972 000255D9 0d e000000004 effffff6a8 movl _mull_1_data+4(r0),_sgl_value_2
973 000255E4 # sgl_value_4 = mull_1_data[index].exp; /* get expected results */
974 000255E4 5c 0c effffff6a1 50 mull3 $12,_index,r0
975 000255EC 0d e000000008 effffff695 movl _mull_1_data+8(r0),_sgl_value_4
976 000255F7 # sgl_ld_acc = 0x40800000; /* floating "1.0" */
977 000255F7 0d 8f40800000 effffff68a movl $1082130432,_sgl_ld_acc
978 00025602 # sgl_value_10 = 0x12345678; /* set acc data pattern */
979 00025602 0d 8f12345678 effffff67f movl $305419896,_sgl_value_10
980 0002560D # sgl_expected = sgl_value_10; /* final Acc expected */
981 0002560D 0d effffff679 effffff674 movl _sgl_value_10,_sgl_expected
982 00025618 # /*
983 00025618 # * If LOOP ON ERROR is set, this is the loop for this subtest.
984 00025618 # */
985 00025618 # asm("_mull3_6_lp1:");
986 00025618 _mull3_6_lp1:
987 00025618 # asm("ldf _sgl_ld_acc"); /* load the acc */
988 00025618 06 effffff66e ldf _sgl_ld_acc
989 0002561E # asm("mull3 _sgl_value_1,_sgl_value_2,_sgl_value_3");
990 0002561E 5c effffff668 effffff663 mull3 _sgl_value_1,_sgl_value_2,_sgl_value_3
effffff65e
991 0002562E # asm("mulf _sgl_value_10"); /* do a floating multiply */
992 0002562E e6 effffff658 mulf _sgl_value_10
993 00025634 # asm("stf _sgl_st_acc"); /* save the acc */
994 00025634 26 effffff652 stf _sgl_st_acc
995 0002563A # if( force_loop )
996 0002563A 5d effffff64c tstl _force_loop
997 00025640 31 02 jeql L342
998 00025642 # asm("brb _mull3_6_lp1");;
999 00025642 11 d4 brb _mull3_6_lp1
1000 00025644 L342:
1001 00025644 # if( sgl_expected != sgl_st_acc ) { /* COMPARE the values */
1002 00025644 1d effffff642 effffff63d cmpl _sgl_expected,_sgl_st_acc
1003 0002564F 21 03 13 00b2 jeql L343
1004 00025654 # errcnt++; /* bump the error count */
1005 00025654 6d effffff632 incl _errcnt
1006 0002565A # if ( prt_error ) {
1007 0002565A 5d effffff62c tstl _prt_error
1008 00025660 31 7e jeql L344
1009 00025662 # print_mull3_error("(Piped Exit) -BAD FINAL ACC");
1010 00025662 .data 1
1011 00000f72 * L345:
1012 00000f72 * 2850697065642045786974292 .ascii "(Piped Exit) -BAD FINAL ACC\0"
02D4241442046494E414C2041
434300
1013 00000f8e * .text
1014 00025662 dd 8f00000f72 pushl $L345
1015 00025668 fe 08 ef000000f3 callf $8,_print_mull3_error
1016 0002566F # writes("initial Acc = ");
1017 0002566F .data 1
1018 00000f8e * L346:
1019 00000f8e * 696E697469616C20416363203 .ascii "initial Acc = \0"
D2000
1020 00000f9d * .text
1021 0002566F dd 8f00000f8e pushl $L346
1022 00025675 fe 08 effffff610 callf $8,_writes
1023 0002567C # write32h( sgl_ld_acc );
1024 0002567C dd effffff60a pushl _sgl_ld_acc
1025 00025682 fe 08 effffff603 callf $8,_write32h
1026 00025689 # writes(", final Acc = ");
1027 00025689 .data 1
1028 00000f9d * L347:
1029 00000f9d * 2C202020202066696E616C204 .ascii ", final Acc = \0"
16363203D2000
1030 00000fb0 * .text
1031 00025689 dd 8f00000f9d pushl $L347
1032 0002568F fe 08 effffff5f6 callf $8,_writes
1033 00025696 # write32h( sgl_st_acc );
1034 00025696 dd effffff5f0 pushl _sgl_st_acc
1035 0002569C fe 08 effffff5e9 callf $8,_write32h
1036 000256A3 # writes("\nFPP operand = ");
1037 000256A3 .data 1
1038 00000fb0 * L348:
1039 00000fb0 * 0A465050206F706572616E642 .ascii "\12FPP operand = \0"
03D2000
1040 00000fc0 * .text
1041 000256A3 dd 8f00000fb0 pushl $L348
1042 000256A9 fe 08 effffff5dc callf $8,_writes
1043 000256B0 # write32h( sgl_value_10 );
1044 000256B0 dd effffff5d6 pushl _sgl_value_10
1045 000256B6 fe 08 effffff5cf callf $8,_write32h
1046 000256BD # writes(", expected Acc = ");
1047 000256BD .data 1
1048 00000fc0 * L349:
1049 00000fc0 * 2C20206578706563746564204 .ascii ", expected Acc = \0"
16363203D2000
1050 00000fd3 * .text
1051 000256BD dd 8f00000fc0 pushl $L349
1052 000256C3 fe 08 effffff5c2 callf $8,_writes
1053 000256CA # write32h( sgl_expected );
1054 000256CA dd effffff5bc pushl _sgl_expected
1055 000256D0 fe 08 effffff5b5 callf $8,_write32h
1056 000256D7 # writec('\n');
1057 000256D7 dd 0a pushl $10
1058 000256D9 fe 08 effffff5ac callf $8,_writec
1059 000256E0 # }
1060 000256E0 # if ( halt_flg ) /* halt on error? */
1061 000256E0 L344:
1062 000256E0 5d effffff5a6 tstl _halt_flg
1063 000256E6 31 09 jeql L350
1064 000256E8 # mull3_halt( 5 );
1065 000256E8 dd 05 pushl $5
1066 000256EA fe 08 ef00000177 callf $8,_mull3_halt
1067 000256F1 # if ( loop_on_err ) {
1068 000256F1 L350:
1069 000256F1 5d effffff595 tstl _loop_on_err
1070 000256F7 31 0d jeql L351
1071 000256F9 # force_loop = TRUE; /* set the force loop flag */
1072 000256F9 0d 01 effffff58c movl $1,_force_loop
1073 00025700 # asm("jmp _mull3_6_lp1"); /* and loop */
1074 00025700 71 efffffff12 jmp _mull3_6_lp1
1075 00025706 # } /* end of loop-on-error */
1076 00025706 # } /* end of acc corr error */
1077 00025706 L351:
1078 00025706 # if( sgl_value_4 != sgl_value_3 ) /* COMPARE the values */
1079 00025706 L343:
1080 00025706 1d effffff580 effffff57b cmpl _sgl_value_4,_sgl_value_3
1081 00025711 31 41 jeql L352
1082 00025713 # {
1083 00025713 # errcnt++; /* bump the error count */
1084 00025713 6d effffff573 incl _errcnt
1085 00025719 # if ( prt_error ) {
1086 00025719 5d effffff56d tstl _prt_error
1087 0002571F 31 0d jeql L353
1088 00025721 # print_mull3_error("(Piped Exit) -BAD MULTIPLY RESULT");
1089 00025721 .data 1
1090 00000fd3 * L354:
1091 00000fd3 * 2850697065642045786974292 .ascii "(Piped Exit) -BAD MULTIPLY RESULT\0"
02D424144204D554C5449504C
5920524553554C5400
1092 00000ff5 * .text
1093 00025721 dd 8f00000fd3 pushl $L354
1094 00025727 fe 08 ef00000034 callf $8,_print_mull3_error
1095 0002572E # }
1096 0002572E # if ( halt_flg ) /* halt on error? */
1097 0002572E L353:
1098 0002572E 5d effffff558 tstl _halt_flg
1099 00025734 31 09 jeql L355
1100 00025736 # mull3_halt( 1 );
1101 00025736 dd 01 pushl $1
1102 00025738 fe 08 ef00000129 callf $8,_mull3_halt
1103 0002573F # if ( loop_on_err ) {
1104 0002573F L355:
1105 0002573F 5d effffff547 tstl _loop_on_err
1106 00025745 31 0d jeql L356
1107 00025747 # force_loop = TRUE; /* set the force loop flag */
1108 00025747 0d 01 effffff53e movl $1,_force_loop
1109 0002574E # asm("jmp _mull3_6_lp1"); /* and loop */
1110 0002574E 71 effffffec4 jmp _mull3_6_lp1
1111 00025754 # } /* end of loop-on-error */
1112 00025754 # } /* end of multiply error */
1113 00025754 L356:
1114 00025754 # }
1115 00025754 L352:
1116 00025754 L339:
1117 00025754 6d effffff532 incl _index
1118 0002575A 13 fe51 jbr L341
1119 0002575D L340:
1120 0002575D # } /* end of subtest 6 */
1121 0002575D 40 ret#2
1122 0002575E .set L335,0x0
1123 0002575E L337:
1124 0002575E 13 fe3a jbr L338
1125 00025761 .data
1126 00000d38 * .text
1127 00025761 00 .align 1
1128 00025762 .globl _print_mull3_error
1129 00025762 _print_mull3_error:
1130 00025762 0000 .word L357
1131 00025764 #
1132 00025764 #
1133 00025764 #
1134 00025764 # /*****************************************************************************
1135 00025764 # *
1136 00025764 # * Print an error message of the form:
1137 00025764 # *
1138 00025764 # * cycle: xx MULL3 test xx, subtest xx <"your message here">
1139 00025764 # * operand 1 = xxxxxxxx, result = xxxxxxxx, data index = xx
1140 00025764 # * operand 2 = xxxxxxxx, expected = xxxxxxxx
1141 00025764 # *
1142 00025764 # *****************************************************************************/
1143 00025764 # print_mull3_error(msg)
1144 00025764 # char *msg; /* addressing mode msg */
1145 00025764 # {
1146 00025764 13 00fe jbr L359
1147 00025767 L360:
1148 00025767 # writes(" \n"); /* start a new print line */
1149 00025767 .data 1
1150 00000ff5 * L361:
1151 00000ff5 * 200A00 .ascii " \12\0"
1152 00000ff8 * .text
1153 00025767 dd 8f00000ff5 pushl $L361
1154 0002576D fe 08 effffff518 callf $8,_writes
1155 00025774 # writes("cycle: ");
1156 00025774 .data 1
1157 00000ff8 * L362:
1158 00000ff8 * 6379636C653A2000 .ascii "cycle: \0"
1159 00001000 * .text
1160 00025774 dd 8f00000ff8 pushl $L362
1161 0002577A fe 08 effffff50b callf $8,_writes
1162 00025781 # writed( cycle );
1163 00025781 dd effffff505 pushl _cycle
1164 00025787 fe 08 effffff4fe callf $8,_writed
1165 0002578E # writes(" MULL3 test ");
1166 0002578E .data 1
1167 00001000 * L364:
1168 00001000 * 20204D554C4C3320746573742 .ascii " MULL3 test \0"
000
1169 0000100e * .text
1170 0002578E dd 8f00001000 pushl $L364
1171 00025794 fe 08 effffff4f1 callf $8,_writes
1172 0002579B # writed( test_no );
1173 0002579B dd effffff4eb pushl _test_no
1174 000257A1 fe 08 effffff4e4 callf $8,_writed
1175 000257A8 # writes(", subtest ");
1176 000257A8 .data 1
1177 0000100e * L365:
1178 0000100e * 2C20737562746573742000 .ascii ", subtest \0"
1179 00001019 * .text
1180 000257A8 dd 8f0000100e pushl $L365
1181 000257AE fe 08 effffff4d7 callf $8,_writes
1182 000257B5 # writed( subtest );
1183 000257B5 dd effffff4d1 pushl _subtest
1184 000257BB fe 08 effffff4ca callf $8,_writed
1185 000257C2 # writes(" ");
1186 000257C2 .data 1
1187 00001019 * L366:
1188 00001019 * 202000 .ascii " \0"
1189 0000101c * .text
1190 000257C2 dd 8f00001019 pushl $L366
1191 000257C8 fe 08 effffff4bd callf $8,_writes
1192 000257CF # writes( msg );
1193 000257CF dd ad04 pushl 4(fp)
1194 000257D2 fe 08 effffff4b3 callf $8,_writes
1195 000257D9 # writes("\n operand 1 = ");
1196 000257D9 .data 1
1197 0000101c * L367:
1198 0000101c * 0A20206F706572616E6420312 .ascii "\12 operand 1 = \0"
03D2000
1199 0000102c * .text
1200 000257D9 dd 8f0000101c pushl $L367
1201 000257DF fe 08 effffff4a6 callf $8,_writes
1202 000257E6 # write32h( sgl_value_1 );
1203 000257E6 dd effffff4a0 pushl _sgl_value_1
1204 000257EC fe 08 effffff499 callf $8,_write32h
1205 000257F3 # writes(", result = ");
1206 000257F3 .data 1
1207 0000102c * L368:
1208 0000102c * 2C20202020202020207265737 .ascii ", result = \0"
56C74203D2000
1209 0000103f * .text
1210 000257F3 dd 8f0000102c pushl $L368
1211 000257F9 fe 08 effffff48c callf $8,_writes
1212 00025800 # write32h( sgl_value_3 );
1213 00025800 dd effffff486 pushl _sgl_value_3
1214 00025806 fe 08 effffff47f callf $8,_write32h
1215 0002580D # writes(", data index = ");
1216 0002580D .data 1
1217 0000103f * L369:
1218 0000103f * 2C2020206461746120696E646 .ascii ", data index = \0"
578203D2000
1219 00001051 * .text
1220 0002580D dd 8f0000103f pushl $L369
1221 00025813 fe 08 effffff472 callf $8,_writes
1222 0002581A # writed( index );
1223 0002581A dd effffff46c pushl _index
1224 00025820 fe 08 effffff465 callf $8,_writed
1225 00025827 # writes("\n operand 2 = ");
1226 00025827 .data 1
1227 00001051 * L370:
1228 00001051 * 0A20206F706572616E6420322 .ascii "\12 operand 2 = \0"
03D2000
1229 00001061 * .text
1230 00025827 dd 8f00001051 pushl $L370
1231 0002582D fe 08 effffff458 callf $8,_writes
1232 00025834 # write32h( sgl_value_2 );
1233 00025834 dd effffff452 pushl _sgl_value_2
1234 0002583A fe 08 effffff44b callf $8,_write32h
1235 00025841 # writes(", expected = ");
1236 00025841 .data 1
1237 00001061 * L371:
1238 00001061 * 2C20202020202065787065637 .ascii ", expected = \0"
46564203D2000
1239 00001074 * .text
1240 00025841 dd 8f00001061 pushl $L371
1241 00025847 fe 08 effffff43e callf $8,_writes
1242 0002584E # write32h( sgl_value_4 );
1243 0002584E dd effffff438 pushl _sgl_value_4
1244 00025854 fe 08 effffff431 callf $8,_write32h
1245 0002585B # writec('\n');
1246 0002585B dd 0a pushl $10
1247 0002585D fe 08 effffff428 callf $8,_writec
1248 00025864 # }
1249 00025864 40 ret#2
1250 00025865 .set L357,0x0
1251 00025865 L359:
1252 00025865 13 feff jbr L360
1253 00025868 .data
1254 00000d38 * .text
1255 00025868 .align 1
1256 00025868 .globl _mull3_halt
1257 00025868 _mull3_halt:
1258 00025868 0000 .word L372
1259 0002586A #
1260 0002586A #
1261 0002586A #
1262 0002586A # /***************************************************************************
1263 0002586A # *
1264 0002586A # * HALT ON AN ERROR
1265 0002586A # *
1266 0002586A # ***************************************************************************/
1267 0002586A # mull3_halt( code )
1268 0002586A # int code; /* error code to use */
1269 0002586A # {
1270 0002586A 13 0152 jbr L374
1271 0002586D L375:
1272 0002586D # sgl_dummy1 = code; /* save the error code */
1273 0002586D 0d ad04 effffff417 movl 4(fp),_sgl_dummy1
1274 00025875 # asm("movl _test_no,r0"); /* r0 = test number */
1275 00025875 0d effffff411 50 movl _test_no,r0
1276 0002587C # asm("movl _subtest,r1"); /* r1 = subtest number */
1277 0002587C 0d effffff40a 51 movl _subtest,r1
1278 00025883 # asm("movl _sgl_dummy1,r2"); /* r2 = error code */
1279 00025883 0d effffff403 52 movl _sgl_dummy1,r2
1280 0002588A # asm("movl _cycle,r3"); /* r3 = cycle count */
1281 0002588A 0d effffff3fc 53 movl _cycle,r3
1282 00025891 # asm("movl _sgl_value_1,r4"); /* r4 = operand 1 */
1283 00025891 0d effffff3f5 54 movl _sgl_value_1,r4
1284 00025898 # asm("movl _sgl_value_2,r5"); /* r5 = operand 2 */
1285 00025898 0d effffff3ee 55 movl _sgl_value_2,r5
1286 0002589F # asm("movl _sgl_value_3,r6"); /* r6 = MULL3's result */
1287 0002589F 0d effffff3e7 56 movl _sgl_value_3,r6
1288 000258A6 # if( code == 1 ) {
1289 000258A6 1d ad04 01 cmpl 4(fp),$1
1290 000258AA 21 11 jneq L376
1291 000258AC # asm("movl _sgl_value_4,r7"); /* r7 = expected result */
1292 000258AC 0d effffff3da 57 movl _sgl_value_4,r7
1293 000258B3 # asm("movl _index,r8");; /* r8 = data index */
1294 000258B3 0d effffff3d3 58 movl _index,r8
1295 000258BA # }
1296 000258BA # else if( code == 2 ) { /* corrupted register */
1297 000258BA 13 0100 jbr L377
1298 000258BD L376:
1299 000258BD 1d ad04 02 cmpl 4(fp),$2
1300 000258C1 21 3e jneq L378
1301 000258C3 # sgl_dummy1 = store_regs[index2]; /* get the actual reg data */
1302 000258C3 0d effffff3c3 50 movl _index2,r0
1303 000258CA 0d 40effffff3bb movl _store_regs[r0],_sgl_dummy1
effffff3b6
1304 000258D6 # sgl_dummy2 = load_regs[index2]; /* get the data expected */
1305 000258D6 0d effffff3b0 50 movl _index2,r0
1306 000258DD 0d 40effffff3a8 movl _load_regs[r0],_sgl_dummy2
effffff3a3
1307 000258E9 # asm("movl _index2,r7"); /* r7 = register number */
1308 000258E9 0d effffff39d 57 movl _index2,r7
1309 000258F0 # asm("movl _sgl_dummy1,r8"); /* r8 = final reg value */
1310 000258F0 0d effffff396 58 movl _sgl_dummy1,r8
1311 000258F7 # asm("movl _sgl_dummy2,r9"); /* r9 = expected value */
1312 000258F7 0d effffff38f 59 movl _sgl_dummy2,r9
1313 000258FE # }
1314 000258FE # else if( code == 3 ) { /* corrupted PSL */
1315 000258FE 13 00bc jbr L379
1316 00025901 L378:
1317 00025901 1d ad04 03 cmpl 4(fp),$3
1318 00025905 21 18 jneq L380
1319 00025907 # asm("movl _init_psl,r7"); /* r7 = initial PSL */
1320 00025907 0d effffff37f 57 movl _init_psl,r7
1321 0002590E # asm("movl _psl_val,r8"); /* r8 = final PSL */
1322 0002590E 0d effffff378 58 movl _psl_val,r8
1323 00025915 # asm("movl _exp_psl,r9"); /* r9 = expected PSL */
1324 00025915 0d effffff371 59 movl _exp_psl,r9
1325 0002591C # }
1326 0002591C # else if( code == 4 ) { /* corrupted Acc */
1327 0002591C 13 009e jbr L381
1328 0002591F L380:
1329 0002591F 1d ad04 04 cmpl 4(fp),$4
1330 00025923 21 6f jneq L382
1331 00025925 # if( subtest == 1 ) { /* single precision */
1332 00025925 1d effffff361 01 cmpl _subtest,$1
1333 0002592C 21 33 jneq L383
1334 0002592E # dbl_ld_acc.m = sgl_ld_acc;
1335 0002592E 0d effffff358 effffff353 movl _sgl_ld_acc,_dbl_ld_acc
1336 00025939 # dbl_ld_acc.l = 0;
1337 00025939 4d effffff351 clrl _dbl_ld_acc+4
1338 0002593F # dbl_st_acc.m = sgl_st_acc;
1339 0002593F 0d effffff347 effffff342 movl _sgl_st_acc,_dbl_st_acc
1340 0002594A # dbl_st_acc.l = 0;
1341 0002594A 4d effffff340 clrl _dbl_st_acc+4
1342 00025950 # dbl_expected.m = sgl_expected;
1343 00025950 0d effffff336 effffff331 movl _sgl_expected,_dbl_expected
1344 0002595B # dbl_expected.l = 0;
1345 0002595B 4d effffff32f clrl _dbl_expected+4
1346 00025961 # };
1347 00025961 L383:
1348 00025961 # asm("movl _index,r7"); /* r7 = data index */
1349 00025961 0d effffff325 57 movl _index,r7
1350 00025968 # asm("movl _dbl_ld_acc,r8"); /* r8 = MS initial Acc. */
1351 00025968 0d effffff31e 58 movl _dbl_ld_acc,r8
1352 0002596F # asm("movl _dbl_ld_acc+4,r9"); /* r9 = LS initial Acc. */
1353 0002596F 0d effffff31b 59 movl _dbl_ld_acc+4,r9
1354 00025976 # asm("movl _dbl_st_acc,r10"); /* r10 = MS final Acc. */
1355 00025976 0d effffff310 5a movl _dbl_st_acc,r10
1356 0002597D # asm("movl _dbl_st_acc+4,r11"); /* r11 = LS final Acc. */
1357 0002597D 0d effffff30d 5b movl _dbl_st_acc+4,r11
1358 00025984 # asm("movl _dbl_expected,r12"); /* r12 = MS expected Acc. */
1359 00025984 0d effffff302 5c movl _dbl_expected,r12
1360 0002598B # asm("movl _dbl_expected+4,r13"); /* r13 = LS expected Acc. */
1361 0002598B 0d effffff2ff 5d movl _dbl_expected+4,r13
1362 00025992 # }
1363 00025992 # else if( code == 5 ) { /* bad final Acc */
1364 00025992 11 29 jbr L384
1365 00025994 L382:
1366 00025994 1d ad04 05 cmpl 4(fp),$5
1367 00025998 21 23 jneq L385
1368 0002599A # asm("movl _index,r7"); /* r7 = data index */
1369 0002599A 0d effffff2ec 57 movl _index,r7
1370 000259A1 # asm("movl _sgl_ld_acc,r8"); /* r8 = initial Acc. */
1371 000259A1 0d effffff2e5 58 movl _sgl_ld_acc,r8
1372 000259A8 # asm("movl _sgl_value_10,r9"); /* r9 = fpp operand */
1373 000259A8 0d effffff2de 59 movl _sgl_value_10,r9
1374 000259AF # asm("movl _sgl_st_acc,r10"); /* r10 = final Acc. */
1375 000259AF 0d effffff2d7 5a movl _sgl_st_acc,r10
1376 000259B6 # asm("movl _sgl_expected,r11"); /* r11 = expected Acc. */
1377 000259B6 0d effffff2d0 5b movl _sgl_expected,r11
1378 000259BD # };
1379 000259BD L385:
1380 000259BD L384:
1381 000259BD L381:
1382 000259BD L379:
1383 000259BD L377:
1384 000259BD # asm("halt"); /* HALT ... */
1385 000259BD 00 halt
1386 000259BE # }
1387 000259BE 40 ret#2
1388 000259BF .set L372,0x0
1389 000259BF L374:
1390 000259BF 13 feab jbr L375
1391 000259C2 .data
1391 0004A64E .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.