|
|
Power 6/32 Unix version 1.21
1 00000000 LL0:
2 00000000 .data
3 00000278 * .text
4 00000000 .align 1
5 00000000 .globl _pipe_10
6 00000000 _pipe_10:
7 0002CCDC 0000 .word L215
8 0002CCDE # #include "fpp_defs.h"
9 0002CCDE #
10 0002CCDE #
11 0002CCDE # /*****************************************************************************
12 0002CCDE # *
13 0002CCDE # * PIPELINE TEST #10
14 0002CCDE # *
15 0002CCDE # * LDF(op1), MULF(op2), STF op3, SUBF op3, STF
16 0002CCDE # *
17 0002CCDE # * -where the operands are the fmacro1 MULF data patterns. The SUBF operand
18 0002CCDE # * is the stored result of the MULF.
19 0002CCDE # * -If the 1st STF isn't completed before the SUBF data is fetched then we
20 0002CCDE # * won't get a final accumulator of zero.
21 0002CCDE # *****************************************************************************/
22 0002CCDE # pipe_10()
23 0002CCDE # {
24 0002CCDE 13 00ee jbr L217
25 0002CCE1 L218:
26 0002CCE1 # asm(".globl _pipeline_10_t");
27 0002CCE1 .globl _pipeline_10_t
28 0002CCE1 # asm("_pipeline_10_t:");
29 0002CCE1 _pipeline_10_t:
30 0002CCE1 # if( (cycle == 1) && (prt_hdrs) ) /* print headers on 1st cycle */
31 0002CCE1 1d effffffff5 01 cmpl _cycle,$1
32 0002CCE8 21 15 jneq L219
33 0002CCEA 5d efffffffec tstl _prt_hdrs
34 0002CCF0 31 0d jeql L219
35 0002CCF2 # writes(" PIPE_10");
36 0002CCF2 .data 1
37 00000278 * L221:
38 00000278 * 20504950455F313000 .ascii " PIPE_10\0"
39 00000281 * .text
40 0002CCF2 dd 8f00000278 pushl $L221
41 0002CCF8 fe 08 efffffffdd callf $8,_writes
42 0002CCFF # force_loop = FALSE; /* clear force_loop flag */
43 0002CCFF L219:
44 0002CCFF 4d efffffffd7 clrl _force_loop
45 0002CD05 # for( index = 0; index <= max_mulf_1_index; index++ )
46 0002CD05 4d efffffffd1 clrl _index
47 0002CD0B L224:
48 0002CD0B 1d efffffffcb efffffffc6 cmpl _index,_max_mulf_1_index
49 0002CD16 51 03 13 00ad jgtr L223
50 0002CD1B # {
51 0002CD1B # sgl_value_1 = mulf_1_data[index].op_1; /* get the data */
52 0002CD1B 5c 0c efffffffba 50 mull3 $12,_index,r0
53 0002CD23 0d e000000000 efffffffae movl _mulf_1_data(r0),_sgl_value_1
54 0002CD2E # sgl_value_2 = mulf_1_data[index].op_2; /* operands */
55 0002CD2E 5c 0c efffffffa7 50 mull3 $12,_index,r0
56 0002CD36 0d e000000004 efffffff9b movl _mulf_1_data+4(r0),_sgl_value_2
57 0002CD41 # sgl_expected = mulf_1_data[index].exp;
58 0002CD41 5c 0c efffffff94 50 mull3 $12,_index,r0
59 0002CD49 0d e000000008 efffffff88 movl _mulf_1_data+8(r0),_sgl_expected
60 0002CD54 # /*
61 0002CD54 # * This is the start of the LOOP ON ERROR section
62 0002CD54 # */
63 0002CD54 # asm("_pipe10_1_lp:");
64 0002CD54 _pipe10_1_lp:
65 0002CD54 # asm("ldf _sgl_value_1"); /* get the 1st operand */
66 0002CD54 06 efffffff82 ldf _sgl_value_1
67 0002CD5A # asm("mulf _sgl_value_2"); /* multiply by the 2nd op. */
68 0002CD5A e6 efffffff7c mulf _sgl_value_2
69 0002CD60 # asm("stf _sgl_value_3"); /* save the MULF result */
70 0002CD60 26 efffffff76 stf _sgl_value_3
71 0002CD66 # asm("subf _sgl_value_3"); /* and subtract it again */
72 0002CD66 d6 efffffff70 subf _sgl_value_3
73 0002CD6C # asm("stf _sgl_st_acc"); /* save the final result */
74 0002CD6C 26 efffffff6a stf _sgl_st_acc
75 0002CD72 # if( force_loop )
76 0002CD72 5d efffffff64 tstl _force_loop
77 0002CD78 31 02 jeql L225
78 0002CD7A # asm("brb _pipe10_1_lp");; /* loop on the error */
79 0002CD7A 11 d8 brb _pipe10_1_lp
80 0002CD7C L225:
81 0002CD7C # /*
82 0002CD7C # * Verify the results
83 0002CD7C # */
84 0002CD7C # if( sgl_st_acc ) { /* the Acc s/b cleared */
85 0002CD7C 5d efffffff5a tstl _sgl_st_acc
86 0002CD82 31 3b jeql L226
87 0002CD84 # errcnt++; /* bump the error count */
88 0002CD84 6d efffffff52 incl _errcnt
89 0002CD8A # if ( prt_error )
90 0002CD8A 5d efffffff4c tstl _prt_error
91 0002CD90 31 07 jeql L227
92 0002CD92 # pipe10_print(); /* print the error mesage */
93 0002CD92 fe 04 ef00000039 callf $4,_pipe10_print
94 0002CD99 # if ( halt_flg )
95 0002CD99 L227:
96 0002CD99 5d efffffff3d tstl _halt_flg
97 0002CD9F 31 09 jeql L229
98 0002CDA1 # pipe10_halt( 1 ); /* halt on the error */
99 0002CDA1 dd 01 pushl $1
100 0002CDA3 fe 08 ef00000156 callf $8,_pipe10_halt
101 0002CDAA # if ( loop_on_err ) {
102 0002CDAA L229:
103 0002CDAA 5d efffffff2c tstl _loop_on_err
104 0002CDB0 31 0d jeql L231
105 0002CDB2 # force_loop = TRUE;
106 0002CDB2 0d 01 efffffff23 movl $1,_force_loop
107 0002CDB9 # asm("jmp _pipe10_1_lp");;
108 0002CDB9 71 efffffff95 jmp _pipe10_1_lp
109 0002CDBF # }
110 0002CDBF # }
111 0002CDBF L231:
112 0002CDBF # }
113 0002CDBF L226:
114 0002CDBF L222:
115 0002CDBF 6d efffffff17 incl _index
116 0002CDC5 13 ff43 jbr L224
117 0002CDC8 L223:
118 0002CDC8 # asm("jmp *return"); /* return to the test monitor */
119 0002CDC8 71 ffffffff0e jmp *return
120 0002CDCE # }
121 0002CDCE 40 ret#2
122 0002CDCF .set L215,0x0
123 0002CDCF L217:
124 0002CDCF 13 ff0f jbr L218
125 0002CDD2 .data
126 00000278 * .text
127 0002CDD2 .align 1
128 0002CDD2 .globl _pipe10_print
129 0002CDD2 _pipe10_print:
130 0002CDD2 0000 .word L232
131 0002CDD4 #
132 0002CDD4 #
133 0002CDD4 #
134 0002CDD4 #
135 0002CDD4 # /*
136 0002CDD4 # **************************************************************************
137 0002CDD4 # *
138 0002CDD4 # * print an error message of the form
139 0002CDD4 # *
140 0002CDD4 # * cycle: xx Test xx, Error subtracting the stored data (op3), index = xx
141 0002CDD4 # * test sequence = LDF(op1), MULF(op2), STF(op3), SUBF(op3), STF
142 0002CDD4 # * operand 1 = xxxxxxxx, final Acc = xxxxxxxx, data index = dd
143 0002CDD4 # * operand 2 = xxxxxxxx, expected Acc = xxxxxxxx
144 0002CDD4 # * operand 3 = xxxxxxxx, expected op3 = xxxxxxxx
145 0002CDD4 # **************************************************************************/
146 0002CDD4 # pipe10_print()
147 0002CDD4 # {
148 0002CDD4 13 0125 jbr L234
149 0002CDD7 L235:
150 0002CDD7 # writes(" \n"); /* start a new print line */
151 0002CDD7 .data 1
152 00000281 * L236:
153 00000281 * 200A00 .ascii " \12\0"
154 00000284 * .text
155 0002CDD7 dd 8f00000281 pushl $L236
156 0002CDDD fe 08 effffffef8 callf $8,_writes
157 0002CDE4 # writes("cycle: ");
158 0002CDE4 .data 1
159 00000284 * L237:
160 00000284 * 6379636C653A2000 .ascii "cycle: \0"
161 0000028c * .text
162 0002CDE4 dd 8f00000284 pushl $L237
163 0002CDEA fe 08 effffffeeb callf $8,_writes
164 0002CDF1 # writed( cycle );
165 0002CDF1 dd effffffee5 pushl _cycle
166 0002CDF7 fe 08 effffffede callf $8,_writed
167 0002CDFE # writes(" Test ");
168 0002CDFE .data 1
169 0000028c * L239:
170 0000028c * 2020546573742000 .ascii " Test \0"
171 00000294 * .text
172 0002CDFE dd 8f0000028c pushl $L239
173 0002CE04 fe 08 effffffed1 callf $8,_writes
174 0002CE0B # writed( test_no );
175 0002CE0B dd effffffecb pushl _test_no
176 0002CE11 fe 08 effffffec4 callf $8,_writed
177 0002CE18 # writes(" (Pipe 10), error\n");
178 0002CE18 .data 1
179 00000294 * L240:
180 00000294 * 2020202850697065203130292 .ascii " (Pipe 10), error\12\0"
C206572726F720A00
181 000002a9 * .text
182 0002CE18 dd 8f00000294 pushl $L240
183 0002CE1E fe 08 effffffeb7 callf $8,_writes
184 0002CE25 # writes(" LDF(op1), MULF(op2), STF(op3), SUBF(op3), STF\n");
185 0002CE25 .data 1
186 000002a9 * L241:
187 000002a9 * 204C4446286F7031292C204D5 .ascii " LDF(op1), MULF(op2), STF(op3), SUBF(op3), STF\12\0"
54C46286F7032292C20535446
286F7033292C2053554246286
F7033292C205354460A00
188 000002d9 * .text
189 0002CE25 dd 8f000002a9 pushl $L241
190 0002CE2B fe 08 effffffeaa callf $8,_writes
191 0002CE32 # writes("operand 1 = ");
192 0002CE32 .data 1
193 000002d9 * L242:
194 000002d9 * 6F706572616E642031203D200 .ascii "operand 1 = \0"
0
195 000002e6 * .text
196 0002CE32 dd 8f000002d9 pushl $L242
197 0002CE38 fe 08 effffffe9d callf $8,_writes
198 0002CE3F # write32h( sgl_value_1 );
199 0002CE3F dd effffffe97 pushl _sgl_value_1
200 0002CE45 fe 08 effffffe90 callf $8,_write32h
201 0002CE4C # writes(", final Acc = ");
202 0002CE4C .data 1
203 000002e6 * L244:
204 000002e6 * 2C202020202066696E616C204 .ascii ", final Acc = \0"
16363203D2000
205 000002f9 * .text
206 0002CE4C dd 8f000002e6 pushl $L244
207 0002CE52 fe 08 effffffe83 callf $8,_writes
208 0002CE59 # write32h( sgl_st_acc );
209 0002CE59 dd effffffe7d pushl _sgl_st_acc
210 0002CE5F fe 08 effffffe76 callf $8,_write32h
211 0002CE66 # writes(", data index = ");
212 0002CE66 .data 1
213 000002f9 * L245:
214 000002f9 * 2C2020206461746120696E646 .ascii ", data index = \0"
578203D2000
215 0000030b * .text
216 0002CE66 dd 8f000002f9 pushl $L245
217 0002CE6C fe 08 effffffe69 callf $8,_writes
218 0002CE73 # writed( index );
219 0002CE73 dd effffffe63 pushl _index
220 0002CE79 fe 08 effffffe5c callf $8,_writed
221 0002CE80 # writec('\n');
222 0002CE80 dd 0a pushl $10
223 0002CE82 fe 08 effffffe53 callf $8,_writec
224 0002CE89 # writes("operand 2 = ");
225 0002CE89 .data 1
226 0000030b * L247:
227 0000030b * 6F706572616E642032203D200 .ascii "operand 2 = \0"
0
228 00000318 * .text
229 0002CE89 dd 8f0000030b pushl $L247
230 0002CE8F fe 08 effffffe46 callf $8,_writes
231 0002CE96 # write32h( sgl_value_2 );
232 0002CE96 dd effffffe40 pushl _sgl_value_2
233 0002CE9C fe 08 effffffe39 callf $8,_write32h
234 0002CEA3 # writes(", expected Acc = ");
235 0002CEA3 .data 1
236 00000318 * L248:
237 00000318 * 2C20206578706563746564204 .ascii ", expected Acc = \0"
16363203D2000
238 0000032b * .text
239 0002CEA3 dd 8f00000318 pushl $L248
240 0002CEA9 fe 08 effffffe2c callf $8,_writes
241 0002CEB0 # write32h( 0 );
242 0002CEB0 dd 00 pushl $0
243 0002CEB2 fe 08 effffffe23 callf $8,_write32h
244 0002CEB9 # writec('\n');
245 0002CEB9 dd 0a pushl $10
246 0002CEBB fe 08 effffffe1a callf $8,_writec
247 0002CEC2 # writes("operand 3 = ");
248 0002CEC2 .data 1
249 0000032b * L249:
250 0000032b * 6F706572616E642033203D200 .ascii "operand 3 = \0"
0
251 00000338 * .text
252 0002CEC2 dd 8f0000032b pushl $L249
253 0002CEC8 fe 08 effffffe0d callf $8,_writes
254 0002CECF # write32h( sgl_value_3 );
255 0002CECF dd effffffe07 pushl _sgl_value_3
256 0002CED5 fe 08 effffffe00 callf $8,_write32h
257 0002CEDC # writes(", expected op3 = ");
258 0002CEDC .data 1
259 00000338 * L250:
260 00000338 * 2C20206578706563746564206 .ascii ", expected op3 = \0"
F7033203D2000
261 0000034b * .text
262 0002CEDC dd 8f00000338 pushl $L250
263 0002CEE2 fe 08 effffffdf3 callf $8,_writes
264 0002CEE9 # write32h( 0 );
265 0002CEE9 dd 00 pushl $0
266 0002CEEB fe 08 effffffdea callf $8,_write32h
267 0002CEF2 # writec('\n');
268 0002CEF2 dd 0a pushl $10
269 0002CEF4 fe 08 effffffde1 callf $8,_writec
270 0002CEFB # }
271 0002CEFB 40 ret#2
272 0002CEFC .set L232,0x0
273 0002CEFC L234:
274 0002CEFC 13 fed8 jbr L235
275 0002CEFF .data
276 00000278 * .text
277 0002CEFF 00 .align 1
278 0002CF00 .globl _pipe10_halt
279 0002CF00 _pipe10_halt:
280 0002CF00 0000 .word L251
281 0002CF02 #
282 0002CF02 #
283 0002CF02 #
284 0002CF02 # /*
285 0002CF02 # **************************************************************************
286 0002CF02 # *
287 0002CF02 # * HALT ON AN ERROR
288 0002CF02 # *
289 0002CF02 # **************************************************************************
290 0002CF02 # */
291 0002CF02 # pipe10_halt()
292 0002CF02 # {
293 0002CF02 11 4d jbr L253
294 0002CF04 L254:
295 0002CF04 # sgl_value_4 = 0;
296 0002CF04 4d effffffdd2 clrl _sgl_value_4
297 0002CF0A # asm("movl _test_no,r0"); /* r0 = test number */
298 0002CF0A 0d effffffdcc 50 movl _test_no,r0
299 0002CF11 # asm("movl $1,r1"); /* r1 = subtest number */
300 0002CF11 0d 01 51 movl $1,r1
301 0002CF14 # asm("movl $1,r2"); /* r2 = error code */
302 0002CF14 0d 01 52 movl $1,r2
303 0002CF17 # asm("movl _cycle,r3"); /* r3 = cycle count */
304 0002CF17 0d effffffdbf 53 movl _cycle,r3
305 0002CF1E # asm("movl _sgl_value_1,r4"); /* r4 = sgl operand #1 */
306 0002CF1E 0d effffffdb8 54 movl _sgl_value_1,r4
307 0002CF25 # asm("movl _sgl_value_2,r5"); /* r5 = sgl operand #2 */
308 0002CF25 0d effffffdb1 55 movl _sgl_value_2,r5
309 0002CF2C # asm("movl _sgl_value_3,r6"); /* r6 = sgl operand #3 */
310 0002CF2C 0d effffffdaa 56 movl _sgl_value_3,r6
311 0002CF33 # asm("movl _sgl_st_acc,r7"); /* r7 = sgl stored */
312 0002CF33 0d effffffda3 57 movl _sgl_st_acc,r7
313 0002CF3A # asm("movl _sgl_expected,r8"); /* r8 = sgl expected */
314 0002CF3A 0d effffffd9c 58 movl _sgl_expected,r8
315 0002CF41 # asm("movl _sgl_value_4,r9"); /* r9 = op3 expected */
316 0002CF41 0d effffffd95 59 movl _sgl_value_4,r9
317 0002CF48 # asm("movl _index,r10"); /* r10 = data index */
318 0002CF48 0d effffffd8e 5a movl _index,r10
319 0002CF4F # asm("halt"); /* HALT ... */
320 0002CF4F 00 halt
321 0002CF50 # }
322 0002CF50 40 ret#2
323 0002CF51 .set L251,0x0
324 0002CF51 L253:
325 0002CF51 11 b1 jbr L254
326 0002CF53 .data
326 00059C2F .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.