|
|
Power 6/32 Unix version 1.21
1 00000000 LL0:
2 00000000 .data
3 00000d78 * .text
4 00000000 .align 1
5 00000000 .globl _pipe_4
6 00000000 _pipe_4:
7 00028630 0000 .word L215
8 00028632 # #include "fpp_defs.h"
9 00028632 #
10 00028632 #
11 00028632 # /*****************************************************************************
12 00028632 # *
13 00028632 # * PIPELINE TEST #4 MONITOR
14 00028632 # *
15 00028632 # * This test will do:
16 00028632 # *
17 00028632 # * LDF(x) STF LDF(1) MULF(1) MULF(x) STF
18 00028632 # *
19 00028632 # * where x is the fmacro1 LDF data. This test verifies the store after the
20 00028632 # * LDF and the LDF after the store. It will also verify all of the MULF's
21 00028632 # * B entry points.
22 00028632 # *****************************************************************************/
23 00028632 # pipe_4()
24 00028632 # {
25 00028632 13 00a8 jbr L217
26 00028635 L218:
27 00028635 # asm(".globl _pipeline_4_t");
28 00028635 .globl _pipeline_4_t
29 00028635 # asm("_pipeline_4_t:"); /* entry address */
30 00028635 _pipeline_4_t:
31 00028635 # if( (cycle == 1) && (prt_hdrs) ) /* print headers on 1st cycle */
32 00028635 1d effffffff5 01 cmpl _cycle,$1
33 0002863C 21 15 jneq L219
34 0002863E 5d efffffffec tstl _prt_hdrs
35 00028644 31 0d jeql L219
36 00028646 # {
37 00028646 # writes(" PIPE_4 ");
38 00028646 .data 1
39 00000d78 * L221:
40 00000d78 * 20504950455F342000 .ascii " PIPE_4 \0"
41 00000d81 * .text
42 00028646 dd 8f00000d78 pushl $L221
43 0002864C fe 08 efffffffdd callf $8,_writes
44 00028653 # }
45 00028653 # subtest = 1;
46 00028653 L219:
47 00028653 0d 01 efffffffd6 movl $1,_subtest
48 0002865A # pipe4_1(); /* data in REGs, no NOPs */
49 0002865A fe 04 ef0000007f callf $4,_pipe4_1
50 00028661 # subtest++; /* increment subtest num */
51 00028661 6d efffffffc9 incl _subtest
52 00028667 # pipe4_2(); /* data in REGs, 1 NOP */
53 00028667 fe 04 ef00000166 callf $4,_pipe4_2
54 0002866E # subtest++; /* increment subtest num */
55 0002866E 6d efffffffbc incl _subtest
56 00028674 # pipe4_3(); /* data in REGs, 2 NOPs */
57 00028674 fe 04 ef00000251 callf $4,_pipe4_3
58 0002867B # subtest++; /* increment subtest num */
59 0002867B 6d efffffffaf incl _subtest
60 00028681 # pipe4_4(); /* data in REGs, 3 NOPs */
61 00028681 fe 04 ef00000342 callf $4,_pipe4_4
62 00028688 # subtest++; /* increment subtest num */
63 00028688 6d efffffffa2 incl _subtest
64 0002868E # pipe4_5(); /* data in CACHE, no NOPs */
65 0002868E fe 04 ef00000437 callf $4,_pipe4_5
66 00028695 # subtest++; /* increment subtest num */
67 00028695 6d efffffff95 incl _subtest
68 0002869B # pipe4_6(); /* data in CACHE, 1 NOP */
69 0002869B fe 04 ef0000051a callf $4,_pipe4_6
70 000286A2 # subtest++; /* increment subtest num */
71 000286A2 6d efffffff88 incl _subtest
72 000286A8 # pipe4_7(); /* data in CACHE, 2 NOPs */
73 000286A8 fe 04 ef00000601 callf $4,_pipe4_7
74 000286AF # subtest++; /* increment subtest num */
75 000286AF 6d efffffff7b incl _subtest
76 000286B5 # pipe4_8(); /* data in CACHE, 3 NOPs */
77 000286B5 fe 04 ef000006ee callf $4,_pipe4_8
78 000286BC # subtest++; /* increment subtest num */
79 000286BC 6d efffffff6e incl _subtest
80 000286C2 # pipe4_9(); /* data on STACK, no NOPs */
81 000286C2 fe 04 ef000007df callf $4,_pipe4_9
82 000286C9 # subtest++; /* increment subtest num */
83 000286C9 6d efffffff61 incl _subtest
84 000286CF # pipe4_10(); /* data via FP no NOPs */
85 000286CF fe 04 ef00000968 callf $4,_pipe4_10
86 000286D6 # asm("jmp *return"); /* return to the test monitor */
87 000286D6 71 ffffffff54 jmp *return
88 000286DC # }
89 000286DC 40 ret#2
90 000286DD .set L215,0x0
91 000286DD L217:
92 000286DD 13 ff55 jbr L218
93 000286E0 .data
94 00000d78 * .text
95 000286E0 .align 1
96 000286E0 .globl _pipe4_1
97 000286E0 _pipe4_1:
98 000286E0 0000 .word L232
99 000286E2 #
100 000286E2 #
101 000286E2 #
102 000286E2 #
103 000286E2 #
104 000286E2 #
105 000286E2 # /************************************************************************
106 000286E2 # *
107 000286E2 # * SUBTEST 1
108 000286E2 # * data in registers, no NO-OPs
109 000286E2 # *
110 000286E2 # ************************************************************************/
111 000286E2 # pipe4_1()
112 000286E2 # {
113 000286E2 13 00eb jbr L234
114 000286E5 L235:
115 000286E5 # force_loop = FALSE; /* clear force_loop flag */
116 000286E5 4d efffffff45 clrl _force_loop
117 000286EB # index = 0;
118 000286EB 4d efffffff3f clrl _index
119 000286F1 # do
120 000286F1 L238:
121 000286F1 # {
122 000286F1 # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
123 000286F1 0d efffffff39 50 movl _index,r0
124 000286F8 48 03 50 50 shll $3,r0,r0
125 000286FC 0d e000000000 efffffff29 movl _ldf_1_data(r0),_sgl_value_1
126 00028707 # sgl_expected = ldf_1_data[index].exp; /* get expected results */
127 00028707 0d efffffff23 50 movl _index,r0
128 0002870E 48 03 50 50 shll $3,r0,r0
129 00028712 0d e000000004 efffffff13 movl _ldf_1_data+4(r0),_sgl_expected
130 0002871D # sgl_value_2 = 0x40800000; /* floating '1' */
131 0002871D 0d 8f40800000 efffffff08 movl $1082130432,_sgl_value_2
132 00028728 # /*
133 00028728 # * If LOOP ON ERROR is set, this is the loop for this subtest.
134 00028728 # * The force loop flag is set after the first error.
135 00028728 # */
136 00028728 # asm("_pipe4_1_lp1:");
137 00028728 _pipe4_1_lp1:
138 00028728 # asm("movl _sgl_value_1,r4"); /* move the data to r4 */
139 00028728 0d efffffff02 54 movl _sgl_value_1,r4
140 0002872F # asm("movl _sgl_value_2,r5"); /* move data to r5 */
141 0002872F 0d effffffefb 55 movl _sgl_value_2,r5
142 00028736 # asm("ldf r4"); /* load the operand */
143 00028736 06 54 ldf r4
144 00028738 # asm("stf r7"); /* store the result */
145 00028738 26 57 stf r7
146 0002873A # asm("ldf r5"); /* load a floating '1' */
147 0002873A 06 55 ldf r5
148 0002873C # asm("mulf r5"); /* multipy by a '1' */
149 0002873C e6 55 mulf r5
150 0002873E # asm("mulf r4"); /* multipy by the operand */
151 0002873E e6 54 mulf r4
152 00028740 # asm("stf r8"); /* store the result */
153 00028740 26 58 stf r8
154 00028742 # if( force_loop );
155 00028742 5d effffffee8 tstl _force_loop
156 00028748 31 00 jeql L239
157 0002874A # asm("brb _pipe4_1_lp1");; /* loop on the error */
158 0002874A L239:
159 0002874A 11 dc brb _pipe4_1_lp1
160 0002874C # /*
161 0002874C # * verify the results
162 0002874C # */
163 0002874C # asm("movl r7,_sgl_st_acc"); /* get the 1st store value */
164 0002874C 0d 57 effffffedd movl r7,_sgl_st_acc
165 00028753 # asm("movl r8,_sgl_value_6"); /* get the 2nd store value */
166 00028753 0d 58 effffffed6 movl r8,_sgl_value_6
167 0002875A # if( (sgl_st_acc != sgl_expected) || /* COMPARE the values */
168 0002875A # (sgl_value_6 != sgl_expected) )
169 0002875A 1d effffffed0 effffffecb cmpl _sgl_st_acc,_sgl_expected
170 00028765 21 0d jneq L9999
171 00028767 1d effffffec3 effffffebe cmpl _sgl_value_6,_sgl_expected
172 00028772 31 42 jeql L240
173 00028774 L9999:
174 00028774 # {
175 00028774 # errcnt++; /* bump the error count */
176 00028774 6d effffffeb6 incl _errcnt
177 0002877A # if ( prt_error )
178 0002877A 5d effffffeb0 tstl _prt_error
179 00028780 31 0d jeql L241
180 00028782 # print_pipe4_er("Reg. Data, no NO-OPs");
181 00028782 .data 1
182 00000d81 * L243:
183 00000d81 * 5265672E20446174612C206E6 .ascii "Reg. Data, no NO-OPs\0"
F204E4F2D4F507300
184 00000d96 * .text
185 00028782 dd 8f00000d81 pushl $L243
186 00028788 fe 08 ef00000a7f callf $8,_print_pipe4_er
187 0002878F # if ( halt_flg )
188 0002878F L241:
189 0002878F 5d effffffe9b tstl _halt_flg
190 00028795 31 0d jeql L244
191 00028797 # pipe4_er_hlt( subtest );
192 00028797 dd effffffe93 pushl _subtest
193 0002879D fe 08 ef00000b90 callf $8,_pipe4_er_hlt
194 000287A4 # if ( loop_on_err ) {
195 000287A4 L244:
196 000287A4 5d effffffe86 tstl _loop_on_err
197 000287AA 31 0a jeql L246
198 000287AC # force_loop = TRUE; /* set the force loop flag */
199 000287AC 0d 01 effffffe7d movl $1,_force_loop
200 000287B3 # asm("brw _pipe4_1_lp1"); /* and loop */
201 000287B3 13 ff72 brw _pipe4_1_lp1
202 000287B6 # }
203 000287B6 # } /* end of compare error */
204 000287B6 L246:
205 000287B6 # } while( index++ < max_ldf_1_index );
206 000287B6 L240:
207 000287B6 L237:
208 000287B6 0d effffffe74 50 movl _index,r0
209 000287BD 6d effffffe6d incl _index
210 000287C3 1d 50 effffffe66 cmpl r0,_max_ldf_1_index
211 000287CA 81 03 13 ff22 jlss L238
212 000287CF L236:
213 000287CF # } /* end of subtest 1 */
214 000287CF 40 ret#2
215 000287D0 .set L232,0x0
216 000287D0 L234:
217 000287D0 13 ff12 jbr L235
218 000287D3 .data
219 00000d78 * .text
220 000287D3 00 .align 1
221 000287D4 .globl _pipe4_2
222 000287D4 _pipe4_2:
223 000287D4 0000 .word L247
224 000287D6 #
225 000287D6 #
226 000287D6 #
227 000287D6 #
228 000287D6 #
229 000287D6 #
230 000287D6 # /************************************************************************
231 000287D6 # *
232 000287D6 # * SUBTEST 2
233 000287D6 # * data in registers, 1 NO-OP
234 000287D6 # *
235 000287D6 # ************************************************************************/
236 000287D6 # pipe4_2()
237 000287D6 # {
238 000287D6 13 00f0 jbr L249
239 000287D9 L250:
240 000287D9 # force_loop = FALSE; /* clear force_loop flag */
241 000287D9 4d effffffe51 clrl _force_loop
242 000287DF # index = 0;
243 000287DF 4d effffffe4b clrl _index
244 000287E5 # do
245 000287E5 L253:
246 000287E5 # {
247 000287E5 # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
248 000287E5 0d effffffe45 50 movl _index,r0
249 000287EC 48 03 50 50 shll $3,r0,r0
250 000287F0 0d e000000000 effffffe35 movl _ldf_1_data(r0),_sgl_value_1
251 000287FB # sgl_expected = ldf_1_data[index].exp; /* get expected results */
252 000287FB 0d effffffe2f 50 movl _index,r0
253 00028802 48 03 50 50 shll $3,r0,r0
254 00028806 0d e000000004 effffffe1f movl _ldf_1_data+4(r0),_sgl_expected
255 00028811 # sgl_value_2 = 0x40800000; /* floating '1' */
256 00028811 0d 8f40800000 effffffe14 movl $1082130432,_sgl_value_2
257 0002881C # /*
258 0002881C # * If LOOP ON ERROR is set, this is the loop for this subtest.
259 0002881C # * The force loop flag is set after the first error.
260 0002881C # */
261 0002881C # asm("_pipe4_2_lp1:");
262 0002881C _pipe4_2_lp1:
263 0002881C # asm("movl _sgl_value_1,r4"); /* move the data to r4 */
264 0002881C 0d effffffe0e 54 movl _sgl_value_1,r4
265 00028823 # asm("movl _sgl_value_2,r5"); /* move data to r5 */
266 00028823 0d effffffe07 55 movl _sgl_value_2,r5
267 0002882A # asm("ldf r4"); /* load the operand */
268 0002882A 06 54 ldf r4
269 0002882C # asm("nop");
270 0002882C 10 nop
271 0002882D # asm("stf r7"); /* store the result */
272 0002882D 26 57 stf r7
273 0002882F # asm("nop");
274 0002882F 10 nop
275 00028830 # asm("ldf r5"); /* load a floating '1' */
276 00028830 06 55 ldf r5
277 00028832 # asm("nop");
278 00028832 10 nop
279 00028833 # asm("mulf r5"); /* multipy by a '1' */
280 00028833 e6 55 mulf r5
281 00028835 # asm("nop");
282 00028835 10 nop
283 00028836 # asm("mulf r4"); /* multipy by the operand */
284 00028836 e6 54 mulf r4
285 00028838 # asm("nop");
286 00028838 10 nop
287 00028839 # asm("stf r8"); /* store the result */
288 00028839 26 58 stf r8
289 0002883B # if( force_loop );
290 0002883B 5d effffffdef tstl _force_loop
291 00028841 31 00 jeql L254
292 00028843 # asm("brb _pipe4_2_lp1");; /* loop on the error */
293 00028843 L254:
294 00028843 11 d7 brb _pipe4_2_lp1
295 00028845 # /*
296 00028845 # * verify the results
297 00028845 # */
298 00028845 # asm("movl r7,_sgl_st_acc"); /* get the 1st store value */
299 00028845 0d 57 effffffde4 movl r7,_sgl_st_acc
300 0002884C # asm("movl r8,_sgl_value_6"); /* get the 2nd store value */
301 0002884C 0d 58 effffffddd movl r8,_sgl_value_6
302 00028853 # if( (sgl_st_acc != sgl_expected) || /* COMPARE the values */
303 00028853 # (sgl_value_6 != sgl_expected) )
304 00028853 1d effffffdd7 effffffdd2 cmpl _sgl_st_acc,_sgl_expected
305 0002885E 21 0d jneq L9998
306 00028860 1d effffffdca effffffdc5 cmpl _sgl_value_6,_sgl_expected
307 0002886B 31 42 jeql L255
308 0002886D L9998:
309 0002886D # {
310 0002886D # errcnt++; /* bump the error count */
311 0002886D 6d effffffdbd incl _errcnt
312 00028873 # if ( prt_error )
313 00028873 5d effffffdb7 tstl _prt_error
314 00028879 31 0d jeql L256
315 0002887B # print_pipe4_er("Reg. Data, 1 NO-OP");
316 0002887B .data 1
317 00000d96 * L257:
318 00000d96 * 5265672E20446174612C20312 .ascii "Reg. Data, 1 NO-OP\0"
04E4F2D4F5000
319 00000da9 * .text
320 0002887B dd 8f00000d96 pushl $L257
321 00028881 fe 08 ef00000986 callf $8,_print_pipe4_er
322 00028888 # if ( halt_flg )
323 00028888 L256:
324 00028888 5d effffffda2 tstl _halt_flg
325 0002888E 31 0d jeql L258
326 00028890 # pipe4_er_hlt( subtest );
327 00028890 dd effffffd9a pushl _subtest
328 00028896 fe 08 ef00000a97 callf $8,_pipe4_er_hlt
329 0002889D # if ( loop_on_err ) {
330 0002889D L258:
331 0002889D 5d effffffd8d tstl _loop_on_err
332 000288A3 31 0a jeql L259
333 000288A5 # force_loop = TRUE; /* set the force loop flag */
334 000288A5 0d 01 effffffd84 movl $1,_force_loop
335 000288AC # asm("brw _pipe4_2_lp1"); /* and loop */
336 000288AC 13 ff6d brw _pipe4_2_lp1
337 000288AF # }
338 000288AF # } /* end of compare error */
339 000288AF L259:
340 000288AF # } while( index++ < max_ldf_1_index );
341 000288AF L255:
342 000288AF L252:
343 000288AF 0d effffffd7b 50 movl _index,r0
344 000288B6 6d effffffd74 incl _index
345 000288BC 1d 50 effffffd6d cmpl r0,_max_ldf_1_index
346 000288C3 81 03 13 ff1d jlss L253
347 000288C8 L251:
348 000288C8 # } /* end of subtest 2 */
349 000288C8 40 ret#2
350 000288C9 .set L247,0x0
351 000288C9 L249:
352 000288C9 13 ff0d jbr L250
353 000288CC .data
354 00000d78 * .text
355 000288CC .align 1
356 000288CC .globl _pipe4_3
357 000288CC _pipe4_3:
358 000288CC 0000 .word L260
359 000288CE #
360 000288CE #
361 000288CE #
362 000288CE #
363 000288CE #
364 000288CE #
365 000288CE # /************************************************************************
366 000288CE # *
367 000288CE # * SUBTEST 3
368 000288CE # * data in registers, 2 NO-OPs
369 000288CE # *
370 000288CE # ************************************************************************/
371 000288CE # pipe4_3()
372 000288CE # {
373 000288CE 13 00f5 jbr L262
374 000288D1 L263:
375 000288D1 # force_loop = FALSE; /* clear force_loop flag */
376 000288D1 4d effffffd59 clrl _force_loop
377 000288D7 # index = 0;
378 000288D7 4d effffffd53 clrl _index
379 000288DD # do
380 000288DD L266:
381 000288DD # {
382 000288DD # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
383 000288DD 0d effffffd4d 50 movl _index,r0
384 000288E4 48 03 50 50 shll $3,r0,r0
385 000288E8 0d e000000000 effffffd3d movl _ldf_1_data(r0),_sgl_value_1
386 000288F3 # sgl_expected = ldf_1_data[index].exp; /* get expected results */
387 000288F3 0d effffffd37 50 movl _index,r0
388 000288FA 48 03 50 50 shll $3,r0,r0
389 000288FE 0d e000000004 effffffd27 movl _ldf_1_data+4(r0),_sgl_expected
390 00028909 # sgl_value_2 = 0x40800000; /* floating '1' */
391 00028909 0d 8f40800000 effffffd1c movl $1082130432,_sgl_value_2
392 00028914 # /*
393 00028914 # * If LOOP ON ERROR is set, this is the loop for this subtest.
394 00028914 # * The force loop flag is set after the first error.
395 00028914 # */
396 00028914 # asm("_pipe4_3_lp1:");
397 00028914 _pipe4_3_lp1:
398 00028914 # asm("movl _sgl_value_1,r4"); /* move the data to r4 */
399 00028914 0d effffffd16 54 movl _sgl_value_1,r4
400 0002891B # asm("movl _sgl_value_2,r5"); /* move data to r5 */
401 0002891B 0d effffffd0f 55 movl _sgl_value_2,r5
402 00028922 # asm("ldf r4"); /* load the operand */
403 00028922 06 54 ldf r4
404 00028924 # asm("nop");
405 00028924 10 nop
406 00028925 # asm("nop");
407 00028925 10 nop
408 00028926 # asm("stf r7"); /* store the result */
409 00028926 26 57 stf r7
410 00028928 # asm("nop");
411 00028928 10 nop
412 00028929 # asm("nop");
413 00028929 10 nop
414 0002892A # asm("ldf r5"); /* load a floating '1' */
415 0002892A 06 55 ldf r5
416 0002892C # asm("nop");
417 0002892C 10 nop
418 0002892D # asm("nop");
419 0002892D 10 nop
420 0002892E # asm("mulf r5"); /* multipy by a '1' */
421 0002892E e6 55 mulf r5
422 00028930 # asm("nop");
423 00028930 10 nop
424 00028931 # asm("nop");
425 00028931 10 nop
426 00028932 # asm("mulf r4"); /* multipy by the operand */
427 00028932 e6 54 mulf r4
428 00028934 # asm("nop");
429 00028934 10 nop
430 00028935 # asm("nop");
431 00028935 10 nop
432 00028936 # asm("stf r8"); /* store the result */
433 00028936 26 58 stf r8
434 00028938 # if( force_loop );
435 00028938 5d effffffcf2 tstl _force_loop
436 0002893E 31 00 jeql L267
437 00028940 # asm("brb _pipe4_3_lp1");; /* loop on the error */
438 00028940 L267:
439 00028940 11 d2 brb _pipe4_3_lp1
440 00028942 # /*
441 00028942 # * verify the results
442 00028942 # */
443 00028942 # asm("movl r7,_sgl_st_acc"); /* get the 1st store value */
444 00028942 0d 57 effffffce7 movl r7,_sgl_st_acc
445 00028949 # asm("movl r8,_sgl_value_6"); /* get the 2nd store value */
446 00028949 0d 58 effffffce0 movl r8,_sgl_value_6
447 00028950 # if( (sgl_st_acc != sgl_expected) || /* COMPARE the values */
448 00028950 # (sgl_value_6 != sgl_expected) )
449 00028950 1d effffffcda effffffcd5 cmpl _sgl_st_acc,_sgl_expected
450 0002895B 21 0d jneq L9997
451 0002895D 1d effffffccd effffffcc8 cmpl _sgl_value_6,_sgl_expected
452 00028968 31 42 jeql L268
453 0002896A L9997:
454 0002896A # {
455 0002896A # errcnt++; /* bump the error count */
456 0002896A 6d effffffcc0 incl _errcnt
457 00028970 # if ( prt_error )
458 00028970 5d effffffcba tstl _prt_error
459 00028976 31 0d jeql L269
460 00028978 # print_pipe4_er("Reg. Data, 2 NO-OPs");
461 00028978 .data 1
462 00000da9 * L270:
463 00000da9 * 5265672E20446174612C20322 .ascii "Reg. Data, 2 NO-OPs\0"
04E4F2D4F507300
464 00000dbd * .text
465 00028978 dd 8f00000da9 pushl $L270
466 0002897E fe 08 ef00000889 callf $8,_print_pipe4_er
467 00028985 # if ( halt_flg )
468 00028985 L269:
469 00028985 5d effffffca5 tstl _halt_flg
470 0002898B 31 0d jeql L271
471 0002898D # pipe4_er_hlt( subtest );
472 0002898D dd effffffc9d pushl _subtest
473 00028993 fe 08 ef0000099a callf $8,_pipe4_er_hlt
474 0002899A # if ( loop_on_err ) {
475 0002899A L271:
476 0002899A 5d effffffc90 tstl _loop_on_err
477 000289A0 31 0a jeql L272
478 000289A2 # force_loop = TRUE; /* set the force loop flag */
479 000289A2 0d 01 effffffc87 movl $1,_force_loop
480 000289A9 # asm("brw _pipe4_3_lp1"); /* and loop */
481 000289A9 13 ff68 brw _pipe4_3_lp1
482 000289AC # }
483 000289AC # } /* end of compare error */
484 000289AC L272:
485 000289AC # } while( index++ < max_ldf_1_index );
486 000289AC L268:
487 000289AC L265:
488 000289AC 0d effffffc7e 50 movl _index,r0
489 000289B3 6d effffffc77 incl _index
490 000289B9 1d 50 effffffc70 cmpl r0,_max_ldf_1_index
491 000289C0 81 03 13 ff18 jlss L266
492 000289C5 L264:
493 000289C5 # } /* end of subtest 3 */
494 000289C5 40 ret#2
495 000289C6 .set L260,0x0
496 000289C6 L262:
497 000289C6 13 ff08 jbr L263
498 000289C9 .data
499 00000d78 * .text
500 000289C9 00 .align 1
501 000289CA .globl _pipe4_4
502 000289CA _pipe4_4:
503 000289CA 0000 .word L273
504 000289CC #
505 000289CC #
506 000289CC #
507 000289CC #
508 000289CC #
509 000289CC #
510 000289CC # /************************************************************************
511 000289CC # *
512 000289CC # * SUBTEST 4
513 000289CC # * data in registers, 3 NO-OPs
514 000289CC # *
515 000289CC # ************************************************************************/
516 000289CC # pipe4_4()
517 000289CC # {
518 000289CC 13 00fa jbr L275
519 000289CF L276:
520 000289CF # force_loop = FALSE; /* clear force_loop flag */
521 000289CF 4d effffffc5b clrl _force_loop
522 000289D5 # index = 0;
523 000289D5 4d effffffc55 clrl _index
524 000289DB # do
525 000289DB L279:
526 000289DB # {
527 000289DB # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
528 000289DB 0d effffffc4f 50 movl _index,r0
529 000289E2 48 03 50 50 shll $3,r0,r0
530 000289E6 0d e000000000 effffffc3f movl _ldf_1_data(r0),_sgl_value_1
531 000289F1 # sgl_expected = ldf_1_data[index].exp; /* get expected results */
532 000289F1 0d effffffc39 50 movl _index,r0
533 000289F8 48 03 50 50 shll $3,r0,r0
534 000289FC 0d e000000004 effffffc29 movl _ldf_1_data+4(r0),_sgl_expected
535 00028A07 # sgl_value_2 = 0x40800000; /* floating '1' */
536 00028A07 0d 8f40800000 effffffc1e movl $1082130432,_sgl_value_2
537 00028A12 # /*
538 00028A12 # * If LOOP ON ERROR is set, this is the loop for this subtest.
539 00028A12 # * The force loop flag is set after the first error.
540 00028A12 # */
541 00028A12 # asm("_pipe4_4_lp1:");
542 00028A12 _pipe4_4_lp1:
543 00028A12 # asm("movl _sgl_value_1,r4"); /* move the data to r4 */
544 00028A12 0d effffffc18 54 movl _sgl_value_1,r4
545 00028A19 # asm("movl _sgl_value_2,r5"); /* move data to r5 */
546 00028A19 0d effffffc11 55 movl _sgl_value_2,r5
547 00028A20 # asm("ldf r4"); /* load the operand */
548 00028A20 06 54 ldf r4
549 00028A22 # asm("nop");
550 00028A22 10 nop
551 00028A23 # asm("nop");
552 00028A23 10 nop
553 00028A24 # asm("nop");
554 00028A24 10 nop
555 00028A25 # asm("stf r7"); /* store the result */
556 00028A25 26 57 stf r7
557 00028A27 # asm("nop");
558 00028A27 10 nop
559 00028A28 # asm("nop");
560 00028A28 10 nop
561 00028A29 # asm("nop");
562 00028A29 10 nop
563 00028A2A # asm("ldf r5"); /* load a floating '1' */
564 00028A2A 06 55 ldf r5
565 00028A2C # asm("nop");
566 00028A2C 10 nop
567 00028A2D # asm("nop");
568 00028A2D 10 nop
569 00028A2E # asm("nop");
570 00028A2E 10 nop
571 00028A2F # asm("mulf r5"); /* multipy by a '1' */
572 00028A2F e6 55 mulf r5
573 00028A31 # asm("nop");
574 00028A31 10 nop
575 00028A32 # asm("nop");
576 00028A32 10 nop
577 00028A33 # asm("nop");
578 00028A33 10 nop
579 00028A34 # asm("mulf r4"); /* multipy by the operand */
580 00028A34 e6 54 mulf r4
581 00028A36 # asm("nop");
582 00028A36 10 nop
583 00028A37 # asm("nop");
584 00028A37 10 nop
585 00028A38 # asm("nop");
586 00028A38 10 nop
587 00028A39 # asm("stf r8"); /* store the result */
588 00028A39 26 58 stf r8
589 00028A3B # if( force_loop );
590 00028A3B 5d effffffbef tstl _force_loop
591 00028A41 31 00 jeql L280
592 00028A43 # asm("brb _pipe4_4_lp1");; /* loop on the error */
593 00028A43 L280:
594 00028A43 11 cd brb _pipe4_4_lp1
595 00028A45 # /*
596 00028A45 # * verify the results
597 00028A45 # */
598 00028A45 # asm("movl r7,_sgl_st_acc"); /* get the 1st store value */
599 00028A45 0d 57 effffffbe4 movl r7,_sgl_st_acc
600 00028A4C # asm("movl r8,_sgl_value_6"); /* get the 2nd store value */
601 00028A4C 0d 58 effffffbdd movl r8,_sgl_value_6
602 00028A53 # if( (sgl_st_acc != sgl_expected) || /* COMPARE the values */
603 00028A53 # (sgl_value_6 != sgl_expected) )
604 00028A53 1d effffffbd7 effffffbd2 cmpl _sgl_st_acc,_sgl_expected
605 00028A5E 21 0d jneq L9996
606 00028A60 1d effffffbca effffffbc5 cmpl _sgl_value_6,_sgl_expected
607 00028A6B 31 42 jeql L281
608 00028A6D L9996:
609 00028A6D # {
610 00028A6D # errcnt++; /* bump the error count */
611 00028A6D 6d effffffbbd incl _errcnt
612 00028A73 # if ( prt_error )
613 00028A73 5d effffffbb7 tstl _prt_error
614 00028A79 31 0d jeql L282
615 00028A7B # print_pipe4_er("Reg. Data, 3 NO-OPs");
616 00028A7B .data 1
617 00000dbd * L283:
618 00000dbd * 5265672E20446174612C20332 .ascii "Reg. Data, 3 NO-OPs\0"
04E4F2D4F507300
619 00000dd1 * .text
620 00028A7B dd 8f00000dbd pushl $L283
621 00028A81 fe 08 ef00000786 callf $8,_print_pipe4_er
622 00028A88 # if ( halt_flg )
623 00028A88 L282:
624 00028A88 5d effffffba2 tstl _halt_flg
625 00028A8E 31 0d jeql L284
626 00028A90 # pipe4_er_hlt( subtest );
627 00028A90 dd effffffb9a pushl _subtest
628 00028A96 fe 08 ef00000897 callf $8,_pipe4_er_hlt
629 00028A9D # if ( loop_on_err ) {
630 00028A9D L284:
631 00028A9D 5d effffffb8d tstl _loop_on_err
632 00028AA3 31 0a jeql L285
633 00028AA5 # force_loop = TRUE; /* set the force loop flag */
634 00028AA5 0d 01 effffffb84 movl $1,_force_loop
635 00028AAC # asm("brw _pipe4_4_lp1"); /* and loop */
636 00028AAC 13 ff63 brw _pipe4_4_lp1
637 00028AAF # }
638 00028AAF # } /* end of compare error */
639 00028AAF L285:
640 00028AAF # } while( index++ < max_ldf_1_index );
641 00028AAF L281:
642 00028AAF L278:
643 00028AAF 0d effffffb7b 50 movl _index,r0
644 00028AB6 6d effffffb74 incl _index
645 00028ABC 1d 50 effffffb6d cmpl r0,_max_ldf_1_index
646 00028AC3 81 03 13 ff13 jlss L279
647 00028AC8 L277:
648 00028AC8 # } /* end of subtest 4 */
649 00028AC8 40 ret#2
650 00028AC9 .set L273,0x0
651 00028AC9 L275:
652 00028AC9 13 ff03 jbr L276
653 00028ACC .data
654 00000d78 * .text
655 00028ACC .align 1
656 00028ACC .globl _pipe4_5
657 00028ACC _pipe4_5:
658 00028ACC 0000 .word L286
659 00028ACE #
660 00028ACE #
661 00028ACE #
662 00028ACE #
663 00028ACE #
664 00028ACE #
665 00028ACE #
666 00028ACE # /************************************************************************
667 00028ACE # *
668 00028ACE # * SUBTEST 5
669 00028ACE # * data in Cache, no NO-OPs
670 00028ACE # *
671 00028ACE # ************************************************************************/
672 00028ACE # pipe4_5()
673 00028ACE # {
674 00028ACE 13 00e7 jbr L288
675 00028AD1 L289:
676 00028AD1 # force_loop = FALSE; /* clear force_loop flag */
677 00028AD1 4d effffffb59 clrl _force_loop
678 00028AD7 # index = 0;
679 00028AD7 4d effffffb53 clrl _index
680 00028ADD # do
681 00028ADD L292:
682 00028ADD # {
683 00028ADD # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
684 00028ADD 0d effffffb4d 50 movl _index,r0
685 00028AE4 48 03 50 50 shll $3,r0,r0
686 00028AE8 0d e000000000 effffffb3d movl _ldf_1_data(r0),_sgl_value_1
687 00028AF3 # sgl_expected = ldf_1_data[index].exp; /* get expected results */
688 00028AF3 0d effffffb37 50 movl _index,r0
689 00028AFA 48 03 50 50 shll $3,r0,r0
690 00028AFE 0d e000000004 effffffb27 movl _ldf_1_data+4(r0),_sgl_expected
691 00028B09 # sgl_value_2 = 0x40800000; /* floating '1' */
692 00028B09 0d 8f40800000 effffffb1c movl $1082130432,_sgl_value_2
693 00028B14 # /*
694 00028B14 # * If LOOP ON ERROR is set, this is the loop for this subtest.
695 00028B14 # * The force loop flag is set after the first error.
696 00028B14 # */
697 00028B14 # asm("_pipe4_5_lp1:");
698 00028B14 _pipe4_5_lp1:
699 00028B14 # asm("ldf _sgl_value_1"); /* load the operand */
700 00028B14 06 effffffb16 ldf _sgl_value_1
701 00028B1A # asm("stf _sgl_st_acc"); /* store the result */
702 00028B1A 26 effffffb10 stf _sgl_st_acc
703 00028B20 # asm("ldf _sgl_value_2"); /* load a floating '1' */
704 00028B20 06 effffffb0a ldf _sgl_value_2
705 00028B26 # asm("mulf _sgl_value_2"); /* multipy by a '1' */
706 00028B26 e6 effffffb04 mulf _sgl_value_2
707 00028B2C # asm("mulf _sgl_value_1"); /* multipy by the operand */
708 00028B2C e6 effffffafe mulf _sgl_value_1
709 00028B32 # asm("stf _sgl_value_6"); /* store the result */
710 00028B32 26 effffffaf8 stf _sgl_value_6
711 00028B38 # if( force_loop );
712 00028B38 5d effffffaf2 tstl _force_loop
713 00028B3E 31 00 jeql L293
714 00028B40 # asm("brb _pipe4_5_lp1");; /* loop on the error */
715 00028B40 L293:
716 00028B40 11 d2 brb _pipe4_5_lp1
717 00028B42 # /*
718 00028B42 # * verify the results
719 00028B42 # */
720 00028B42 # if( (sgl_st_acc != sgl_expected) || /* COMPARE the values */
721 00028B42 # (sgl_value_6 != sgl_expected) )
722 00028B42 1d effffffae8 effffffae3 cmpl _sgl_st_acc,_sgl_expected
723 00028B4D 21 0d jneq L9995
724 00028B4F 1d effffffadb effffffad6 cmpl _sgl_value_6,_sgl_expected
725 00028B5A 31 42 jeql L294
726 00028B5C L9995:
727 00028B5C # {
728 00028B5C # errcnt++; /* bump the error count */
729 00028B5C 6d efffffface incl _errcnt
730 00028B62 # if ( prt_error )
731 00028B62 5d effffffac8 tstl _prt_error
732 00028B68 31 0d jeql L295
733 00028B6A # print_pipe4_er("Cache Data, no NO-OPs");
734 00028B6A .data 1
735 00000dd1 * L296:
736 00000dd1 * 436163686520446174612C206 .ascii "Cache Data, no NO-OPs\0"
E6F204E4F2D4F507300
737 00000de7 * .text
738 00028B6A dd 8f00000dd1 pushl $L296
739 00028B70 fe 08 ef00000697 callf $8,_print_pipe4_er
740 00028B77 # if ( halt_flg )
741 00028B77 L295:
742 00028B77 5d effffffab3 tstl _halt_flg
743 00028B7D 31 0d jeql L297
744 00028B7F # pipe4_er_hlt( subtest );
745 00028B7F dd effffffaab pushl _subtest
746 00028B85 fe 08 ef000007a8 callf $8,_pipe4_er_hlt
747 00028B8C # if ( loop_on_err ) {
748 00028B8C L297:
749 00028B8C 5d effffffa9e tstl _loop_on_err
750 00028B92 31 0a jeql L298
751 00028B94 # force_loop = TRUE; /* set the force loop flag */
752 00028B94 0d 01 effffffa95 movl $1,_force_loop
753 00028B9B # asm("brw _pipe4_5_lp1"); /* and loop */
754 00028B9B 13 ff76 brw _pipe4_5_lp1
755 00028B9E # }
756 00028B9E # } /* end of compare error */
757 00028B9E L298:
758 00028B9E # } while( index++ < max_ldf_1_index );
759 00028B9E L294:
760 00028B9E L291:
761 00028B9E 0d effffffa8c 50 movl _index,r0
762 00028BA5 6d effffffa85 incl _index
763 00028BAB 1d 50 effffffa7e cmpl r0,_max_ldf_1_index
764 00028BB2 81 03 13 ff26 jlss L292
765 00028BB7 L290:
766 00028BB7 # } /* end of subtest 5 */
767 00028BB7 40 ret#2
768 00028BB8 .set L286,0x0
769 00028BB8 L288:
770 00028BB8 13 ff16 jbr L289
771 00028BBB .data
772 00000d78 * .text
773 00028BBB 00 .align 1
774 00028BBC .globl _pipe4_6
775 00028BBC _pipe4_6:
776 00028BBC 0000 .word L299
777 00028BBE #
778 00028BBE #
779 00028BBE #
780 00028BBE #
781 00028BBE #
782 00028BBE #
783 00028BBE # /************************************************************************
784 00028BBE # *
785 00028BBE # * SUBTEST 6
786 00028BBE # * data in Cache, 1 NO-OP
787 00028BBE # *
788 00028BBE # ************************************************************************/
789 00028BBE # pipe4_6()
790 00028BBE # {
791 00028BBE 13 00ec jbr L301
792 00028BC1 L302:
793 00028BC1 # force_loop = FALSE; /* clear force_loop flag */
794 00028BC1 4d effffffa69 clrl _force_loop
795 00028BC7 # index = 0;
796 00028BC7 4d effffffa63 clrl _index
797 00028BCD # do
798 00028BCD L305:
799 00028BCD # {
800 00028BCD # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
801 00028BCD 0d effffffa5d 50 movl _index,r0
802 00028BD4 48 03 50 50 shll $3,r0,r0
803 00028BD8 0d e000000000 effffffa4d movl _ldf_1_data(r0),_sgl_value_1
804 00028BE3 # sgl_expected = ldf_1_data[index].exp; /* get expected results */
805 00028BE3 0d effffffa47 50 movl _index,r0
806 00028BEA 48 03 50 50 shll $3,r0,r0
807 00028BEE 0d e000000004 effffffa37 movl _ldf_1_data+4(r0),_sgl_expected
808 00028BF9 # sgl_value_2 = 0x40800000; /* floating '1' */
809 00028BF9 0d 8f40800000 effffffa2c movl $1082130432,_sgl_value_2
810 00028C04 # /*
811 00028C04 # * If LOOP ON ERROR is set, this is the loop for this subtest.
812 00028C04 # * The force loop flag is set after the first error.
813 00028C04 # */
814 00028C04 # asm("_pipe4_6_lp1:");
815 00028C04 _pipe4_6_lp1:
816 00028C04 # asm("ldf _sgl_value_1"); /* load the operand */
817 00028C04 06 effffffa26 ldf _sgl_value_1
818 00028C0A # asm("nop");
819 00028C0A 10 nop
820 00028C0B # asm("stf _sgl_st_acc"); /* store the result */
821 00028C0B 26 effffffa1f stf _sgl_st_acc
822 00028C11 # asm("nop");
823 00028C11 10 nop
824 00028C12 # asm("ldf _sgl_value_2"); /* load a floating '1' */
825 00028C12 06 effffffa18 ldf _sgl_value_2
826 00028C18 # asm("nop");
827 00028C18 10 nop
828 00028C19 # asm("mulf _sgl_value_2"); /* multipy by a '1' */
829 00028C19 e6 effffffa11 mulf _sgl_value_2
830 00028C1F # asm("nop");
831 00028C1F 10 nop
832 00028C20 # asm("mulf _sgl_value_1"); /* multipy by the operand */
833 00028C20 e6 effffffa0a mulf _sgl_value_1
834 00028C26 # asm("nop");
835 00028C26 10 nop
836 00028C27 # asm("stf _sgl_value_6"); /* store the result */
837 00028C27 26 effffffa03 stf _sgl_value_6
838 00028C2D # if( force_loop );
839 00028C2D 5d effffff9fd tstl _force_loop
840 00028C33 31 00 jeql L306
841 00028C35 # asm("brb _pipe4_6_lp1");; /* loop on the error */
842 00028C35 L306:
843 00028C35 11 cd brb _pipe4_6_lp1
844 00028C37 # /*
845 00028C37 # * verify the results
846 00028C37 # */
847 00028C37 # if( (sgl_st_acc != sgl_expected) || /* COMPARE the values */
848 00028C37 # (sgl_value_6 != sgl_expected) )
849 00028C37 1d effffff9f3 effffff9ee cmpl _sgl_st_acc,_sgl_expected
850 00028C42 21 0d jneq L9994
851 00028C44 1d effffff9e6 effffff9e1 cmpl _sgl_value_6,_sgl_expected
852 00028C4F 31 42 jeql L307
853 00028C51 L9994:
854 00028C51 # {
855 00028C51 # errcnt++; /* bump the error count */
856 00028C51 6d effffff9d9 incl _errcnt
857 00028C57 # if ( prt_error )
858 00028C57 5d effffff9d3 tstl _prt_error
859 00028C5D 31 0d jeql L308
860 00028C5F # print_pipe4_er("Cache Data, 1 NO-OP");
861 00028C5F .data 1
862 00000de7 * L309:
863 00000de7 * 436163686520446174612C203 .ascii "Cache Data, 1 NO-OP\0"
1204E4F2D4F5000
864 00000dfb * .text
865 00028C5F dd 8f00000de7 pushl $L309
866 00028C65 fe 08 ef000005a2 callf $8,_print_pipe4_er
867 00028C6C # if ( halt_flg )
868 00028C6C L308:
869 00028C6C 5d effffff9be tstl _halt_flg
870 00028C72 31 0d jeql L310
871 00028C74 # pipe4_er_hlt( subtest );
872 00028C74 dd effffff9b6 pushl _subtest
873 00028C7A fe 08 ef000006b3 callf $8,_pipe4_er_hlt
874 00028C81 # if ( loop_on_err ) {
875 00028C81 L310:
876 00028C81 5d effffff9a9 tstl _loop_on_err
877 00028C87 31 0a jeql L311
878 00028C89 # force_loop = TRUE; /* set the force loop flag */
879 00028C89 0d 01 effffff9a0 movl $1,_force_loop
880 00028C90 # asm("brw _pipe4_6_lp1"); /* and loop */
881 00028C90 13 ff71 brw _pipe4_6_lp1
882 00028C93 # }
883 00028C93 # } /* end of compare error */
884 00028C93 L311:
885 00028C93 # } while( index++ < max_ldf_1_index );
886 00028C93 L307:
887 00028C93 L304:
888 00028C93 0d effffff997 50 movl _index,r0
889 00028C9A 6d effffff990 incl _index
890 00028CA0 1d 50 effffff989 cmpl r0,_max_ldf_1_index
891 00028CA7 81 03 13 ff21 jlss L305
892 00028CAC L303:
893 00028CAC # } /* end of subtest 6 */
894 00028CAC 40 ret#2
895 00028CAD .set L299,0x0
896 00028CAD L301:
897 00028CAD 13 ff11 jbr L302
898 00028CB0 .data
899 00000d78 * .text
900 00028CB0 .align 1
901 00028CB0 .globl _pipe4_7
902 00028CB0 _pipe4_7:
903 00028CB0 0000 .word L312
904 00028CB2 #
905 00028CB2 #
906 00028CB2 #
907 00028CB2 #
908 00028CB2 #
909 00028CB2 #
910 00028CB2 # /************************************************************************
911 00028CB2 # *
912 00028CB2 # * SUBTEST 7
913 00028CB2 # * data in Cache, 2 NO-OPs
914 00028CB2 # *
915 00028CB2 # ************************************************************************/
916 00028CB2 # pipe4_7()
917 00028CB2 # {
918 00028CB2 13 00f1 jbr L314
919 00028CB5 L315:
920 00028CB5 # force_loop = FALSE; /* clear force_loop flag */
921 00028CB5 4d effffff975 clrl _force_loop
922 00028CBB # index = 0;
923 00028CBB 4d effffff96f clrl _index
924 00028CC1 # do
925 00028CC1 L318:
926 00028CC1 # {
927 00028CC1 # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
928 00028CC1 0d effffff969 50 movl _index,r0
929 00028CC8 48 03 50 50 shll $3,r0,r0
930 00028CCC 0d e000000000 effffff959 movl _ldf_1_data(r0),_sgl_value_1
931 00028CD7 # sgl_expected = ldf_1_data[index].exp; /* get expected results */
932 00028CD7 0d effffff953 50 movl _index,r0
933 00028CDE 48 03 50 50 shll $3,r0,r0
934 00028CE2 0d e000000004 effffff943 movl _ldf_1_data+4(r0),_sgl_expected
935 00028CED # sgl_value_2 = 0x40800000; /* floating '1' */
936 00028CED 0d 8f40800000 effffff938 movl $1082130432,_sgl_value_2
937 00028CF8 # /*
938 00028CF8 # * If LOOP ON ERROR is set, this is the loop for this subtest.
939 00028CF8 # * The force loop flag is set after the first error.
940 00028CF8 # */
941 00028CF8 # asm("_pipe4_7_lp1:");
942 00028CF8 _pipe4_7_lp1:
943 00028CF8 # asm("ldf _sgl_value_1"); /* load the operand */
944 00028CF8 06 effffff932 ldf _sgl_value_1
945 00028CFE # asm("nop");
946 00028CFE 10 nop
947 00028CFF # asm("nop");
948 00028CFF 10 nop
949 00028D00 # asm("stf _sgl_st_acc"); /* store the result */
950 00028D00 26 effffff92a stf _sgl_st_acc
951 00028D06 # asm("nop");
952 00028D06 10 nop
953 00028D07 # asm("nop");
954 00028D07 10 nop
955 00028D08 # asm("ldf _sgl_value_2"); /* load a floating '1' */
956 00028D08 06 effffff922 ldf _sgl_value_2
957 00028D0E # asm("nop");
958 00028D0E 10 nop
959 00028D0F # asm("nop");
960 00028D0F 10 nop
961 00028D10 # asm("mulf _sgl_value_2"); /* multipy by '1' */
962 00028D10 e6 effffff91a mulf _sgl_value_2
963 00028D16 # asm("nop");
964 00028D16 10 nop
965 00028D17 # asm("nop");
966 00028D17 10 nop
967 00028D18 # asm("mulf _sgl_value_1"); /* multipy by the operand */
968 00028D18 e6 effffff912 mulf _sgl_value_1
969 00028D1E # asm("nop");
970 00028D1E 10 nop
971 00028D1F # asm("nop");
972 00028D1F 10 nop
973 00028D20 # asm("stf _sgl_value_6"); /* store the result */
974 00028D20 26 effffff90a stf _sgl_value_6
975 00028D26 # if( force_loop );
976 00028D26 5d effffff904 tstl _force_loop
977 00028D2C 31 00 jeql L319
978 00028D2E # asm("brb _pipe4_7_lp1");; /* loop on the error */
979 00028D2E L319:
980 00028D2E 11 c8 brb _pipe4_7_lp1
981 00028D30 # /*
982 00028D30 # * verify the results
983 00028D30 # */
984 00028D30 # if( (sgl_st_acc != sgl_expected) || /* COMPARE the values */
985 00028D30 # (sgl_value_6 != sgl_expected) )
986 00028D30 1d effffff8fa effffff8f5 cmpl _sgl_st_acc,_sgl_expected
987 00028D3B 21 0d jneq L9993
988 00028D3D 1d effffff8ed effffff8e8 cmpl _sgl_value_6,_sgl_expected
989 00028D48 31 42 jeql L320
990 00028D4A L9993:
991 00028D4A # {
992 00028D4A # errcnt++; /* bump the error count */
993 00028D4A 6d effffff8e0 incl _errcnt
994 00028D50 # if ( prt_error )
995 00028D50 5d effffff8da tstl _prt_error
996 00028D56 31 0d jeql L321
997 00028D58 # print_pipe4_er("Cache Data, 2 NO-OPs");
998 00028D58 .data 1
999 00000dfb * L322:
1000 00000dfb * 436163686520446174612C203 .ascii "Cache Data, 2 NO-OPs\0"
2204E4F2D4F507300
1001 00000e10 * .text
1002 00028D58 dd 8f00000dfb pushl $L322
1003 00028D5E fe 08 ef000004a9 callf $8,_print_pipe4_er
1004 00028D65 # if ( halt_flg )
1005 00028D65 L321:
1006 00028D65 5d effffff8c5 tstl _halt_flg
1007 00028D6B 31 0d jeql L323
1008 00028D6D # pipe4_er_hlt( subtest );
1009 00028D6D dd effffff8bd pushl _subtest
1010 00028D73 fe 08 ef000005ba callf $8,_pipe4_er_hlt
1011 00028D7A # if ( loop_on_err ) {
1012 00028D7A L323:
1013 00028D7A 5d effffff8b0 tstl _loop_on_err
1014 00028D80 31 0a jeql L324
1015 00028D82 # force_loop = TRUE; /* set the force loop flag */
1016 00028D82 0d 01 effffff8a7 movl $1,_force_loop
1017 00028D89 # asm("brw _pipe4_7_lp1"); /* and loop */
1018 00028D89 13 ff6c brw _pipe4_7_lp1
1019 00028D8C # }
1020 00028D8C # } /* end of compare error */
1021 00028D8C L324:
1022 00028D8C # } while( index++ < max_ldf_1_index );
1023 00028D8C L320:
1024 00028D8C L317:
1025 00028D8C 0d effffff89e 50 movl _index,r0
1026 00028D93 6d effffff897 incl _index
1027 00028D99 1d 50 effffff890 cmpl r0,_max_ldf_1_index
1028 00028DA0 81 03 13 ff1c jlss L318
1029 00028DA5 L316:
1030 00028DA5 # } /* end of subtest 7 */
1031 00028DA5 40 ret#2
1032 00028DA6 .set L312,0x0
1033 00028DA6 L314:
1034 00028DA6 13 ff0c jbr L315
1035 00028DA9 .data
1036 00000d78 * .text
1037 00028DA9 00 .align 1
1038 00028DAA .globl _pipe4_8
1039 00028DAA _pipe4_8:
1040 00028DAA 0000 .word L325
1041 00028DAC #
1042 00028DAC #
1043 00028DAC #
1044 00028DAC #
1045 00028DAC #
1046 00028DAC #
1047 00028DAC # /************************************************************************
1048 00028DAC # *
1049 00028DAC # * SUBTEST 8
1050 00028DAC # * data in Cache, 3 NO-OPs
1051 00028DAC # *
1052 00028DAC # ************************************************************************/
1053 00028DAC # pipe4_8()
1054 00028DAC # {
1055 00028DAC 13 00f6 jbr L327
1056 00028DAF L328:
1057 00028DAF # force_loop = FALSE; /* clear force_loop flag */
1058 00028DAF 4d effffff87b clrl _force_loop
1059 00028DB5 # index = 0;
1060 00028DB5 4d effffff875 clrl _index
1061 00028DBB # do
1062 00028DBB L331:
1063 00028DBB # {
1064 00028DBB # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
1065 00028DBB 0d effffff86f 50 movl _index,r0
1066 00028DC2 48 03 50 50 shll $3,r0,r0
1067 00028DC6 0d e000000000 effffff85f movl _ldf_1_data(r0),_sgl_value_1
1068 00028DD1 # sgl_expected = ldf_1_data[index].exp; /* get expected results */
1069 00028DD1 0d effffff859 50 movl _index,r0
1070 00028DD8 48 03 50 50 shll $3,r0,r0
1071 00028DDC 0d e000000004 effffff849 movl _ldf_1_data+4(r0),_sgl_expected
1072 00028DE7 # sgl_value_2 = 0x40800000; /* floating '1' */
1073 00028DE7 0d 8f40800000 effffff83e movl $1082130432,_sgl_value_2
1074 00028DF2 # /*
1075 00028DF2 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1076 00028DF2 # * The force loop flag is set after the first error.
1077 00028DF2 # */
1078 00028DF2 # asm("_pipe4_8_lp1:");
1079 00028DF2 _pipe4_8_lp1:
1080 00028DF2 # asm("ldf _sgl_value_1"); /* load the operand */
1081 00028DF2 06 effffff838 ldf _sgl_value_1
1082 00028DF8 # asm("nop");
1083 00028DF8 10 nop
1084 00028DF9 # asm("nop");
1085 00028DF9 10 nop
1086 00028DFA # asm("nop");
1087 00028DFA 10 nop
1088 00028DFB # asm("stf _sgl_st_acc"); /* store the result */
1089 00028DFB 26 effffff82f stf _sgl_st_acc
1090 00028E01 # asm("nop");
1091 00028E01 10 nop
1092 00028E02 # asm("nop");
1093 00028E02 10 nop
1094 00028E03 # asm("nop");
1095 00028E03 10 nop
1096 00028E04 # asm("ldf _sgl_value_2"); /* load a floating '1' */
1097 00028E04 06 effffff826 ldf _sgl_value_2
1098 00028E0A # asm("nop");
1099 00028E0A 10 nop
1100 00028E0B # asm("nop");
1101 00028E0B 10 nop
1102 00028E0C # asm("nop");
1103 00028E0C 10 nop
1104 00028E0D # asm("mulf _sgl_value_2"); /* multipy by a '1' */
1105 00028E0D e6 effffff81d mulf _sgl_value_2
1106 00028E13 # asm("nop");
1107 00028E13 10 nop
1108 00028E14 # asm("nop");
1109 00028E14 10 nop
1110 00028E15 # asm("nop");
1111 00028E15 10 nop
1112 00028E16 # asm("mulf _sgl_value_1"); /* multipy by the operand */
1113 00028E16 e6 effffff814 mulf _sgl_value_1
1114 00028E1C # asm("nop");
1115 00028E1C 10 nop
1116 00028E1D # asm("nop");
1117 00028E1D 10 nop
1118 00028E1E # asm("nop");
1119 00028E1E 10 nop
1120 00028E1F # asm("stf _sgl_value_6"); /* store the result */
1121 00028E1F 26 effffff80b stf _sgl_value_6
1122 00028E25 # if( force_loop );
1123 00028E25 5d effffff805 tstl _force_loop
1124 00028E2B 31 00 jeql L332
1125 00028E2D # asm("brb _pipe4_8_lp1");; /* loop on the error */
1126 00028E2D L332:
1127 00028E2D 11 c3 brb _pipe4_8_lp1
1128 00028E2F # /*
1129 00028E2F # * verify the results
1130 00028E2F # */
1131 00028E2F # if( (sgl_st_acc != sgl_expected) || /* COMPARE the values */
1132 00028E2F # (sgl_value_6 != sgl_expected) )
1133 00028E2F 1d effffff7fb effffff7f6 cmpl _sgl_st_acc,_sgl_expected
1134 00028E3A 21 0d jneq L9992
1135 00028E3C 1d effffff7ee effffff7e9 cmpl _sgl_value_6,_sgl_expected
1136 00028E47 31 42 jeql L333
1137 00028E49 L9992:
1138 00028E49 # {
1139 00028E49 # errcnt++; /* bump the error count */
1140 00028E49 6d effffff7e1 incl _errcnt
1141 00028E4F # if ( prt_error )
1142 00028E4F 5d effffff7db tstl _prt_error
1143 00028E55 31 0d jeql L334
1144 00028E57 # print_pipe4_er("Cache Data, 3 NO-OPs");
1145 00028E57 .data 1
1146 00000e10 * L335:
1147 00000e10 * 436163686520446174612C203 .ascii "Cache Data, 3 NO-OPs\0"
3204E4F2D4F507300
1148 00000e25 * .text
1149 00028E57 dd 8f00000e10 pushl $L335
1150 00028E5D fe 08 ef000003aa callf $8,_print_pipe4_er
1151 00028E64 # if ( halt_flg )
1152 00028E64 L334:
1153 00028E64 5d effffff7c6 tstl _halt_flg
1154 00028E6A 31 0d jeql L336
1155 00028E6C # pipe4_er_hlt( subtest );
1156 00028E6C dd effffff7be pushl _subtest
1157 00028E72 fe 08 ef000004bb callf $8,_pipe4_er_hlt
1158 00028E79 # if ( loop_on_err ) {
1159 00028E79 L336:
1160 00028E79 5d effffff7b1 tstl _loop_on_err
1161 00028E7F 31 0a jeql L337
1162 00028E81 # force_loop = TRUE; /* set the force loop flag */
1163 00028E81 0d 01 effffff7a8 movl $1,_force_loop
1164 00028E88 # asm("brw _pipe4_8_lp1"); /* and loop */
1165 00028E88 13 ff67 brw _pipe4_8_lp1
1166 00028E8B # }
1167 00028E8B # } /* end of compare error */
1168 00028E8B L337:
1169 00028E8B # } while( index++ < max_ldf_1_index );
1170 00028E8B L333:
1171 00028E8B L330:
1172 00028E8B 0d effffff79f 50 movl _index,r0
1173 00028E92 6d effffff798 incl _index
1174 00028E98 1d 50 effffff791 cmpl r0,_max_ldf_1_index
1175 00028E9F 81 03 13 ff17 jlss L331
1176 00028EA4 L329:
1177 00028EA4 # } /* end of subtest 8 */
1178 00028EA4 40 ret#2
1179 00028EA5 .set L325,0x0
1180 00028EA5 L327:
1181 00028EA5 13 ff07 jbr L328
1182 00028EA8 .data
1183 00000d78 * .text
1184 00028EA8 .align 1
1185 00028EA8 .globl _pipe4_9
1186 00028EA8 _pipe4_9:
1187 00028EA8 0000 .word L338
1188 00028EAA #
1189 00028EAA #
1190 00028EAA #
1191 00028EAA #
1192 00028EAA #
1193 00028EAA #
1194 00028EAA # /*****************************************************************************
1195 00028EAA # *
1196 00028EAA # * SUBTEST 9
1197 00028EAA # * data on the stack, no NO-OPs
1198 00028EAA # *
1199 00028EAA # *****************************************************************************/
1200 00028EAA # pipe4_9()
1201 00028EAA # {
1202 00028EAA 13 018d jbr L340
1203 00028EAD L341:
1204 00028EAD # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */
1205 00028EAD ed 6d effffff77c moval (r13),_pre_event_fp
1206 00028EB4 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */
1207 00028EB4 ed 6e effffff775 moval (r14),_pre_event_sp
1208 00028EBB # force_loop = FALSE; /* clear force_loop flag */
1209 00028EBB 4d effffff76f clrl _force_loop
1210 00028EC1 # index = 0;
1211 00028EC1 4d effffff769 clrl _index
1212 00028EC7 # do
1213 00028EC7 L344:
1214 00028EC7 # {
1215 00028EC7 # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
1216 00028EC7 0d effffff763 50 movl _index,r0
1217 00028ECE 48 03 50 50 shll $3,r0,r0
1218 00028ED2 0d e000000000 effffff753 movl _ldf_1_data(r0),_sgl_value_1
1219 00028EDD # sgl_expected = ldf_1_data[index].exp; /* get expected results */
1220 00028EDD 0d effffff74d 50 movl _index,r0
1221 00028EE4 48 03 50 50 shll $3,r0,r0
1222 00028EE8 0d e000000004 effffff73d movl _ldf_1_data+4(r0),_sgl_expected
1223 00028EF3 # sgl_value_2 = 0x40800000; /* floating '1' */
1224 00028EF3 0d 8f40800000 effffff732 movl $1082130432,_sgl_value_2
1225 00028EFE # asm("moval _pointer_data,_sgl_value_4");/* init / final SP value */
1226 00028EFE ed effffff72c effffff727 moval _pointer_data,_sgl_value_4
1227 00028F09 # /*
1228 00028F09 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1229 00028F09 # * The force loop flag is set after the first error.
1230 00028F09 # */
1231 00028F09 # asm("_pipe4_9_lp1:");
1232 00028F09 _pipe4_9_lp1:
1233 00028F09 # asm("moval _pointer_data,r14"); /* set the stack pointer */
1234 00028F09 ed effffff721 5e moval _pointer_data,r14
1235 00028F10 # asm("movl _sgl_value_1,-(r14)"); /* push the operand */
1236 00028F10 0d effffff71a 7e movl _sgl_value_1,-(r14)
1237 00028F17 # asm("movl _sgl_value_2,-(r14)"); /* push a floating '1' */
1238 00028F17 0d effffff713 7e movl _sgl_value_2,-(r14)
1239 00028F1E # asm("movl _sgl_value_2,-(r14)"); /* push a '1' again */
1240 00028F1E 0d effffff70c 7e movl _sgl_value_2,-(r14)
1241 00028F25 # asm("movl _sgl_value_1,-(r14)"); /* push the operand again */
1242 00028F25 0d effffff705 7e movl _sgl_value_1,-(r14)
1243 00028F2C # /*
1244 00028F2C # * now pop the data off the stack
1245 00028F2C # */
1246 00028F2C #
1247 00028F2C # asm("ldf (r14)+"); /* load the operand */
1248 00028F2C 06 8e ldf (r14)+
1249 00028F2E # asm("stf r5"); /* store the result */
1250 00028F2E 26 55 stf r5
1251 00028F30 # asm("ldf (r14)+"); /* load a floating '1' */
1252 00028F30 06 8e ldf (r14)+
1253 00028F32 # asm("mulf (r14)+"); /* multipy by a '1' */
1254 00028F32 e6 8e mulf (r14)+
1255 00028F34 # asm("mulf (r14)+"); /* multipy by the operand */
1256 00028F34 e6 8e mulf (r14)+
1257 00028F36 # asm("stf r6"); /* store the result */
1258 00028F36 26 56 stf r6
1259 00028F38 # if( force_loop );
1260 00028F38 5d effffff6f2 tstl _force_loop
1261 00028F3E 31 00 jeql L345
1262 00028F40 # asm("brb _pipe4_9_lp1");; /* loop on the error */
1263 00028F40 L345:
1264 00028F40 11 c7 brb _pipe4_9_lp1
1265 00028F42 # /*
1266 00028F42 # * verify the results
1267 00028F42 # */
1268 00028F42 # asm("movl r5,_sgl_st_acc"); /* get the 1st store value */
1269 00028F42 0d 55 effffff6e7 movl r5,_sgl_st_acc
1270 00028F49 # asm("movl r6,_sgl_value_6"); /* get the 2nd store value */
1271 00028F49 0d 56 effffff6e0 movl r6,_sgl_value_6
1272 00028F50 # asm("moval (r14),_sgl_value_5"); /* save the stack pointer */
1273 00028F50 ed 6e effffff6d9 moval (r14),_sgl_value_5
1274 00028F57 # if( (sgl_st_acc != sgl_expected) || /* verify the results... */
1275 00028F57 # (sgl_value_6 != sgl_expected) ||
1276 00028F57 # (sgl_value_5 != sgl_value_4) ) /* ... and the final SP */
1277 00028F57 1d effffff6d3 effffff6ce cmpl _sgl_st_acc,_sgl_expected
1278 00028F62 21 1d jneq L9991
1279 00028F64 1d effffff6c6 effffff6c1 cmpl _sgl_value_6,_sgl_expected
1280 00028F6F 21 10 jneq L9991
1281 00028F71 1d effffff6b9 effffff6b4 cmpl _sgl_value_5,_sgl_value_4
1282 00028F7C 21 03 13 0091 jeql L346
1283 00028F81 L9991:
1284 00028F81 # {
1285 00028F81 # asm("movl _pre_event_fp,r13"); /* restore frame pointer */
1286 00028F81 0d effffff6a9 5d movl _pre_event_fp,r13
1287 00028F88 # asm("movl _pre_event_sp,r14"); /* restore stack pointer */
1288 00028F88 0d effffff6a2 5e movl _pre_event_sp,r14
1289 00028F8F # errcnt++; /* bump the error count */
1290 00028F8F 6d effffff69b incl _errcnt
1291 00028F95 # if ( prt_error ) {
1292 00028F95 5d effffff695 tstl _prt_error
1293 00028F9B 31 4e jeql L347
1294 00028F9D # print_pipe4_er("POP data from the STACK");
1295 00028F9D .data 1
1296 00000e25 * L348:
1297 00000e25 * 504F5020646174612066726F6 .ascii "POP data from the STACK\0"
D2074686520535441434B00
1298 00000e3d * .text
1299 00028F9D dd 8f00000e25 pushl $L348
1300 00028FA3 fe 08 ef00000264 callf $8,_print_pipe4_er
1301 00028FAA # writes("final Stack Pointer = ");
1302 00028FAA .data 1
1303 00000e3d * L349:
1304 00000e3d * 66696E616C20537461636B205 .ascii "final Stack Pointer = \0"
06F696E746572203D2000
1305 00000e54 * .text
1306 00028FAA dd 8f00000e3d pushl $L349
1307 00028FB0 fe 08 effffff679 callf $8,_writes
1308 00028FB7 # write32h( sgl_value_5 );
1309 00028FB7 dd effffff673 pushl _sgl_value_5
1310 00028FBD fe 08 effffff66c callf $8,_write32h
1311 00028FC4 # writes(", expected SP = ");
1312 00028FC4 .data 1
1313 00000e54 * L351:
1314 00000e54 * 2C20206578706563746564205 .ascii ", expected SP = \0"
350203D2000
1315 00000e66 * .text
1316 00028FC4 dd 8f00000e54 pushl $L351
1317 00028FCA fe 08 effffff65f callf $8,_writes
1318 00028FD1 # write32h( sgl_value_4 );
1319 00028FD1 dd effffff659 pushl _sgl_value_4
1320 00028FD7 fe 08 effffff652 callf $8,_write32h
1321 00028FDE # writes("\n");
1322 00028FDE .data 1
1323 00000e66 * L352:
1324 00000e66 * 0A00 .ascii "\12\0"
1325 00000e68 * .text
1326 00028FDE dd 8f00000e66 pushl $L352
1327 00028FE4 fe 08 effffff645 callf $8,_writes
1328 00028FEB # }
1329 00028FEB # if ( halt_flg )
1330 00028FEB L347:
1331 00028FEB 5d effffff63f tstl _halt_flg
1332 00028FF1 31 0d jeql L353
1333 00028FF3 # pipe4_er_hlt( subtest );
1334 00028FF3 dd effffff637 pushl _subtest
1335 00028FF9 fe 08 ef00000334 callf $8,_pipe4_er_hlt
1336 00029000 # if ( loop_on_err ) {
1337 00029000 L353:
1338 00029000 5d effffff62a tstl _loop_on_err
1339 00029006 31 0a jeql L354
1340 00029008 # force_loop = TRUE; /* set the force loop flag */
1341 00029008 0d 01 effffff621 movl $1,_force_loop
1342 0002900F # asm("brw _pipe4_9_lp1"); /* and loop */
1343 0002900F 13 fef7 brw _pipe4_9_lp1
1344 00029012 # }
1345 00029012 # } /* end of compare error */
1346 00029012 L354:
1347 00029012 # } while( index++ < max_ldf_1_index );
1348 00029012 L346:
1349 00029012 L343:
1350 00029012 0d effffff618 50 movl _index,r0
1351 00029019 6d effffff611 incl _index
1352 0002901F 1d 50 effffff60a cmpl r0,_max_ldf_1_index
1353 00029026 81 03 13 fe9c jlss L344
1354 0002902B L342:
1355 0002902B # asm("movl _pre_event_fp,r13"); /* restore the frame pointer */
1356 0002902B 0d effffff5ff 5d movl _pre_event_fp,r13
1357 00029032 # asm("movl _pre_event_sp,r14"); /* restore the stack pointer */
1358 00029032 0d effffff5f8 5e movl _pre_event_sp,r14
1359 00029039 # } /* end of subtest 9 */
1360 00029039 40 ret#2
1361 0002903A .set L338,0x0
1362 0002903A L340:
1363 0002903A 13 fe70 jbr L341
1364 0002903D .data
1365 00000d78 * .text
1366 0002903D 00 .align 1
1367 0002903E .globl _pipe4_10
1368 0002903E _pipe4_10:
1369 0002903E 0000 .word L355
1370 00029040 #
1371 00029040 #
1372 00029040 #
1373 00029040 #
1374 00029040 #
1375 00029040 #
1376 00029040 # /******************************************************************************
1377 00029040 # *
1378 00029040 # * SUBTEST 10
1379 00029040 # * get data via indexed FRAME pointer
1380 00029040 # *
1381 00029040 # * ADDR INDEX DATA
1382 00029040 # * pointer_data 4 <the 1st STF result goes here>
1383 00029040 # * pointer_data-4 3 <the 2nd STF result goes here>
1384 00029040 # * pointer_data-8 2 <operand data>
1385 00029040 # * pointer_data-12 1 <floating '1'>
1386 00029040 # * pointer_data-16 0 point the frame pointer here
1387 00029040 # *
1388 00029040 # ******************************************************************************/
1389 00029040 # pipe4_10()
1390 00029040 # {
1391 00029040 13 01c8 jbr L357
1392 00029043 L358:
1393 00029043 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */
1394 00029043 ed 6d effffff5e6 moval (r13),_pre_event_fp
1395 0002904A # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */
1396 0002904A ed 6e effffff5df moval (r14),_pre_event_sp
1397 00029051 # force_loop = FALSE; /* clear force_loop flag */
1398 00029051 4d effffff5d9 clrl _force_loop
1399 00029057 # index = 0;
1400 00029057 4d effffff5d3 clrl _index
1401 0002905D # do
1402 0002905D L361:
1403 0002905D # {
1404 0002905D # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
1405 0002905D 0d effffff5cd 50 movl _index,r0
1406 00029064 48 03 50 50 shll $3,r0,r0
1407 00029068 0d e000000000 effffff5bd movl _ldf_1_data(r0),_sgl_value_1
1408 00029073 # sgl_expected = ldf_1_data[index].exp; /* get expected results */
1409 00029073 0d effffff5b7 50 movl _index,r0
1410 0002907A 48 03 50 50 shll $3,r0,r0
1411 0002907E 0d e000000004 effffff5a7 movl _ldf_1_data+4(r0),_sgl_expected
1412 00029089 # sgl_value_2 = 0x40800000; /* floating '1' */
1413 00029089 0d 8f40800000 effffff59c movl $1082130432,_sgl_value_2
1414 00029094 # asm("moval _pointer_data,_sgl_value_4");/* get store data's addr */
1415 00029094 ed effffff596 effffff591 moval _pointer_data,_sgl_value_4
1416 0002909F # sgl_value_4 -= 8; /* decrement it by 8 (bytes)*/
1417 0002909F 2c 08 effffff58a subl2 $8,_sgl_value_4
1418 000290A6 # asm("movl _sgl_value_1,*_sgl_value_4"); /* set the operand data */
1419 000290A6 0d effffff584 fffffff57f movl _sgl_value_1,*_sgl_value_4
1420 000290B1 # sgl_value_4 -= 4; /* decrement it by 4 (bytes)*/
1421 000290B1 2c 04 effffff578 subl2 $4,_sgl_value_4
1422 000290B8 # asm("movl _sgl_value_2,*_sgl_value_4"); /* set the floating '1' */
1423 000290B8 0d effffff572 fffffff56d movl _sgl_value_2,*_sgl_value_4
1424 000290C3 # sgl_value_4 -= 4; /* get FRAME PTR address */
1425 000290C3 2c 04 effffff566 subl2 $4,_sgl_value_4
1426 000290CA # /*
1427 000290CA # * If LOOP ON ERROR is set, this is the loop for this subtest.
1428 000290CA # * The force loop flag is set after the first error.
1429 000290CA # */
1430 000290CA # asm("_pipe4_10_lp1:");
1431 000290CA _pipe4_10_lp1:
1432 000290CA # asm("movl _sgl_value_4,r13"); /* set the FRAME POINTER */
1433 000290CA 0d effffff560 5d movl _sgl_value_4,r13
1434 000290D1 # asm("movl $1,r1"); /* r1 index = 1 longwords */
1435 000290D1 0d 01 51 movl $1,r1
1436 000290D4 # asm("movl $2,r2"); /* r2 index = 2 longwords */
1437 000290D4 0d 02 52 movl $2,r2
1438 000290D7 # asm("movl $3,r3"); /* r3 index = 3 longwords */
1439 000290D7 0d 03 53 movl $3,r3
1440 000290DA # asm("movl $4,r4"); /* r4 index = 4 longwords */
1441 000290DA 0d 04 54 movl $4,r4
1442 000290DD # asm("ldf (r13)[r2]"); /* load the op (indx = 2) */
1443 000290DD 06 426d ldf (r13)[r2]
1444 000290E0 # asm("stf (r13)[r4]"); /* store -index = 4 */
1445 000290E0 26 446d stf (r13)[r4]
1446 000290E3 # asm("ldf (r13)[r1]"); /* load '1' (indx = 1) */
1447 000290E3 06 416d ldf (r13)[r1]
1448 000290E6 # asm("mulf (r13)[r1]"); /* multiply by a '1' */
1449 000290E6 e6 416d mulf (r13)[r1]
1450 000290E9 # asm("mulf (r13)[r2]"); /* multiply by the operand */
1451 000290E9 e6 426d mulf (r13)[r2]
1452 000290EC # asm("stf (r13)[r3]"); /* store -index = 3 */
1453 000290EC 26 436d stf (r13)[r3]
1454 000290EF # if( force_loop );
1455 000290EF 5d effffff53b tstl _force_loop
1456 000290F5 31 00 jeql L362
1457 000290F7 # asm("brb _pipe4_10_lp1");; /* loop on the error */
1458 000290F7 L362:
1459 000290F7 11 d1 brb _pipe4_10_lp1
1460 000290F9 # /*
1461 000290F9 # * verify the results
1462 000290F9 # */
1463 000290F9 # sgl_st_acc = pointer_data; /* save 1st stored value */
1464 000290F9 0d effffff531 effffff52c movl _pointer_data,_sgl_st_acc
1465 00029104 # asm("moval _pointer_data,_sgl_value_5"); /* get addr of 1st stf */
1466 00029104 ed effffff526 effffff521 moval _pointer_data,_sgl_value_5
1467 0002910F # sgl_value_5 -= 4; /* decrement by 4 (bytes) */
1468 0002910F 2c 04 effffff51a subl2 $4,_sgl_value_5
1469 00029116 # asm("movl *_sgl_value_5,_sgl_value_6"); /* save 2nd store value */
1470 00029116 0d fffffff514 effffff50f movl *_sgl_value_5,_sgl_value_6
1471 00029121 # asm("moval (r13),_sgl_value_5"); /* save the frame pointer */
1472 00029121 ed 6d effffff508 moval (r13),_sgl_value_5
1473 00029128 # if( (sgl_st_acc != sgl_expected) || /* verify the results... */
1474 00029128 # (sgl_value_6 != sgl_expected) ||
1475 00029128 # (sgl_value_5 != sgl_value_4) ) /* ... and the final FP */
1476 00029128 1d effffff502 effffff4fd cmpl _sgl_st_acc,_sgl_expected
1477 00029133 21 1d jneq L9990
1478 00029135 1d effffff4f5 effffff4f0 cmpl _sgl_value_6,_sgl_expected
1479 00029140 21 10 jneq L9990
1480 00029142 1d effffff4e8 effffff4e3 cmpl _sgl_value_5,_sgl_value_4
1481 0002914D 21 03 13 0091 jeql L363
1482 00029152 L9990:
1483 00029152 # {
1484 00029152 # asm("movl _pre_event_fp,r13"); /* restore frame pointer */
1485 00029152 0d effffff4d8 5d movl _pre_event_fp,r13
1486 00029159 # asm("movl _pre_event_sp,r14"); /* restore stack pointer */
1487 00029159 0d effffff4d1 5e movl _pre_event_sp,r14
1488 00029160 # errcnt++; /* bump the error count */
1489 00029160 6d effffff4ca incl _errcnt
1490 00029166 # if ( prt_error ) {
1491 00029166 5d effffff4c4 tstl _prt_error
1492 0002916C 31 4e jeql L364
1493 0002916E # print_pipe4_er("indexed FP addressing");
1494 0002916E .data 1
1495 00000e68 * L365:
1496 00000e68 * 696E646578656420465020616 .ascii "indexed FP addressing\0"
46472657373696E6700
1497 00000e7e * .text
1498 0002916E dd 8f00000e68 pushl $L365
1499 00029174 fe 08 ef00000093 callf $8,_print_pipe4_er
1500 0002917B # writes("final Frame Pointer = ");
1501 0002917B .data 1
1502 00000e7e * L366:
1503 00000e7e * 66696E616C204672616D65205 .ascii "final Frame Pointer = \0"
06F696E746572203D2000
1504 00000e95 * .text
1505 0002917B dd 8f00000e7e pushl $L366
1506 00029181 fe 08 effffff4a8 callf $8,_writes
1507 00029188 # writeh( sgl_value_5 );
1508 00029188 dd effffff4a2 pushl _sgl_value_5
1509 0002918E fe 08 effffff49b callf $8,_writeh
1510 00029195 # writes(", expected FP = ");
1511 00029195 .data 1
1512 00000e95 * L368:
1513 00000e95 * 2C20206578706563746564204 .ascii ", expected FP = \0"
650203D2000
1514 00000ea7 * .text
1515 00029195 dd 8f00000e95 pushl $L368
1516 0002919B fe 08 effffff48e callf $8,_writes
1517 000291A2 # writeh( sgl_value_4 );
1518 000291A2 dd effffff488 pushl _sgl_value_4
1519 000291A8 fe 08 effffff481 callf $8,_writeh
1520 000291AF # writes("\n");
1521 000291AF .data 1
1522 00000ea7 * L369:
1523 00000ea7 * 0A00 .ascii "\12\0"
1524 00000ea9 * .text
1525 000291AF dd 8f00000ea7 pushl $L369
1526 000291B5 fe 08 effffff474 callf $8,_writes
1527 000291BC # }
1528 000291BC # if ( halt_flg )
1529 000291BC L364:
1530 000291BC 5d effffff46e tstl _halt_flg
1531 000291C2 31 0d jeql L370
1532 000291C4 # pipe4_er_hlt( subtest );
1533 000291C4 dd effffff466 pushl _subtest
1534 000291CA fe 08 ef00000163 callf $8,_pipe4_er_hlt
1535 000291D1 # if ( loop_on_err ) {
1536 000291D1 L370:
1537 000291D1 5d effffff459 tstl _loop_on_err
1538 000291D7 31 0a jeql L371
1539 000291D9 # force_loop = TRUE; /* set the force loop flag */
1540 000291D9 0d 01 effffff450 movl $1,_force_loop
1541 000291E0 # asm("brw _pipe4_10_lp1"); /* and loop */
1542 000291E0 13 fee7 brw _pipe4_10_lp1
1543 000291E3 # }
1544 000291E3 # } /* end of compare error */
1545 000291E3 L371:
1546 000291E3 # } while( index++ < max_ldf_1_index );
1547 000291E3 L363:
1548 000291E3 L360:
1549 000291E3 0d effffff447 50 movl _index,r0
1550 000291EA 6d effffff440 incl _index
1551 000291F0 1d 50 effffff439 cmpl r0,_max_ldf_1_index
1552 000291F7 81 03 13 fe61 jlss L361
1553 000291FC L359:
1554 000291FC # asm("movl _pre_event_fp,r13"); /* restore the frame pointer */
1555 000291FC 0d effffff42e 5d movl _pre_event_fp,r13
1556 00029203 # asm("movl _pre_event_sp,r14"); /* restore the stack pointer */
1557 00029203 0d effffff427 5e movl _pre_event_sp,r14
1558 0002920A # } /* end of subtest 10 */
1559 0002920A 40 ret#2
1560 0002920B .set L355,0x0
1561 0002920B L357:
1562 0002920B 13 fe35 jbr L358
1563 0002920E .data
1564 00000d78 * .text
1565 0002920E .align 1
1566 0002920E .globl _print_pipe4_er
1567 0002920E _print_pipe4_er:
1568 0002920E 0000 .word L372
1569 00029210 #
1570 00029210 #
1571 00029210 # /******************************************************************************
1572 00029210 # *
1573 00029210 # *
1574 00029210 # * print an error in the following form
1575 00029210 # *
1576 00029210 # * operand = xxxxxxxx, 1st store = xxxxxxxx, data index = dd
1577 00029210 # * 2nd store = xxxxxxxx, expected Acc = xxxxxxxx
1578 00029210 # *
1579 00029210 # ******************************************************************************/
1580 00029210 # print_pipe4_er(msg)
1581 00029210 # char *msg;
1582 00029210 # {
1583 00029210 13 011d jbr L374
1584 00029213 L375:
1585 00029213 # writes("\n"); /* start a new print line */
1586 00029213 .data 1
1587 00000ea9 * L376:
1588 00000ea9 * 0A00 .ascii "\12\0"
1589 00000eab * .text
1590 00029213 dd 8f00000ea9 pushl $L376
1591 00029219 fe 08 effffff410 callf $8,_writes
1592 00029220 # writes("cycle: ");
1593 00029220 .data 1
1594 00000eab * L377:
1595 00000eab * 6379636C653A2000 .ascii "cycle: \0"
1596 00000eb3 * .text
1597 00029220 dd 8f00000eab pushl $L377
1598 00029226 fe 08 effffff403 callf $8,_writes
1599 0002922D # writed( cycle );
1600 0002922D dd effffff3fd pushl _cycle
1601 00029233 fe 08 effffff3f6 callf $8,_writed
1602 0002923A # writes(" test ");
1603 0002923A .data 1
1604 00000eb3 * L379:
1605 00000eb3 * 20746573742000 .ascii " test \0"
1606 00000eba * .text
1607 0002923A dd 8f00000eb3 pushl $L379
1608 00029240 fe 08 effffff3e9 callf $8,_writes
1609 00029247 # writed( test_no );
1610 00029247 dd effffff3e3 pushl _test_no
1611 0002924D fe 08 effffff3dc callf $8,_writed
1612 00029254 # writes(" (Pipe 4), subtest ");
1613 00029254 .data 1
1614 00000eba * L380:
1615 00000eba * 202028506970652034292C207 .ascii " (Pipe 4), subtest \0"
37562746573742000
1616 00000ecf * .text
1617 00029254 dd 8f00000eba pushl $L380
1618 0002925A fe 08 effffff3cf callf $8,_writes
1619 00029261 # writed( subtest );
1620 00029261 dd effffff3c9 pushl _subtest
1621 00029267 fe 08 effffff3c2 callf $8,_writed
1622 0002926E # writes(" error - ");
1623 0002926E .data 1
1624 00000ecf * L381:
1625 00000ecf * 206572726F72202D2000 .ascii " error - \0"
1626 00000ed9 * .text
1627 0002926E dd 8f00000ecf pushl $L381
1628 00029274 fe 08 effffff3b5 callf $8,_writes
1629 0002927B # writes( msg );
1630 0002927B dd ad04 pushl 4(fp)
1631 0002927E fe 08 effffff3ab callf $8,_writes
1632 00029285 # writec('\n');
1633 00029285 dd 0a pushl $10
1634 00029287 fe 08 effffff3a2 callf $8,_writec
1635 0002928E # writes(" LDF(op), STF, LDF(1.0), MULF(op), STF\n");
1636 0002928E .data 1
1637 00000ed9 * L383:
1638 00000ed9 * 204C4446286F70292C2053544 .ascii " LDF(op), STF, LDF(1.0), MULF(op), STF\12\0"
62C204C444628312E30292C20
4D554C46286F70292C2053544
60A00
1639 00000f01 * .text
1640 0002928E dd 8f00000ed9 pushl $L383
1641 00029294 fe 08 effffff395 callf $8,_writes
1642 0002929B # writes(" operand = ");
1643 0002929B .data 1
1644 00000f01 * L384:
1645 00000f01 * 20206F706572616E64203D200 .ascii " operand = \0"
0
1646 00000f0e * .text
1647 0002929B dd 8f00000f01 pushl $L384
1648 000292A1 fe 08 effffff388 callf $8,_writes
1649 000292A8 # write32h( sgl_value_1 );
1650 000292A8 dd effffff382 pushl _sgl_value_1
1651 000292AE fe 08 effffff37b callf $8,_write32h
1652 000292B5 # writes(", 1st store = ");
1653 000292B5 .data 1
1654 00000f0e * L385:
1655 00000f0e * 2C20202020203173742073746 .ascii ", 1st store = \0"
F7265203D2000
1656 00000f21 * .text
1657 000292B5 dd 8f00000f0e pushl $L385
1658 000292BB fe 08 effffff36e callf $8,_writes
1659 000292C2 # write32h( sgl_st_acc );
1660 000292C2 dd effffff368 pushl _sgl_st_acc
1661 000292C8 fe 08 effffff361 callf $8,_write32h
1662 000292CF # writes(", data index = ");
1663 000292CF .data 1
1664 00000f21 * L386:
1665 00000f21 * 2C2020206461746120696E646 .ascii ", data index = \0"
578203D2000
1666 00000f33 * .text
1667 000292CF dd 8f00000f21 pushl $L386
1668 000292D5 fe 08 effffff354 callf $8,_writes
1669 000292DC # writed( index );
1670 000292DC dd effffff34e pushl _index
1671 000292E2 fe 08 effffff347 callf $8,_writed
1672 000292E9 # writec('\n');
1673 000292E9 dd 0a pushl $10
1674 000292EB fe 08 effffff33e callf $8,_writec
1675 000292F2 # writes("2nd store = ");
1676 000292F2 .data 1
1677 00000f33 * L387:
1678 00000f33 * .ascii ""
1679 00000f33 * 326E642073746F7265203D200 .ascii "2nd store = \0"
0
1680 00000f40 * .text
1681 000292F2 dd 8f00000f33 pushl $L387
1682 000292F8 fe 08 effffff331 callf $8,_writes
1683 000292FF # write32h( sgl_value_6 );
1684 000292FF dd effffff32b pushl _sgl_value_6
1685 00029305 fe 08 effffff324 callf $8,_write32h
1686 0002930C # writes(", expected Acc = ");
1687 0002930C .data 1
1688 00000f40 * L388:
1689 00000f40 * 2C20206578706563746564204 .ascii ", expected Acc = \0"
16363203D2000
1690 00000f53 * .text
1691 0002930C dd 8f00000f40 pushl $L388
1692 00029312 fe 08 effffff317 callf $8,_writes
1693 00029319 # write32h( sgl_expected );
1694 00029319 dd effffff311 pushl _sgl_expected
1695 0002931F fe 08 effffff30a callf $8,_write32h
1696 00029326 # writec('\n');
1697 00029326 dd 0a pushl $10
1698 00029328 fe 08 effffff301 callf $8,_writec
1699 0002932F # }
1700 0002932F 40 ret#2
1701 00029330 .set L372,0x0
1702 00029330 L374:
1703 00029330 13 fee0 jbr L375
1704 00029333 .data
1705 00000d78 * .text
1706 00029333 00 .align 1
1707 00029334 .globl _pipe4_er_hlt
1708 00029334 _pipe4_er_hlt:
1709 00029334 0000 .word L389
1710 00029336 #
1711 00029336 #
1712 00029336 #
1713 00029336 #
1714 00029336 #
1715 00029336 # /******************************************************************************
1716 00029336 # *
1717 00029336 # * HALT ON ERROR ROUTINE
1718 00029336 # *
1719 00029336 # * halt with the necessary information saved in the registers
1720 00029336 # *
1721 00029336 # ******************************************************************************/
1722 00029336 # pipe4_er_hlt( subtest )
1723 00029336 # int subtest;
1724 00029336 # {
1725 00029336 11 6e jbr L391
1726 00029338 L392:
1727 00029338 # asm("movl _test_no,r0"); /* r0 = test number */
1728 00029338 0d effffff2f2 50 movl _test_no,r0
1729 0002933F # asm("movl _subtest,r1"); /* r1 = subtest number */
1730 0002933F 0d effffff2eb 51 movl _subtest,r1
1731 00029346 # asm("movl $1,r2"); /* r2 = error code */
1732 00029346 0d 01 52 movl $1,r2
1733 00029349 # asm("movl _cycle,r3"); /* r3 = cycle count */
1734 00029349 0d effffff2e1 53 movl _cycle,r3
1735 00029350 # asm("movl _sgl_value_1,r4"); /* r4 = sgl operand */
1736 00029350 0d effffff2da 54 movl _sgl_value_1,r4
1737 00029357 # asm("movl _sgl_st_acc,r5"); /* r5 = 1st word stored */
1738 00029357 0d effffff2d3 55 movl _sgl_st_acc,r5
1739 0002935E # asm("movl _sgl_value_6,r6"); /* r6 = 2nd word stored */
1740 0002935E 0d effffff2cc 56 movl _sgl_value_6,r6
1741 00029365 # asm("movl _sgl_expected,r7"); /* r7 = sgl expected */
1742 00029365 0d effffff2c5 57 movl _sgl_expected,r7
1743 0002936C # asm("movl _index,r8"); /* r8 = data index */
1744 0002936C 0d effffff2be 58 movl _index,r8
1745 00029373 # asm("movl _sgl_value_2,r9"); /* r9 = floating one */
1746 00029373 0d effffff2b7 59 movl _sgl_value_2,r9
1747 0002937A # if( subtest == 9 ) {
1748 0002937A 1d ad04 09 cmpl 4(fp),$9
1749 0002937E 21 10 jneq L393
1750 00029380 # asm("movl _sgl_value_5,r10"); /* r10= final SP value */
1751 00029380 0d effffff2aa 5a movl _sgl_value_5,r10
1752 00029387 # asm("movl _sgl_value_4,r11"); /* r11= expected SP value */
1753 00029387 0d effffff2a3 5b movl _sgl_value_4,r11
1754 0002938E # } else
1755 0002938E 11 14 jbr L394
1756 00029390 L393:
1757 00029390 # if( subtest == 10 ) {
1758 00029390 1d ad04 0a cmpl 4(fp),$10
1759 00029394 21 0e jneq L395
1760 00029396 # asm("movl _sgl_value_5,r10"); /* r10= final FP value */
1761 00029396 0d effffff294 5a movl _sgl_value_5,r10
1762 0002939D # asm("movl _sgl_value_4,r11"); /* r11= expected FP value */
1763 0002939D 0d effffff28d 5b movl _sgl_value_4,r11
1764 000293A4 # };
1765 000293A4 L395:
1766 000293A4 L394:
1767 000293A4 # asm(".globl _pipe4_1_hlt");
1768 000293A4 .globl _pipe4_1_hlt
1769 000293A4 # asm("_pipe4_1_hlt:"); /* PC after the halt */
1770 000293A4 _pipe4_1_hlt:
1771 000293A4 # asm("halt"); /* HALT ... */
1772 000293A4 00 halt
1773 000293A5 # } /* end of halt on error */
1774 000293A5 40 ret#2
1775 000293A6 .set L389,0x0
1776 000293A6 L391:
1777 000293A6 11 90 jbr L392
1778 00000d78 * .data
1778 00000d78 * .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.