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