|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00000c00 * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _pipe_1
6: 6 00000000 _pipe_1:
7: 7 0002603C 0000 .word L215
8: 8 0002603E #
9: 9 0002603E #
10: 10 0002603E # #include "fpp_defs.h"
11: 11 0002603E #
12: 12 0002603E #
13: 13 0002603E # /*****************************************************************************
14: 14 0002603E # *
15: 15 0002603E # * PIPELINE TEST #1 MONITOR
16: 16 0002603E # *
17: 17 0002603E # * This test will do:
18: 18 0002603E # *
19: 19 0002603E # * LDF(x), SUBF(x), SUBF(x), ADDF(x), ADDF(x), STF
20: 20 0002603E # *
21: 21 0002603E # * where the x's are the fmacro1 LDF data patterns.
22: 22 0002603E # *****************************************************************************/
23: 23 0002603E # pipe_1()
24: 24 0002603E # {
25: 25 0002603E 13 00a8 jbr L217
26: 26 00026041 L218:
27: 27 00026041 # asm(".globl _pipeline_1_t");
28: 28 00026041 .globl _pipeline_1_t
29: 29 00026041 # asm("_pipeline_1_t:"); /* entry address */
30: 30 00026041 _pipeline_1_t:
31: 31 00026041 # if( (cycle == 1) && (prt_hdrs) ) /* print headers on 1st cycle */
32: 32 00026041 1d effffffff5 01 cmpl _cycle,$1
33: 33 00026048 21 15 jneq L219
34: 34 0002604A 5d efffffffec tstl _prt_hdrs
35: 35 00026050 31 0d jeql L219
36: 36 00026052 # {
37: 37 00026052 # writes("\n PIPE_1 ");
38: 38 00026052 .data 1
39: 39 00000c00 * L221:
40: 40 00000c00 * 0A20504950455F312000 .ascii "\12 PIPE_1 \0"
41: 41 00000c0a * .text
42: 42 00026052 dd 8f00000c00 pushl $L221
43: 43 00026058 fe 08 efffffffdd callf $8,_writes
44: 44 0002605F # }
45: 45 0002605F # subtest = 1;
46: 46 0002605F L219:
47: 47 0002605F 0d 01 efffffffd6 movl $1,_subtest
48: 48 00026066 # pipe1_1(); /* data in REGs, no NOPs */
49: 49 00026066 fe 04 ef0000007f callf $4,_pipe1_1
50: 50 0002606D # subtest++; /* increment subtest num */
51: 51 0002606D 6d efffffffc9 incl _subtest
52: 52 00026073 # pipe1_2(); /* data in REGs, 1 NOP */
53: 53 00026073 fe 04 ef00000140 callf $4,_pipe1_2
54: 54 0002607A # subtest++; /* increment subtest num */
55: 55 0002607A 6d efffffffbc incl _subtest
56: 56 00026080 # pipe1_3(); /* data in REGs, 2 NOPs */
57: 57 00026080 fe 04 ef00000205 callf $4,_pipe1_3
58: 58 00026087 # subtest++; /* increment subtest num */
59: 59 00026087 6d efffffffaf incl _subtest
60: 60 0002608D # pipe1_4(); /* data in REGs, 3 NOPs */
61: 61 0002608D fe 04 ef000002d0 callf $4,_pipe1_4
62: 62 00026094 # subtest++; /* increment subtest num */
63: 63 00026094 6d efffffffa2 incl _subtest
64: 64 0002609A # pipe1_5(); /* data in CACHE, no NOPs */
65: 65 0002609A fe 04 ef0000039f callf $4,_pipe1_5
66: 66 000260A1 # subtest++; /* increment subtest num */
67: 67 000260A1 6d efffffff95 incl _subtest
68: 68 000260A7 # pipe1_6(); /* data in CACHE, 1 NOP */
69: 69 000260A7 fe 04 ef0000046a callf $4,_pipe1_6
70: 70 000260AE # subtest++; /* increment subtest num */
71: 71 000260AE 6d efffffff88 incl _subtest
72: 72 000260B4 # pipe1_7(); /* data in CACHE, 2 NOPs */
73: 73 000260B4 fe 04 ef00000539 callf $4,_pipe1_7
74: 74 000260BB # subtest++; /* increment subtest num */
75: 75 000260BB 6d efffffff7b incl _subtest
76: 76 000260C1 # pipe1_8(); /* data in CACHE, 3 NOPs */
77: 77 000260C1 fe 04 ef0000060e callf $4,_pipe1_8
78: 78 000260C8 # subtest++; /* increment subtest num */
79: 79 000260C8 6d efffffff6e incl _subtest
80: 80 000260CE # pipe1_9(); /* data on STACK, no NOPs */
81: 81 000260CE fe 04 ef000006e7 callf $4,_pipe1_9
82: 82 000260D5 # subtest++; /* increment subtest num */
83: 83 000260D5 6d efffffff61 incl _subtest
84: 84 000260DB # pipe1_10(); /* data via FP no NOPs */
85: 85 000260DB fe 04 ef00000858 callf $4,_pipe1_10
86: 86 000260E2 # asm("jmp *return"); /* return to the test monitor */
87: 87 000260E2 71 ffffffff54 jmp *return
88: 88 000260E8 # }
89: 89 000260E8 40 ret#2
90: 90 000260E9 .set L215,0x0
91: 91 000260E9 L217:
92: 92 000260E9 13 ff55 jbr L218
93: 93 000260EC .data
94: 94 00000c00 * .text
95: 95 000260EC .align 1
96: 96 000260EC .globl _pipe1_1
97: 97 000260EC _pipe1_1:
98: 98 000260EC 0000 .word L232
99: 99 000260EE #
100: 100 000260EE #
101: 101 000260EE #
102: 102 000260EE #
103: 103 000260EE #
104: 104 000260EE #
105: 105 000260EE # /************************************************************************
106: 106 000260EE # *
107: 107 000260EE # * SUBTEST 1
108: 108 000260EE # * data in registers, no NO-OPs
109: 109 000260EE # *
110: 110 000260EE # ************************************************************************/
111: 111 000260EE # pipe1_1()
112: 112 000260EE # {
113: 113 000260EE 13 00c5 jbr L234
114: 114 000260F1 L235:
115: 115 000260F1 # force_loop = FALSE; /* clear the force_loop flg */
116: 116 000260F1 4d efffffff45 clrl _force_loop
117: 117 000260F7 # index = 0;
118: 118 000260F7 4d efffffff3f clrl _index
119: 119 000260FD # do
120: 120 000260FD L238:
121: 121 000260FD # {
122: 122 000260FD # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
123: 123 000260FD 0d efffffff39 50 movl _index,r0
124: 124 00026104 48 03 50 50 shll $3,r0,r0
125: 125 00026108 0d e000000000 efffffff29 movl _ldf_1_data(r0),_sgl_value_1
126: 126 00026113 # sgl_expected = ldf_1_data[index].exp; /* get expected results */
127: 127 00026113 0d efffffff23 50 movl _index,r0
128: 128 0002611A 48 03 50 50 shll $3,r0,r0
129: 129 0002611E 0d e000000004 efffffff13 movl _ldf_1_data+4(r0),_sgl_expected
130: 130 00026129 # /*
131: 131 00026129 # * If LOOP ON ERROR is set, this is the loop for this subtest.
132: 132 00026129 # * The force loop flag is set after the first error.
133: 133 00026129 # */
134: 134 00026129 # asm("_pipe1_1_lp1:");
135: 135 00026129 _pipe1_1_lp1:
136: 136 00026129 # asm("movl _sgl_value_1,r4"); /* move the data to r4 */
137: 137 00026129 0d efffffff0d 54 movl _sgl_value_1,r4
138: 138 00026130 # asm("ldf r4"); /* load the operand */
139: 139 00026130 06 54 ldf r4
140: 140 00026132 # asm("subf r4"); /* subtract it (twice ) */
141: 141 00026132 d6 54 subf r4
142: 142 00026134 # asm("subf r4");
143: 143 00026134 d6 54 subf r4
144: 144 00026136 # asm("addf r4"); /* add it back (twice) */
145: 145 00026136 c6 54 addf r4
146: 146 00026138 # asm("addf r4");
147: 147 00026138 c6 54 addf r4
148: 148 0002613A # asm("stf r5"); /* store the result */
149: 149 0002613A 26 55 stf r5
150: 150 0002613C # if ( force_loop );
151: 151 0002613C 5d effffffefa tstl _force_loop
152: 152 00026142 31 00 jeql L239
153: 153 00026144 # asm("brb _pipe1_1_lp1");; /* loop on the error */
154: 154 00026144 L239:
155: 155 00026144 11 e3 brb _pipe1_1_lp1
156: 156 00026146 # /*
157: 157 00026146 # * verify the results
158: 158 00026146 # */
159: 159 00026146 # asm("movl r5,_sgl_st_acc"); /* get the result */
160: 160 00026146 0d 55 effffffeef movl r5,_sgl_st_acc
161: 161 0002614D # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */
162: 162 0002614D 1d effffffee9 effffffee4 cmpl _sgl_st_acc,_sgl_expected
163: 163 00026158 31 42 jeql L240
164: 164 0002615A # {
165: 165 0002615A # errcnt++; /* bump the error count */
166: 166 0002615A 6d effffffedc incl _errcnt
167: 167 00026160 # if ( prt_error )
168: 168 00026160 5d effffffed6 tstl _prt_error
169: 169 00026166 31 0d jeql L241
170: 170 00026168 # print_pipe1_er("Reg. Data, no NO-OPs");
171: 171 00026168 .data 1
172: 172 00000c0a * L243:
173: 173 00000c0a * 5265672E20446174612C206E6 .ascii "Reg. Data, no NO-OPs\0"
174: F204E4F2D4F507300
175: 174 00000c1f * .text
176: 175 00026168 dd 8f00000c0a pushl $L243
177: 176 0002616E fe 08 ef00000955 callf $8,_print_pipe1_er
178: 177 00026175 # if ( halt_flg ) /* halt on error? */
179: 178 00026175 L241:
180: 179 00026175 5d effffffec1 tstl _halt_flg
181: 180 0002617B 31 0d jeql L244
182: 181 0002617D # pipe1_er_hlt( subtest );
183: 182 0002617D dd effffffeb9 pushl _subtest
184: 183 00026183 fe 08 ef00000a4c callf $8,_pipe1_er_hlt
185: 184 0002618A # if ( loop_on_err ) {
186: 185 0002618A L244:
187: 186 0002618A 5d effffffeac tstl _loop_on_err
188: 187 00026190 31 0a jeql L246
189: 188 00026192 # force_loop = TRUE; /* set the force loop flag */
190: 189 00026192 0d 01 effffffea3 movl $1,_force_loop
191: 190 00026199 # asm("brw _pipe1_1_lp1"); /* and loop */
192: 191 00026199 13 ff8d brw _pipe1_1_lp1
193: 192 0002619C # }
194: 193 0002619C # } /* end of compare error */
195: 194 0002619C L246:
196: 195 0002619C # } while( index++ < max_ldf_1_index );
197: 196 0002619C L240:
198: 197 0002619C L237:
199: 198 0002619C 0d effffffe9a 50 movl _index,r0
200: 199 000261A3 6d effffffe93 incl _index
201: 200 000261A9 1d 50 effffffe8c cmpl r0,_max_ldf_1_index
202: 201 000261B0 81 03 13 ff48 jlss L238
203: 202 000261B5 L236:
204: 203 000261B5 # } /* end of subtest 1 */
205: 204 000261B5 40 ret#2
206: 205 000261B6 .set L232,0x0
207: 206 000261B6 L234:
208: 207 000261B6 13 ff38 jbr L235
209: 208 000261B9 .data
210: 209 00000c00 * .text
211: 210 000261B9 00 .align 1
212: 211 000261BA .globl _pipe1_2
213: 212 000261BA _pipe1_2:
214: 213 000261BA 0000 .word L247
215: 214 000261BC #
216: 215 000261BC #
217: 216 000261BC #
218: 217 000261BC #
219: 218 000261BC #
220: 219 000261BC #
221: 220 000261BC # /************************************************************************
222: 221 000261BC # *
223: 222 000261BC # * SUBTEST 2
224: 223 000261BC # * data in registers, 1 NO-OP
225: 224 000261BC # *
226: 225 000261BC # ************************************************************************/
227: 226 000261BC # pipe1_2()
228: 227 000261BC # {
229: 228 000261BC 13 00ca jbr L249
230: 229 000261BF L250:
231: 230 000261BF # force_loop = FALSE; /* clear force_loop flag */
232: 231 000261BF 4d effffffe77 clrl _force_loop
233: 232 000261C5 # index = 0;
234: 233 000261C5 4d effffffe71 clrl _index
235: 234 000261CB # do
236: 235 000261CB L253:
237: 236 000261CB # {
238: 237 000261CB # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
239: 238 000261CB 0d effffffe6b 50 movl _index,r0
240: 239 000261D2 48 03 50 50 shll $3,r0,r0
241: 240 000261D6 0d e000000000 effffffe5b movl _ldf_1_data(r0),_sgl_value_1
242: 241 000261E1 # sgl_expected = ldf_1_data[index].exp; /* get expected results */
243: 242 000261E1 0d effffffe55 50 movl _index,r0
244: 243 000261E8 48 03 50 50 shll $3,r0,r0
245: 244 000261EC 0d e000000004 effffffe45 movl _ldf_1_data+4(r0),_sgl_expected
246: 245 000261F7 # /*
247: 246 000261F7 # * If LOOP ON ERROR is set, this is the loop for this subtest.
248: 247 000261F7 # * The force loop flag is set after the first error.
249: 248 000261F7 # */
250: 249 000261F7 # asm("_pipe1_2_lp1:");
251: 250 000261F7 _pipe1_2_lp1:
252: 251 000261F7 # asm("movl _sgl_value_1,r4"); /* move the data to r4 */
253: 252 000261F7 0d effffffe3f 54 movl _sgl_value_1,r4
254: 253 000261FE # asm("ldf r4"); /* load the data operand */
255: 254 000261FE 06 54 ldf r4
256: 255 00026200 # asm("nop");
257: 256 00026200 10 nop
258: 257 00026201 # asm("subf r4"); /* subtract the data (2xs) */
259: 258 00026201 d6 54 subf r4
260: 259 00026203 # asm("nop");
261: 260 00026203 10 nop
262: 261 00026204 # asm("subf r4");
263: 262 00026204 d6 54 subf r4
264: 263 00026206 # asm("nop");
265: 264 00026206 10 nop
266: 265 00026207 # asm("addf r4"); /* add it back (2xs) */
267: 266 00026207 c6 54 addf r4
268: 267 00026209 # asm("nop");
269: 268 00026209 10 nop
270: 269 0002620A # asm("addf r4");
271: 270 0002620A c6 54 addf r4
272: 271 0002620C # asm("nop");
273: 272 0002620C 10 nop
274: 273 0002620D # asm("stf r5"); /* store the result */
275: 274 0002620D 26 55 stf r5
276: 275 0002620F # if ( force_loop );
277: 276 0002620F 5d effffffe27 tstl _force_loop
278: 277 00026215 31 00 jeql L254
279: 278 00026217 # asm("brb _pipe1_2_lp1");; /* loop on the error */
280: 279 00026217 L254:
281: 280 00026217 11 de brb _pipe1_2_lp1
282: 281 00026219 # /*
283: 282 00026219 # * verify the results
284: 283 00026219 # */
285: 284 00026219 # asm("movl r5,_sgl_st_acc"); /* get the result */
286: 285 00026219 0d 55 effffffe1c movl r5,_sgl_st_acc
287: 286 00026220 # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */
288: 287 00026220 1d effffffe16 effffffe11 cmpl _sgl_st_acc,_sgl_expected
289: 288 0002622B 31 42 jeql L255
290: 289 0002622D # {
291: 290 0002622D # errcnt++; /* bump the error count */
292: 291 0002622D 6d effffffe09 incl _errcnt
293: 292 00026233 # if ( prt_error )
294: 293 00026233 5d effffffe03 tstl _prt_error
295: 294 00026239 31 0d jeql L256
296: 295 0002623B # print_pipe1_er("Reg. Data, 1 NO-OP");
297: 296 0002623B .data 1
298: 297 00000c1f * L257:
299: 298 00000c1f * 5265672E20446174612C20312 .ascii "Reg. Data, 1 NO-OP\0"
300: 04E4F2D4F5000
301: 299 00000c32 * .text
302: 300 0002623B dd 8f00000c1f pushl $L257
303: 301 00026241 fe 08 ef00000882 callf $8,_print_pipe1_er
304: 302 00026248 # if ( halt_flg ) /* halt on error? */
305: 303 00026248 L256:
306: 304 00026248 5d effffffdee tstl _halt_flg
307: 305 0002624E 31 0d jeql L258
308: 306 00026250 # pipe1_er_hlt( subtest );
309: 307 00026250 dd effffffde6 pushl _subtest
310: 308 00026256 fe 08 ef00000979 callf $8,_pipe1_er_hlt
311: 309 0002625D # if ( loop_on_err ) {
312: 310 0002625D L258:
313: 311 0002625D 5d effffffdd9 tstl _loop_on_err
314: 312 00026263 31 0a jeql L259
315: 313 00026265 # force_loop = TRUE; /* set the force loop flag */
316: 314 00026265 0d 01 effffffdd0 movl $1,_force_loop
317: 315 0002626C # asm("brw _pipe1_2_lp1"); /* and loop */
318: 316 0002626C 13 ff88 brw _pipe1_2_lp1
319: 317 0002626F # }
320: 318 0002626F # } /* end of compare error */
321: 319 0002626F L259:
322: 320 0002626F # } while( index++ < max_ldf_1_index );
323: 321 0002626F L255:
324: 322 0002626F L252:
325: 323 0002626F 0d effffffdc7 50 movl _index,r0
326: 324 00026276 6d effffffdc0 incl _index
327: 325 0002627C 1d 50 effffffdb9 cmpl r0,_max_ldf_1_index
328: 326 00026283 81 03 13 ff43 jlss L253
329: 327 00026288 L251:
330: 328 00026288 # } /* end of subtest 2 */
331: 329 00026288 40 ret#2
332: 330 00026289 .set L247,0x0
333: 331 00026289 L249:
334: 332 00026289 13 ff33 jbr L250
335: 333 0002628C .data
336: 334 00000c00 * .text
337: 335 0002628C .align 1
338: 336 0002628C .globl _pipe1_3
339: 337 0002628C _pipe1_3:
340: 338 0002628C 0000 .word L260
341: 339 0002628E #
342: 340 0002628E #
343: 341 0002628E #
344: 342 0002628E #
345: 343 0002628E #
346: 344 0002628E #
347: 345 0002628E # /************************************************************************
348: 346 0002628E # *
349: 347 0002628E # * SUBTEST 3
350: 348 0002628E # * data in registers, 2 NO-OPs
351: 349 0002628E # *
352: 350 0002628E # ************************************************************************/
353: 351 0002628E # pipe1_3()
354: 352 0002628E # {
355: 353 0002628E 13 00cf jbr L262
356: 354 00026291 L263:
357: 355 00026291 # force_loop = FALSE; /* clear force_loop flag */
358: 356 00026291 4d effffffda5 clrl _force_loop
359: 357 00026297 # index = 0;
360: 358 00026297 4d effffffd9f clrl _index
361: 359 0002629D # do
362: 360 0002629D L266:
363: 361 0002629D # {
364: 362 0002629D # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
365: 363 0002629D 0d effffffd99 50 movl _index,r0
366: 364 000262A4 48 03 50 50 shll $3,r0,r0
367: 365 000262A8 0d e000000000 effffffd89 movl _ldf_1_data(r0),_sgl_value_1
368: 366 000262B3 # sgl_expected = ldf_1_data[index].exp; /* get expected results */
369: 367 000262B3 0d effffffd83 50 movl _index,r0
370: 368 000262BA 48 03 50 50 shll $3,r0,r0
371: 369 000262BE 0d e000000004 effffffd73 movl _ldf_1_data+4(r0),_sgl_expected
372: 370 000262C9 # /*
373: 371 000262C9 # * If LOOP ON ERROR is set, this is the loop for this subtest.
374: 372 000262C9 # * The force loop flag is set after the first error.
375: 373 000262C9 # */
376: 374 000262C9 # asm("_pipe1_3_lp1:");
377: 375 000262C9 _pipe1_3_lp1:
378: 376 000262C9 # asm("movl _sgl_value_1,r4"); /* move the data to r4 */
379: 377 000262C9 0d effffffd6d 54 movl _sgl_value_1,r4
380: 378 000262D0 # asm("ldf r4"); /* loadthe operand */
381: 379 000262D0 06 54 ldf r4
382: 380 000262D2 # asm("nop");
383: 381 000262D2 10 nop
384: 382 000262D3 # asm("nop");
385: 383 000262D3 10 nop
386: 384 000262D4 # asm("subf r4"); /* subtract the data (2xs) */
387: 385 000262D4 d6 54 subf r4
388: 386 000262D6 # asm("nop");
389: 387 000262D6 10 nop
390: 388 000262D7 # asm("nop");
391: 389 000262D7 10 nop
392: 390 000262D8 # asm("subf r4");
393: 391 000262D8 d6 54 subf r4
394: 392 000262DA # asm("nop");
395: 393 000262DA 10 nop
396: 394 000262DB # asm("nop");
397: 395 000262DB 10 nop
398: 396 000262DC # asm("addf r4"); /* add it back (2xs) */
399: 397 000262DC c6 54 addf r4
400: 398 000262DE # asm("nop");
401: 399 000262DE 10 nop
402: 400 000262DF # asm("nop");
403: 401 000262DF 10 nop
404: 402 000262E0 # asm("addf r4");
405: 403 000262E0 c6 54 addf r4
406: 404 000262E2 # asm("nop");
407: 405 000262E2 10 nop
408: 406 000262E3 # asm("nop");
409: 407 000262E3 10 nop
410: 408 000262E4 # asm("stf r5"); /* store the result */
411: 409 000262E4 26 55 stf r5
412: 410 000262E6 # if ( force_loop );
413: 411 000262E6 5d effffffd50 tstl _force_loop
414: 412 000262EC 31 00 jeql L267
415: 413 000262EE # asm("brb _pipe1_3_lp1");; /* loop on the error */
416: 414 000262EE L267:
417: 415 000262EE 11 d9 brb _pipe1_3_lp1
418: 416 000262F0 # /*
419: 417 000262F0 # * verify the results
420: 418 000262F0 # */
421: 419 000262F0 # asm("movl r5,_sgl_st_acc"); /* get the result */
422: 420 000262F0 0d 55 effffffd45 movl r5,_sgl_st_acc
423: 421 000262F7 # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */
424: 422 000262F7 1d effffffd3f effffffd3a cmpl _sgl_st_acc,_sgl_expected
425: 423 00026302 31 42 jeql L268
426: 424 00026304 # {
427: 425 00026304 # errcnt++; /* bump the error count */
428: 426 00026304 6d effffffd32 incl _errcnt
429: 427 0002630A # if ( prt_error )
430: 428 0002630A 5d effffffd2c tstl _prt_error
431: 429 00026310 31 0d jeql L269
432: 430 00026312 # print_pipe1_er("Reg. Data, 2 NO-OPs");
433: 431 00026312 .data 1
434: 432 00000c32 * L270:
435: 433 00000c32 * 5265672E20446174612C20322 .ascii "Reg. Data, 2 NO-OPs\0"
436: 04E4F2D4F507300
437: 434 00000c46 * .text
438: 435 00026312 dd 8f00000c32 pushl $L270
439: 436 00026318 fe 08 ef000007ab callf $8,_print_pipe1_er
440: 437 0002631F # if ( halt_flg ) /* halt on error? */
441: 438 0002631F L269:
442: 439 0002631F 5d effffffd17 tstl _halt_flg
443: 440 00026325 31 0d jeql L271
444: 441 00026327 # pipe1_er_hlt( subtest );
445: 442 00026327 dd effffffd0f pushl _subtest
446: 443 0002632D fe 08 ef000008a2 callf $8,_pipe1_er_hlt
447: 444 00026334 # if ( loop_on_err ) {
448: 445 00026334 L271:
449: 446 00026334 5d effffffd02 tstl _loop_on_err
450: 447 0002633A 31 0a jeql L272
451: 448 0002633C # force_loop = TRUE; /* set the force loop flag */
452: 449 0002633C 0d 01 effffffcf9 movl $1,_force_loop
453: 450 00026343 # asm("brw _pipe1_3_lp1"); /* and loop */
454: 451 00026343 13 ff83 brw _pipe1_3_lp1
455: 452 00026346 # }
456: 453 00026346 # } /* end of compare error */
457: 454 00026346 L272:
458: 455 00026346 # } while( index++ < max_ldf_1_index );
459: 456 00026346 L268:
460: 457 00026346 L265:
461: 458 00026346 0d effffffcf0 50 movl _index,r0
462: 459 0002634D 6d effffffce9 incl _index
463: 460 00026353 1d 50 effffffce2 cmpl r0,_max_ldf_1_index
464: 461 0002635A 81 03 13 ff3e jlss L266
465: 462 0002635F L264:
466: 463 0002635F # } /* end of subtest 3 */
467: 464 0002635F 40 ret#2
468: 465 00026360 .set L260,0x0
469: 466 00026360 L262:
470: 467 00026360 13 ff2e jbr L263
471: 468 00026363 .data
472: 469 00000c00 * .text
473: 470 00026363 00 .align 1
474: 471 00026364 .globl _pipe1_4
475: 472 00026364 _pipe1_4:
476: 473 00026364 0000 .word L273
477: 474 00026366 #
478: 475 00026366 #
479: 476 00026366 #
480: 477 00026366 #
481: 478 00026366 #
482: 479 00026366 #
483: 480 00026366 # /************************************************************************
484: 481 00026366 # *
485: 482 00026366 # * SUBTEST 4
486: 483 00026366 # * data in registers, 3 NO-OPs
487: 484 00026366 # *
488: 485 00026366 # ************************************************************************/
489: 486 00026366 # pipe1_4()
490: 487 00026366 # {
491: 488 00026366 13 00d4 jbr L275
492: 489 00026369 L276:
493: 490 00026369 # force_loop = FALSE; /* clear force_loop flag */
494: 491 00026369 4d effffffccd clrl _force_loop
495: 492 0002636F # index = 0;
496: 493 0002636F 4d effffffcc7 clrl _index
497: 494 00026375 # do
498: 495 00026375 L279:
499: 496 00026375 # {
500: 497 00026375 # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
501: 498 00026375 0d effffffcc1 50 movl _index,r0
502: 499 0002637C 48 03 50 50 shll $3,r0,r0
503: 500 00026380 0d e000000000 effffffcb1 movl _ldf_1_data(r0),_sgl_value_1
504: 501 0002638B # sgl_expected = ldf_1_data[index].exp; /* get expected results */
505: 502 0002638B 0d effffffcab 50 movl _index,r0
506: 503 00026392 48 03 50 50 shll $3,r0,r0
507: 504 00026396 0d e000000004 effffffc9b movl _ldf_1_data+4(r0),_sgl_expected
508: 505 000263A1 # /*
509: 506 000263A1 # * If LOOP ON ERROR is set, this is the loop for this subtest.
510: 507 000263A1 # * The force loop flag is set after the first error.
511: 508 000263A1 # */
512: 509 000263A1 # asm("_pipe1_4_lp1:");
513: 510 000263A1 _pipe1_4_lp1:
514: 511 000263A1 # asm("movl _sgl_value_1,r4"); /* move the data to r4 */
515: 512 000263A1 0d effffffc95 54 movl _sgl_value_1,r4
516: 513 000263A8 # asm("ldf r4"); /* load the operand */
517: 514 000263A8 06 54 ldf r4
518: 515 000263AA # asm("nop");
519: 516 000263AA 10 nop
520: 517 000263AB # asm("nop");
521: 518 000263AB 10 nop
522: 519 000263AC # asm("nop");
523: 520 000263AC 10 nop
524: 521 000263AD # asm("subf r4"); /* subtract the data (2xs) */
525: 522 000263AD d6 54 subf r4
526: 523 000263AF # asm("nop");
527: 524 000263AF 10 nop
528: 525 000263B0 # asm("nop");
529: 526 000263B0 10 nop
530: 527 000263B1 # asm("nop");
531: 528 000263B1 10 nop
532: 529 000263B2 # asm("subf r4");
533: 530 000263B2 d6 54 subf r4
534: 531 000263B4 # asm("nop");
535: 532 000263B4 10 nop
536: 533 000263B5 # asm("nop");
537: 534 000263B5 10 nop
538: 535 000263B6 # asm("nop");
539: 536 000263B6 10 nop
540: 537 000263B7 # asm("addf r4"); /* add it back (2xs) */
541: 538 000263B7 c6 54 addf r4
542: 539 000263B9 # asm("nop");
543: 540 000263B9 10 nop
544: 541 000263BA # asm("nop");
545: 542 000263BA 10 nop
546: 543 000263BB # asm("nop");
547: 544 000263BB 10 nop
548: 545 000263BC # asm("addf r4");
549: 546 000263BC c6 54 addf r4
550: 547 000263BE # asm("nop");
551: 548 000263BE 10 nop
552: 549 000263BF # asm("nop");
553: 550 000263BF 10 nop
554: 551 000263C0 # asm("nop");
555: 552 000263C0 10 nop
556: 553 000263C1 # asm("stf r5"); /* store the result */
557: 554 000263C1 26 55 stf r5
558: 555 000263C3 # if ( force_loop );
559: 556 000263C3 5d effffffc73 tstl _force_loop
560: 557 000263C9 31 00 jeql L280
561: 558 000263CB # asm("brb _pipe1_4_lp1");; /* loop on the error */
562: 559 000263CB L280:
563: 560 000263CB 11 d4 brb _pipe1_4_lp1
564: 561 000263CD # /*
565: 562 000263CD # * verify the results
566: 563 000263CD # */
567: 564 000263CD # asm("movl r5,_sgl_st_acc"); /* get the result */
568: 565 000263CD 0d 55 effffffc68 movl r5,_sgl_st_acc
569: 566 000263D4 # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */
570: 567 000263D4 1d effffffc62 effffffc5d cmpl _sgl_st_acc,_sgl_expected
571: 568 000263DF 31 42 jeql L281
572: 569 000263E1 # {
573: 570 000263E1 # errcnt++; /* bump the error count */
574: 571 000263E1 6d effffffc55 incl _errcnt
575: 572 000263E7 # if ( prt_error )
576: 573 000263E7 5d effffffc4f tstl _prt_error
577: 574 000263ED 31 0d jeql L282
578: 575 000263EF # print_pipe1_er("Reg. Data, 3 NO-OPs");
579: 576 000263EF .data 1
580: 577 00000c46 * L283:
581: 578 00000c46 * 5265672E20446174612C20332 .ascii "Reg. Data, 3 NO-OPs\0"
582: 04E4F2D4F507300
583: 579 00000c5a * .text
584: 580 000263EF dd 8f00000c46 pushl $L283
585: 581 000263F5 fe 08 ef000006ce callf $8,_print_pipe1_er
586: 582 000263FC # if ( halt_flg ) /* halt on error? */
587: 583 000263FC L282:
588: 584 000263FC 5d effffffc3a tstl _halt_flg
589: 585 00026402 31 0d jeql L284
590: 586 00026404 # pipe1_er_hlt( subtest );
591: 587 00026404 dd effffffc32 pushl _subtest
592: 588 0002640A fe 08 ef000007c5 callf $8,_pipe1_er_hlt
593: 589 00026411 # if ( loop_on_err ) {
594: 590 00026411 L284:
595: 591 00026411 5d effffffc25 tstl _loop_on_err
596: 592 00026417 31 0a jeql L285
597: 593 00026419 # force_loop = TRUE; /* set the force loop flag */
598: 594 00026419 0d 01 effffffc1c movl $1,_force_loop
599: 595 00026420 # asm("brw _pipe1_4_lp1"); /* and loop */
600: 596 00026420 13 ff7e brw _pipe1_4_lp1
601: 597 00026423 # }
602: 598 00026423 # } /* end of compare error */
603: 599 00026423 L285:
604: 600 00026423 # } while( index++ < max_ldf_1_index );
605: 601 00026423 L281:
606: 602 00026423 L278:
607: 603 00026423 0d effffffc13 50 movl _index,r0
608: 604 0002642A 6d effffffc0c incl _index
609: 605 00026430 1d 50 effffffc05 cmpl r0,_max_ldf_1_index
610: 606 00026437 81 03 13 ff39 jlss L279
611: 607 0002643C L277:
612: 608 0002643C # } /* end of subtest 4 */
613: 609 0002643C 40 ret#2
614: 610 0002643D .set L273,0x0
615: 611 0002643D L275:
616: 612 0002643D 13 ff29 jbr L276
617: 613 00026440 .data
618: 614 00000c00 * .text
619: 615 00026440 .align 1
620: 616 00026440 .globl _pipe1_5
621: 617 00026440 _pipe1_5:
622: 618 00026440 0000 .word L286
623: 619 00026442 #
624: 620 00026442 #
625: 621 00026442 #
626: 622 00026442 #
627: 623 00026442 #
628: 624 00026442 #
629: 625 00026442 #
630: 626 00026442 # /************************************************************************
631: 627 00026442 # *
632: 628 00026442 # * SUBTEST 5
633: 629 00026442 # * data in Cache, no NO-OPs
634: 630 00026442 # *
635: 631 00026442 # ************************************************************************/
636: 632 00026442 # pipe1_5()
637: 633 00026442 # {
638: 634 00026442 13 00cf jbr L288
639: 635 00026445 L289:
640: 636 00026445 # force_loop = FALSE; /* clear force_loop flag */
641: 637 00026445 4d effffffbf1 clrl _force_loop
642: 638 0002644B # index = 0;
643: 639 0002644B 4d effffffbeb clrl _index
644: 640 00026451 # do
645: 641 00026451 L292:
646: 642 00026451 # {
647: 643 00026451 # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
648: 644 00026451 0d effffffbe5 50 movl _index,r0
649: 645 00026458 48 03 50 50 shll $3,r0,r0
650: 646 0002645C 0d e000000000 effffffbd5 movl _ldf_1_data(r0),_sgl_value_1
651: 647 00026467 # sgl_expected = ldf_1_data[index].exp; /* get expected results */
652: 648 00026467 0d effffffbcf 50 movl _index,r0
653: 649 0002646E 48 03 50 50 shll $3,r0,r0
654: 650 00026472 0d e000000004 effffffbbf movl _ldf_1_data+4(r0),_sgl_expected
655: 651 0002647D # /*
656: 652 0002647D # * If LOOP ON ERROR is set, this is the loop for this subtest.
657: 653 0002647D # * The force loop flag is set after the first error.
658: 654 0002647D # */
659: 655 0002647D # asm("_pipe1_5_lp1:");
660: 656 0002647D _pipe1_5_lp1:
661: 657 0002647D # asm("ldf _sgl_value_1"); /* load the operand */
662: 658 0002647D 06 effffffbb9 ldf _sgl_value_1
663: 659 00026483 # asm("subf _sgl_value_1"); /* subtract it (twice) */
664: 660 00026483 d6 effffffbb3 subf _sgl_value_1
665: 661 00026489 # asm("subf _sgl_value_1");
666: 662 00026489 d6 effffffbad subf _sgl_value_1
667: 663 0002648F # asm("addf _sgl_value_1"); /* add it back (twice) */
668: 664 0002648F c6 effffffba7 addf _sgl_value_1
669: 665 00026495 # asm("addf _sgl_value_1");
670: 666 00026495 c6 effffffba1 addf _sgl_value_1
671: 667 0002649B # asm("stf _sgl_st_acc"); /* store the result */
672: 668 0002649B 26 effffffb9b stf _sgl_st_acc
673: 669 000264A1 # if ( force_loop );
674: 670 000264A1 5d effffffb95 tstl _force_loop
675: 671 000264A7 31 00 jeql L293
676: 672 000264A9 # asm("brb _pipe1_5_lp1");; /* loop on the error */
677: 673 000264A9 L293:
678: 674 000264A9 11 d2 brb _pipe1_5_lp1
679: 675 000264AB # /*
680: 676 000264AB # * verify the results
681: 677 000264AB # */
682: 678 000264AB # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */
683: 679 000264AB 1d effffffb8b effffffb86 cmpl _sgl_st_acc,_sgl_expected
684: 680 000264B6 31 42 jeql L294
685: 681 000264B8 # {
686: 682 000264B8 # errcnt++; /* bump the error count */
687: 683 000264B8 6d effffffb7e incl _errcnt
688: 684 000264BE # if ( prt_error )
689: 685 000264BE 5d effffffb78 tstl _prt_error
690: 686 000264C4 31 0d jeql L295
691: 687 000264C6 # print_pipe1_er("Cache Data, no NO-OPs");
692: 688 000264C6 .data 1
693: 689 00000c5a * L296:
694: 690 00000c5a * 436163686520446174612C206 .ascii "Cache Data, no NO-OPs\0"
695: E6F204E4F2D4F507300
696: 691 00000c70 * .text
697: 692 000264C6 dd 8f00000c5a pushl $L296
698: 693 000264CC fe 08 ef000005f7 callf $8,_print_pipe1_er
699: 694 000264D3 # if ( halt_flg ) /* halt on error? */
700: 695 000264D3 L295:
701: 696 000264D3 5d effffffb63 tstl _halt_flg
702: 697 000264D9 31 0d jeql L297
703: 698 000264DB # pipe1_er_hlt( subtest );
704: 699 000264DB dd effffffb5b pushl _subtest
705: 700 000264E1 fe 08 ef000006ee callf $8,_pipe1_er_hlt
706: 701 000264E8 # if ( loop_on_err ) {
707: 702 000264E8 L297:
708: 703 000264E8 5d effffffb4e tstl _loop_on_err
709: 704 000264EE 31 0a jeql L298
710: 705 000264F0 # force_loop = TRUE; /* set the force loop flag */
711: 706 000264F0 0d 01 effffffb45 movl $1,_force_loop
712: 707 000264F7 # asm("brw _pipe1_5_lp1"); /* and loop */
713: 708 000264F7 13 ff83 brw _pipe1_5_lp1
714: 709 000264FA # }
715: 710 000264FA # } /* end of compare error */
716: 711 000264FA L298:
717: 712 000264FA # } while( index++ < max_ldf_1_index );
718: 713 000264FA L294:
719: 714 000264FA L291:
720: 715 000264FA 0d effffffb3c 50 movl _index,r0
721: 716 00026501 6d effffffb35 incl _index
722: 717 00026507 1d 50 effffffb2e cmpl r0,_max_ldf_1_index
723: 718 0002650E 81 03 13 ff3e jlss L292
724: 719 00026513 L290:
725: 720 00026513 # } /* end of subtest 5 */
726: 721 00026513 40 ret#2
727: 722 00026514 .set L286,0x0
728: 723 00026514 L288:
729: 724 00026514 13 ff2e jbr L289
730: 725 00026517 .data
731: 726 00000c00 * .text
732: 727 00026517 00 .align 1
733: 728 00026518 .globl _pipe1_6
734: 729 00026518 _pipe1_6:
735: 730 00026518 0000 .word L299
736: 731 0002651A #
737: 732 0002651A #
738: 733 0002651A #
739: 734 0002651A #
740: 735 0002651A #
741: 736 0002651A #
742: 737 0002651A # /************************************************************************
743: 738 0002651A # *
744: 739 0002651A # * SUBTEST 6
745: 740 0002651A # * data in Cache, 1 NO-OP
746: 741 0002651A # *
747: 742 0002651A # ************************************************************************/
748: 743 0002651A # pipe1_6()
749: 744 0002651A # {
750: 745 0002651A 13 00d4 jbr L301
751: 746 0002651D L302:
752: 747 0002651D # force_loop = FALSE; /* clear force_loop flag */
753: 748 0002651D 4d effffffb19 clrl _force_loop
754: 749 00026523 # index = 0;
755: 750 00026523 4d effffffb13 clrl _index
756: 751 00026529 # do
757: 752 00026529 L305:
758: 753 00026529 # {
759: 754 00026529 # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
760: 755 00026529 0d effffffb0d 50 movl _index,r0
761: 756 00026530 48 03 50 50 shll $3,r0,r0
762: 757 00026534 0d e000000000 effffffafd movl _ldf_1_data(r0),_sgl_value_1
763: 758 0002653F # sgl_expected = ldf_1_data[index].exp; /* get expected results */
764: 759 0002653F 0d effffffaf7 50 movl _index,r0
765: 760 00026546 48 03 50 50 shll $3,r0,r0
766: 761 0002654A 0d e000000004 effffffae7 movl _ldf_1_data+4(r0),_sgl_expected
767: 762 00026555 # /*
768: 763 00026555 # * If LOOP ON ERROR is set, this is the loop for this subtest.
769: 764 00026555 # * The force loop flag is set after the first error.
770: 765 00026555 # */
771: 766 00026555 # asm("_pipe1_6_lp1:");
772: 767 00026555 _pipe1_6_lp1:
773: 768 00026555 # asm("ldf _sgl_value_1"); /* load the operand */
774: 769 00026555 06 effffffae1 ldf _sgl_value_1
775: 770 0002655B # asm("nop");
776: 771 0002655B 10 nop
777: 772 0002655C # asm("subf _sgl_value_1"); /* subtract it (twice) */
778: 773 0002655C d6 effffffada subf _sgl_value_1
779: 774 00026562 # asm("nop");
780: 775 00026562 10 nop
781: 776 00026563 # asm("subf _sgl_value_1");
782: 777 00026563 d6 effffffad3 subf _sgl_value_1
783: 778 00026569 # asm("nop");
784: 779 00026569 10 nop
785: 780 0002656A # asm("addf _sgl_value_1"); /* add it back (twice) */
786: 781 0002656A c6 effffffacc addf _sgl_value_1
787: 782 00026570 # asm("nop");
788: 783 00026570 10 nop
789: 784 00026571 # asm("addf _sgl_value_1");
790: 785 00026571 c6 effffffac5 addf _sgl_value_1
791: 786 00026577 # asm("nop");
792: 787 00026577 10 nop
793: 788 00026578 # asm("stf _sgl_st_acc"); /* store the result */
794: 789 00026578 26 effffffabe stf _sgl_st_acc
795: 790 0002657E # if ( force_loop );
796: 791 0002657E 5d effffffab8 tstl _force_loop
797: 792 00026584 31 00 jeql L306
798: 793 00026586 # asm("brb _pipe1_6_lp1");; /* loop on the error */
799: 794 00026586 L306:
800: 795 00026586 11 cd brb _pipe1_6_lp1
801: 796 00026588 # /*
802: 797 00026588 # * verify the results
803: 798 00026588 # */
804: 799 00026588 # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */
805: 800 00026588 1d effffffaae effffffaa9 cmpl _sgl_st_acc,_sgl_expected
806: 801 00026593 31 42 jeql L307
807: 802 00026595 # {
808: 803 00026595 # errcnt++; /* bump the error count */
809: 804 00026595 6d effffffaa1 incl _errcnt
810: 805 0002659B # if ( prt_error )
811: 806 0002659B 5d effffffa9b tstl _prt_error
812: 807 000265A1 31 0d jeql L308
813: 808 000265A3 # print_pipe1_er("Cache Data, 1 NO-OP");
814: 809 000265A3 .data 1
815: 810 00000c70 * L309:
816: 811 00000c70 * 436163686520446174612C203 .ascii "Cache Data, 1 NO-OP\0"
817: 1204E4F2D4F5000
818: 812 00000c84 * .text
819: 813 000265A3 dd 8f00000c70 pushl $L309
820: 814 000265A9 fe 08 ef0000051a callf $8,_print_pipe1_er
821: 815 000265B0 # if ( halt_flg ) /* halt on error? */
822: 816 000265B0 L308:
823: 817 000265B0 5d effffffa86 tstl _halt_flg
824: 818 000265B6 31 0d jeql L310
825: 819 000265B8 # pipe1_er_hlt( subtest );
826: 820 000265B8 dd effffffa7e pushl _subtest
827: 821 000265BE fe 08 ef00000611 callf $8,_pipe1_er_hlt
828: 822 000265C5 # if ( loop_on_err ) {
829: 823 000265C5 L310:
830: 824 000265C5 5d effffffa71 tstl _loop_on_err
831: 825 000265CB 31 0a jeql L311
832: 826 000265CD # force_loop = TRUE; /* set the force loop flag */
833: 827 000265CD 0d 01 effffffa68 movl $1,_force_loop
834: 828 000265D4 # asm("brw _pipe1_6_lp1"); /* and loop */
835: 829 000265D4 13 ff7e brw _pipe1_6_lp1
836: 830 000265D7 # }
837: 831 000265D7 # } /* end of compare error */
838: 832 000265D7 L311:
839: 833 000265D7 # } while( index++ < max_ldf_1_index );
840: 834 000265D7 L307:
841: 835 000265D7 L304:
842: 836 000265D7 0d effffffa5f 50 movl _index,r0
843: 837 000265DE 6d effffffa58 incl _index
844: 838 000265E4 1d 50 effffffa51 cmpl r0,_max_ldf_1_index
845: 839 000265EB 81 03 13 ff39 jlss L305
846: 840 000265F0 L303:
847: 841 000265F0 # } /* end of subtest 6 */
848: 842 000265F0 40 ret#2
849: 843 000265F1 .set L299,0x0
850: 844 000265F1 L301:
851: 845 000265F1 13 ff29 jbr L302
852: 846 000265F4 .data
853: 847 00000c00 * .text
854: 848 000265F4 .align 1
855: 849 000265F4 .globl _pipe1_7
856: 850 000265F4 _pipe1_7:
857: 851 000265F4 0000 .word L312
858: 852 000265F6 #
859: 853 000265F6 #
860: 854 000265F6 #
861: 855 000265F6 #
862: 856 000265F6 #
863: 857 000265F6 #
864: 858 000265F6 # /************************************************************************
865: 859 000265F6 # *
866: 860 000265F6 # * SUBTEST 7
867: 861 000265F6 # * data in Cache, 2 NO-OPs
868: 862 000265F6 # *
869: 863 000265F6 # ************************************************************************/
870: 864 000265F6 # pipe1_7()
871: 865 000265F6 # {
872: 866 000265F6 13 00d9 jbr L314
873: 867 000265F9 L315:
874: 868 000265F9 # force_loop = FALSE; /* clear force_loop flag */
875: 869 000265F9 4d effffffa3d clrl _force_loop
876: 870 000265FF # index = 0;
877: 871 000265FF 4d effffffa37 clrl _index
878: 872 00026605 # do
879: 873 00026605 L318:
880: 874 00026605 # {
881: 875 00026605 # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
882: 876 00026605 0d effffffa31 50 movl _index,r0
883: 877 0002660C 48 03 50 50 shll $3,r0,r0
884: 878 00026610 0d e000000000 effffffa21 movl _ldf_1_data(r0),_sgl_value_1
885: 879 0002661B # sgl_expected = ldf_1_data[index].exp; /* get expected results */
886: 880 0002661B 0d effffffa1b 50 movl _index,r0
887: 881 00026622 48 03 50 50 shll $3,r0,r0
888: 882 00026626 0d e000000004 effffffa0b movl _ldf_1_data+4(r0),_sgl_expected
889: 883 00026631 # /*
890: 884 00026631 # * If LOOP ON ERROR is set, this is the loop for this subtest.
891: 885 00026631 # * The force loop flag is set after the first error.
892: 886 00026631 # */
893: 887 00026631 # asm("_pipe1_7_lp1:");
894: 888 00026631 _pipe1_7_lp1:
895: 889 00026631 # asm("ldf _sgl_value_1"); /* load the operand */
896: 890 00026631 06 effffffa05 ldf _sgl_value_1
897: 891 00026637 # asm("nop");
898: 892 00026637 10 nop
899: 893 00026638 # asm("nop");
900: 894 00026638 10 nop
901: 895 00026639 # asm("subf _sgl_value_1"); /* subtract it (twice) */
902: 896 00026639 d6 effffff9fd subf _sgl_value_1
903: 897 0002663F # asm("nop");
904: 898 0002663F 10 nop
905: 899 00026640 # asm("nop");
906: 900 00026640 10 nop
907: 901 00026641 # asm("subf _sgl_value_1");
908: 902 00026641 d6 effffff9f5 subf _sgl_value_1
909: 903 00026647 # asm("nop");
910: 904 00026647 10 nop
911: 905 00026648 # asm("nop");
912: 906 00026648 10 nop
913: 907 00026649 # asm("addf _sgl_value_1"); /* add it back (twice) */
914: 908 00026649 c6 effffff9ed addf _sgl_value_1
915: 909 0002664F # asm("nop");
916: 910 0002664F 10 nop
917: 911 00026650 # asm("nop");
918: 912 00026650 10 nop
919: 913 00026651 # asm("addf _sgl_value_1");
920: 914 00026651 c6 effffff9e5 addf _sgl_value_1
921: 915 00026657 # asm("nop");
922: 916 00026657 10 nop
923: 917 00026658 # asm("nop");
924: 918 00026658 10 nop
925: 919 00026659 # asm("stf _sgl_st_acc"); /* store the result */
926: 920 00026659 26 effffff9dd stf _sgl_st_acc
927: 921 0002665F # if ( force_loop );
928: 922 0002665F 5d effffff9d7 tstl _force_loop
929: 923 00026665 31 00 jeql L319
930: 924 00026667 # asm("brb _pipe1_7_lp1");; /* loop on the error */
931: 925 00026667 L319:
932: 926 00026667 11 c8 brb _pipe1_7_lp1
933: 927 00026669 # /*
934: 928 00026669 # * verify the results
935: 929 00026669 # */
936: 930 00026669 # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */
937: 931 00026669 1d effffff9cd effffff9c8 cmpl _sgl_st_acc,_sgl_expected
938: 932 00026674 31 42 jeql L320
939: 933 00026676 # {
940: 934 00026676 # errcnt++; /* bump the error count */
941: 935 00026676 6d effffff9c0 incl _errcnt
942: 936 0002667C # if ( prt_error )
943: 937 0002667C 5d effffff9ba tstl _prt_error
944: 938 00026682 31 0d jeql L321
945: 939 00026684 # print_pipe1_er("Cache Data, 2 NO-OPs");
946: 940 00026684 .data 1
947: 941 00000c84 * L322:
948: 942 00000c84 * 436163686520446174612C203 .ascii "Cache Data, 2 NO-OPs\0"
949: 2204E4F2D4F507300
950: 943 00000c99 * .text
951: 944 00026684 dd 8f00000c84 pushl $L322
952: 945 0002668A fe 08 ef00000439 callf $8,_print_pipe1_er
953: 946 00026691 # if ( halt_flg ) /* halt on error? */
954: 947 00026691 L321:
955: 948 00026691 5d effffff9a5 tstl _halt_flg
956: 949 00026697 31 0d jeql L323
957: 950 00026699 # pipe1_er_hlt( subtest );
958: 951 00026699 dd effffff99d pushl _subtest
959: 952 0002669F fe 08 ef00000530 callf $8,_pipe1_er_hlt
960: 953 000266A6 # if ( loop_on_err ) {
961: 954 000266A6 L323:
962: 955 000266A6 5d effffff990 tstl _loop_on_err
963: 956 000266AC 31 0a jeql L324
964: 957 000266AE # force_loop = TRUE; /* set the force loop flag */
965: 958 000266AE 0d 01 effffff987 movl $1,_force_loop
966: 959 000266B5 # asm("brw _pipe1_7_lp1"); /* and loop */
967: 960 000266B5 13 ff79 brw _pipe1_7_lp1
968: 961 000266B8 # }
969: 962 000266B8 # } /* end of compare error */
970: 963 000266B8 L324:
971: 964 000266B8 # } while( index++ < max_ldf_1_index );
972: 965 000266B8 L320:
973: 966 000266B8 L317:
974: 967 000266B8 0d effffff97e 50 movl _index,r0
975: 968 000266BF 6d effffff977 incl _index
976: 969 000266C5 1d 50 effffff970 cmpl r0,_max_ldf_1_index
977: 970 000266CC 81 03 13 ff34 jlss L318
978: 971 000266D1 L316:
979: 972 000266D1 # } /* end of subtest 7 */
980: 973 000266D1 40 ret#2
981: 974 000266D2 .set L312,0x0
982: 975 000266D2 L314:
983: 976 000266D2 13 ff24 jbr L315
984: 977 000266D5 .data
985: 978 00000c00 * .text
986: 979 000266D5 00 .align 1
987: 980 000266D6 .globl _pipe1_8
988: 981 000266D6 _pipe1_8:
989: 982 000266D6 0000 .word L325
990: 983 000266D8 #
991: 984 000266D8 #
992: 985 000266D8 #
993: 986 000266D8 #
994: 987 000266D8 #
995: 988 000266D8 #
996: 989 000266D8 # /************************************************************************
997: 990 000266D8 # *
998: 991 000266D8 # * SUBTEST 8
999: 992 000266D8 # * data in Cache, 3 NO-OPs
1000: 993 000266D8 # *
1001: 994 000266D8 # ************************************************************************/
1002: 995 000266D8 # pipe1_8()
1003: 996 000266D8 # {
1004: 997 000266D8 13 00de jbr L327
1005: 998 000266DB L328:
1006: 999 000266DB # force_loop = FALSE; /* clear force_loop flag */
1007: 1000 000266DB 4d effffff95b clrl _force_loop
1008: 1001 000266E1 # index = 0;
1009: 1002 000266E1 4d effffff955 clrl _index
1010: 1003 000266E7 # do
1011: 1004 000266E7 L331:
1012: 1005 000266E7 # {
1013: 1006 000266E7 # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
1014: 1007 000266E7 0d effffff94f 50 movl _index,r0
1015: 1008 000266EE 48 03 50 50 shll $3,r0,r0
1016: 1009 000266F2 0d e000000000 effffff93f movl _ldf_1_data(r0),_sgl_value_1
1017: 1010 000266FD # sgl_expected = ldf_1_data[index].exp; /* get expected results */
1018: 1011 000266FD 0d effffff939 50 movl _index,r0
1019: 1012 00026704 48 03 50 50 shll $3,r0,r0
1020: 1013 00026708 0d e000000004 effffff929 movl _ldf_1_data+4(r0),_sgl_expected
1021: 1014 00026713 # /*
1022: 1015 00026713 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1023: 1016 00026713 # * The force loop flag is set after the first error.
1024: 1017 00026713 # */
1025: 1018 00026713 # asm("_pipe1_8_lp1:");
1026: 1019 00026713 _pipe1_8_lp1:
1027: 1020 00026713 # asm("ldf _sgl_value_1"); /* load the operand */
1028: 1021 00026713 06 effffff923 ldf _sgl_value_1
1029: 1022 00026719 # asm("nop");
1030: 1023 00026719 10 nop
1031: 1024 0002671A # asm("nop");
1032: 1025 0002671A 10 nop
1033: 1026 0002671B # asm("nop");
1034: 1027 0002671B 10 nop
1035: 1028 0002671C # asm("subf _sgl_value_1"); /* subtract it (twice) */
1036: 1029 0002671C d6 effffff91a subf _sgl_value_1
1037: 1030 00026722 # asm("nop");
1038: 1031 00026722 10 nop
1039: 1032 00026723 # asm("nop");
1040: 1033 00026723 10 nop
1041: 1034 00026724 # asm("nop");
1042: 1035 00026724 10 nop
1043: 1036 00026725 # asm("subf _sgl_value_1");
1044: 1037 00026725 d6 effffff911 subf _sgl_value_1
1045: 1038 0002672B # asm("nop");
1046: 1039 0002672B 10 nop
1047: 1040 0002672C # asm("nop");
1048: 1041 0002672C 10 nop
1049: 1042 0002672D # asm("nop");
1050: 1043 0002672D 10 nop
1051: 1044 0002672E # asm("addf _sgl_value_1"); /* add it back (twice) */
1052: 1045 0002672E c6 effffff908 addf _sgl_value_1
1053: 1046 00026734 # asm("nop");
1054: 1047 00026734 10 nop
1055: 1048 00026735 # asm("nop");
1056: 1049 00026735 10 nop
1057: 1050 00026736 # asm("nop");
1058: 1051 00026736 10 nop
1059: 1052 00026737 # asm("addf _sgl_value_1");
1060: 1053 00026737 c6 effffff8ff addf _sgl_value_1
1061: 1054 0002673D # asm("nop");
1062: 1055 0002673D 10 nop
1063: 1056 0002673E # asm("nop");
1064: 1057 0002673E 10 nop
1065: 1058 0002673F # asm("nop");
1066: 1059 0002673F 10 nop
1067: 1060 00026740 # asm("stf _sgl_st_acc"); /* store the result */
1068: 1061 00026740 26 effffff8f6 stf _sgl_st_acc
1069: 1062 00026746 # if ( force_loop );
1070: 1063 00026746 5d effffff8f0 tstl _force_loop
1071: 1064 0002674C 31 00 jeql L332
1072: 1065 0002674E # asm("brb _pipe1_8_lp1");; /* loop on the error */
1073: 1066 0002674E L332:
1074: 1067 0002674E 11 c3 brb _pipe1_8_lp1
1075: 1068 00026750 # /*
1076: 1069 00026750 # * verify the results
1077: 1070 00026750 # */
1078: 1071 00026750 # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */
1079: 1072 00026750 1d effffff8e6 effffff8e1 cmpl _sgl_st_acc,_sgl_expected
1080: 1073 0002675B 31 42 jeql L333
1081: 1074 0002675D # {
1082: 1075 0002675D # errcnt++; /* bump the error count */
1083: 1076 0002675D 6d effffff8d9 incl _errcnt
1084: 1077 00026763 # if ( prt_error )
1085: 1078 00026763 5d effffff8d3 tstl _prt_error
1086: 1079 00026769 31 0d jeql L334
1087: 1080 0002676B # print_pipe1_er("Cache Data, 3 NO-OPs");
1088: 1081 0002676B .data 1
1089: 1082 00000c99 * L335:
1090: 1083 00000c99 * 436163686520446174612C203 .ascii "Cache Data, 3 NO-OPs\0"
1091: 3204E4F2D4F507300
1092: 1084 00000cae * .text
1093: 1085 0002676B dd 8f00000c99 pushl $L335
1094: 1086 00026771 fe 08 ef00000352 callf $8,_print_pipe1_er
1095: 1087 00026778 # if ( halt_flg ) /* halt on error? */
1096: 1088 00026778 L334:
1097: 1089 00026778 5d effffff8be tstl _halt_flg
1098: 1090 0002677E 31 0d jeql L336
1099: 1091 00026780 # pipe1_er_hlt( subtest );
1100: 1092 00026780 dd effffff8b6 pushl _subtest
1101: 1093 00026786 fe 08 ef00000449 callf $8,_pipe1_er_hlt
1102: 1094 0002678D # if ( loop_on_err ) {
1103: 1095 0002678D L336:
1104: 1096 0002678D 5d effffff8a9 tstl _loop_on_err
1105: 1097 00026793 31 0a jeql L337
1106: 1098 00026795 # force_loop = TRUE; /* set the force loop flag */
1107: 1099 00026795 0d 01 effffff8a0 movl $1,_force_loop
1108: 1100 0002679C # asm("brw _pipe1_8_lp1"); /* and loop */
1109: 1101 0002679C 13 ff74 brw _pipe1_8_lp1
1110: 1102 0002679F # }
1111: 1103 0002679F # } /* end of compare error */
1112: 1104 0002679F L337:
1113: 1105 0002679F # } while( index++ < max_ldf_1_index );
1114: 1106 0002679F L333:
1115: 1107 0002679F L330:
1116: 1108 0002679F 0d effffff897 50 movl _index,r0
1117: 1109 000267A6 6d effffff890 incl _index
1118: 1110 000267AC 1d 50 effffff889 cmpl r0,_max_ldf_1_index
1119: 1111 000267B3 81 03 13 ff2f jlss L331
1120: 1112 000267B8 L329:
1121: 1113 000267B8 # } /* end of subtest 8 */
1122: 1114 000267B8 40 ret#2
1123: 1115 000267B9 .set L325,0x0
1124: 1116 000267B9 L327:
1125: 1117 000267B9 13 ff1f jbr L328
1126: 1118 000267BC .data
1127: 1119 00000c00 * .text
1128: 1120 000267BC .align 1
1129: 1121 000267BC .globl _pipe1_9
1130: 1122 000267BC _pipe1_9:
1131: 1123 000267BC 0000 .word L338
1132: 1124 000267BE #
1133: 1125 000267BE #
1134: 1126 000267BE #
1135: 1127 000267BE #
1136: 1128 000267BE #
1137: 1129 000267BE #
1138: 1130 000267BE # /*****************************************************************************
1139: 1131 000267BE # *
1140: 1132 000267BE # * SUBTEST 9
1141: 1133 000267BE # * data on the stack, no NO-OPs
1142: 1134 000267BE # *
1143: 1135 000267BE # *****************************************************************************/
1144: 1136 000267BE # pipe1_9()
1145: 1137 000267BE # {
1146: 1138 000267BE 13 0175 jbr L340
1147: 1139 000267C1 L341:
1148: 1140 000267C1 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */
1149: 1141 000267C1 ed 6d effffff874 moval (r13),_pre_event_fp
1150: 1142 000267C8 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */
1151: 1143 000267C8 ed 6e effffff86d moval (r14),_pre_event_sp
1152: 1144 000267CF # force_loop = FALSE; /* clear force_loop flag */
1153: 1145 000267CF 4d effffff867 clrl _force_loop
1154: 1146 000267D5 # index = 0;
1155: 1147 000267D5 4d effffff861 clrl _index
1156: 1148 000267DB # do
1157: 1149 000267DB L344:
1158: 1150 000267DB # {
1159: 1151 000267DB # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
1160: 1152 000267DB 0d effffff85b 50 movl _index,r0
1161: 1153 000267E2 48 03 50 50 shll $3,r0,r0
1162: 1154 000267E6 0d e000000000 effffff84b movl _ldf_1_data(r0),_sgl_value_1
1163: 1155 000267F1 # sgl_expected = ldf_1_data[index].exp; /* get expected results */
1164: 1156 000267F1 0d effffff845 50 movl _index,r0
1165: 1157 000267F8 48 03 50 50 shll $3,r0,r0
1166: 1158 000267FC 0d e000000004 effffff835 movl _ldf_1_data+4(r0),_sgl_expected
1167: 1159 00026807 # asm("moval _pointer_data,_sgl_value_2");/* init / final SP value */
1168: 1160 00026807 ed effffff82f effffff82a moval _pointer_data,_sgl_value_2
1169: 1161 00026812 # /*
1170: 1162 00026812 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1171: 1163 00026812 # * The force loop flag is set after the first error.
1172: 1164 00026812 # */
1173: 1165 00026812 # asm("_pipe1_9_lp1:");
1174: 1166 00026812 _pipe1_9_lp1:
1175: 1167 00026812 # asm("moval _pointer_data,r14"); /* set the stack pointer */
1176: 1168 00026812 ed effffff824 5e moval _pointer_data,r14
1177: 1169 00026819 # asm("movl _sgl_value_1,-(r14)"); /* push the operand 5 times */
1178: 1170 00026819 0d effffff81d 7e movl _sgl_value_1,-(r14)
1179: 1171 00026820 # asm("movl _sgl_value_1,-(r14)");
1180: 1172 00026820 0d effffff816 7e movl _sgl_value_1,-(r14)
1181: 1173 00026827 # asm("movl _sgl_value_1,-(r14)");
1182: 1174 00026827 0d effffff80f 7e movl _sgl_value_1,-(r14)
1183: 1175 0002682E # asm("movl _sgl_value_1,-(r14)");
1184: 1176 0002682E 0d effffff808 7e movl _sgl_value_1,-(r14)
1185: 1177 00026835 # asm("movl _sgl_value_1,-(r14)");
1186: 1178 00026835 0d effffff801 7e movl _sgl_value_1,-(r14)
1187: 1179 0002683C # /*
1188: 1180 0002683C # * now pop the data off the stack
1189: 1181 0002683C # */
1190: 1182 0002683C # asm("ldf (r14)+"); /* pop the data & load it */
1191: 1183 0002683C 06 8e ldf (r14)+
1192: 1184 0002683E # asm("subf (r14)+"); /* subtract it (twice) */
1193: 1185 0002683E d6 8e subf (r14)+
1194: 1186 00026840 # asm("subf (r14)+");
1195: 1187 00026840 d6 8e subf (r14)+
1196: 1188 00026842 # asm("addf (r14)+"); /* add it back (twice) */
1197: 1189 00026842 c6 8e addf (r14)+
1198: 1190 00026844 # asm("addf (r14)+");
1199: 1191 00026844 c6 8e addf (r14)+
1200: 1192 00026846 # asm("stf r5"); /* store the result */
1201: 1193 00026846 26 55 stf r5
1202: 1194 00026848 # if ( force_loop );
1203: 1195 00026848 5d effffff7ee tstl _force_loop
1204: 1196 0002684E 31 00 jeql L345
1205: 1197 00026850 # asm("brb _pipe1_9_lp1");; /* loop on the error */
1206: 1198 00026850 L345:
1207: 1199 00026850 11 c0 brb _pipe1_9_lp1
1208: 1200 00026852 # /*
1209: 1201 00026852 # * verify the results
1210: 1202 00026852 # */
1211: 1203 00026852 # asm("movl r5,_sgl_st_acc"); /* get the result */
1212: 1204 00026852 0d 55 effffff7e3 movl r5,_sgl_st_acc
1213: 1205 00026859 # asm("moval (r14),_sgl_value_3"); /* save the stack pointer */
1214: 1206 00026859 ed 6e effffff7dc moval (r14),_sgl_value_3
1215: 1207 00026860 # if( (sgl_st_acc != sgl_expected) || /* verify the result... */
1216: 1208 00026860 # (sgl_value_3 != sgl_value_2) ) /* ... and the final SP */
1217: 1209 00026860 1d effffff7d6 effffff7d1 cmpl _sgl_st_acc,_sgl_expected
1218: 1210 0002686B 21 10 jneq L9999
1219: 1211 0002686D 1d effffff7c9 effffff7c4 cmpl _sgl_value_3,_sgl_value_2
1220: 1212 00026878 21 03 13 0091 jeql L346
1221: 1213 0002687D L9999:
1222: 1214 0002687D # {
1223: 1215 0002687D # asm("movl _pre_event_fp,r13"); /* restore frame pointer */
1224: 1216 0002687D 0d effffff7b9 5d movl _pre_event_fp,r13
1225: 1217 00026884 # asm("movl _pre_event_sp,r14"); /* restore stack pointer */
1226: 1218 00026884 0d effffff7b2 5e movl _pre_event_sp,r14
1227: 1219 0002688B # errcnt++; /* bump the error count */
1228: 1220 0002688B 6d effffff7ab incl _errcnt
1229: 1221 00026891 # if ( prt_error ) {
1230: 1222 00026891 5d effffff7a5 tstl _prt_error
1231: 1223 00026897 31 4e jeql L347
1232: 1224 00026899 # print_pipe1_er("POP data from the SP");
1233: 1225 00026899 .data 1
1234: 1226 00000cae * L348:
1235: 1227 00000cae * 504F5020646174612066726F6 .ascii "POP data from the SP\0"
1236: D2074686520535000
1237: 1228 00000cc3 * .text
1238: 1229 00026899 dd 8f00000cae pushl $L348
1239: 1230 0002689F fe 08 ef00000224 callf $8,_print_pipe1_er
1240: 1231 000268A6 # writes("final Stack Pointer = ");
1241: 1232 000268A6 .data 1
1242: 1233 00000cc3 * L349:
1243: 1234 00000cc3 * 66696E616C20537461636B205 .ascii "final Stack Pointer = \0"
1244: 06F696E746572203D2000
1245: 1235 00000cda * .text
1246: 1236 000268A6 dd 8f00000cc3 pushl $L349
1247: 1237 000268AC fe 08 effffff789 callf $8,_writes
1248: 1238 000268B3 # write32h( sgl_value_3 );
1249: 1239 000268B3 dd effffff783 pushl _sgl_value_3
1250: 1240 000268B9 fe 08 effffff77c callf $8,_write32h
1251: 1241 000268C0 # writes(", expected SP = ");
1252: 1242 000268C0 .data 1
1253: 1243 00000cda * L351:
1254: 1244 00000cda * 2C20206578706563746564205 .ascii ", expected SP = \0"
1255: 350203D2000
1256: 1245 00000cec * .text
1257: 1246 000268C0 dd 8f00000cda pushl $L351
1258: 1247 000268C6 fe 08 effffff76f callf $8,_writes
1259: 1248 000268CD # write32h( sgl_value_2 );
1260: 1249 000268CD dd effffff769 pushl _sgl_value_2
1261: 1250 000268D3 fe 08 effffff762 callf $8,_write32h
1262: 1251 000268DA # writes(" \n");
1263: 1252 000268DA .data 1
1264: 1253 00000cec * L352:
1265: 1254 00000cec * 200A00 .ascii " \12\0"
1266: 1255 00000cef * .text
1267: 1256 000268DA dd 8f00000cec pushl $L352
1268: 1257 000268E0 fe 08 effffff755 callf $8,_writes
1269: 1258 000268E7 # }
1270: 1259 000268E7 # if ( halt_flg ) /* halt on error? */
1271: 1260 000268E7 L347:
1272: 1261 000268E7 5d effffff74f tstl _halt_flg
1273: 1262 000268ED 31 0d jeql L353
1274: 1263 000268EF # pipe1_er_hlt( subtest );
1275: 1264 000268EF dd effffff747 pushl _subtest
1276: 1265 000268F5 fe 08 ef000002da callf $8,_pipe1_er_hlt
1277: 1266 000268FC # if ( loop_on_err ) {
1278: 1267 000268FC L353:
1279: 1268 000268FC 5d effffff73a tstl _loop_on_err
1280: 1269 00026902 31 0a jeql L354
1281: 1270 00026904 # force_loop = TRUE; /* set the force loop flag */
1282: 1271 00026904 0d 01 effffff731 movl $1,_force_loop
1283: 1272 0002690B # asm("brw _pipe1_9_lp1"); /* and loop */
1284: 1273 0002690B 13 ff04 brw _pipe1_9_lp1
1285: 1274 0002690E # }
1286: 1275 0002690E # } /* end of compare error */
1287: 1276 0002690E L354:
1288: 1277 0002690E # } while( index++ < max_ldf_1_index );
1289: 1278 0002690E L346:
1290: 1279 0002690E L343:
1291: 1280 0002690E 0d effffff728 50 movl _index,r0
1292: 1281 00026915 6d effffff721 incl _index
1293: 1282 0002691B 1d 50 effffff71a cmpl r0,_max_ldf_1_index
1294: 1283 00026922 81 03 13 feb4 jlss L344
1295: 1284 00026927 L342:
1296: 1285 00026927 # asm("movl _pre_event_fp,r13"); /* restore the frame pointer */
1297: 1286 00026927 0d effffff70f 5d movl _pre_event_fp,r13
1298: 1287 0002692E # asm("movl _pre_event_sp,r14"); /* restore the stack pointer */
1299: 1288 0002692E 0d effffff708 5e movl _pre_event_sp,r14
1300: 1289 00026935 # } /* end of subtest 9 */
1301: 1290 00026935 40 ret#2
1302: 1291 00026936 .set L338,0x0
1303: 1292 00026936 L340:
1304: 1293 00026936 13 fe88 jbr L341
1305: 1294 00026939 .data
1306: 1295 00000c00 * .text
1307: 1296 00026939 00 .align 1
1308: 1297 0002693A .globl _pipe1_10
1309: 1298 0002693A _pipe1_10:
1310: 1299 0002693A 0000 .word L355
1311: 1300 0002693C #
1312: 1301 0002693C #
1313: 1302 0002693C #
1314: 1303 0002693C #
1315: 1304 0002693C #
1316: 1305 0002693C #
1317: 1306 0002693C # /******************************************************************************
1318: 1307 0002693C # *
1319: 1308 0002693C # * SUBTEST 10
1320: 1309 0002693C # * load 0, add operand 4 times -get data via indexed FRAME pointer
1321: 1310 0002693C # *
1322: 1311 0002693C # * ADDR INDEX DATA
1323: 1312 0002693C # * pointer_data 4 <the STF result goes here>
1324: 1313 0002693C # * pointer_data-4 3 <operand data>
1325: 1314 0002693C # * pointer_data-16 0 point the frame pointer here
1326: 1315 0002693C # *
1327: 1316 0002693C # ******************************************************************************/
1328: 1317 0002693C # pipe1_10()
1329: 1318 0002693C # {
1330: 1319 0002693C 13 0187 jbr L357
1331: 1320 0002693F L358:
1332: 1321 0002693F # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */
1333: 1322 0002693F ed 6d effffff6f6 moval (r13),_pre_event_fp
1334: 1323 00026946 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */
1335: 1324 00026946 ed 6e effffff6ef moval (r14),_pre_event_sp
1336: 1325 0002694D # force_loop = FALSE; /* clear force_loop flag */
1337: 1326 0002694D 4d effffff6e9 clrl _force_loop
1338: 1327 00026953 # index = 0;
1339: 1328 00026953 4d effffff6e3 clrl _index
1340: 1329 00026959 # do
1341: 1330 00026959 L361:
1342: 1331 00026959 # {
1343: 1332 00026959 # sgl_value_1 = ldf_1_data[index].ld; /* get operand 1 */
1344: 1333 00026959 0d effffff6dd 50 movl _index,r0
1345: 1334 00026960 48 03 50 50 shll $3,r0,r0
1346: 1335 00026964 0d e000000000 effffff6cd movl _ldf_1_data(r0),_sgl_value_1
1347: 1336 0002696F # sgl_expected = ldf_1_data[index].exp; /* get expected results */
1348: 1337 0002696F 0d effffff6c7 50 movl _index,r0
1349: 1338 00026976 48 03 50 50 shll $3,r0,r0
1350: 1339 0002697A 0d e000000004 effffff6b7 movl _ldf_1_data+4(r0),_sgl_expected
1351: 1340 00026985 # asm("moval _pointer_data,_sgl_value_2");/* init / final SP value */
1352: 1341 00026985 ed effffff6b1 effffff6ac moval _pointer_data,_sgl_value_2
1353: 1342 00026990 # /*
1354: 1343 00026990 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1355: 1344 00026990 # * The force loop flag is set after the first error.
1356: 1345 00026990 # */
1357: 1346 00026990 # asm("_pipe1_10_lp1:");
1358: 1347 00026990 _pipe1_10_lp1:
1359: 1348 00026990 # asm("moval _pointer_data,_sgl_value_2");/* get store data's addr */
1360: 1349 00026990 ed effffff6a6 effffff6a1 moval _pointer_data,_sgl_value_2
1361: 1350 0002699B # sgl_value_2 -= 4; /* decrement it by 4 (bytes)*/
1362: 1351 0002699B 2c 04 effffff69a subl2 $4,_sgl_value_2
1363: 1352 000269A2 # asm("movl _sgl_value_1,*_sgl_value_2");/* set the operand data */
1364: 1353 000269A2 0d effffff694 fffffff68f movl _sgl_value_1,*_sgl_value_2
1365: 1354 000269AD # sgl_value_2 -= 12; /* get the FP addr to use */
1366: 1355 000269AD 2c 0c effffff688 subl2 $12,_sgl_value_2
1367: 1356 000269B4 # asm("movl _sgl_value_2,r13"); /* set the FRAME POINTER */
1368: 1357 000269B4 0d effffff682 5d movl _sgl_value_2,r13
1369: 1358 000269BB # asm("movl $3,r5"); /* r5 index = 3 longwords */
1370: 1359 000269BB 0d 03 55 movl $3,r5
1371: 1360 000269BE # asm("movl $4,r6"); /* r6 index = 4 longwords */
1372: 1361 000269BE 0d 04 56 movl $4,r6
1373: 1362 000269C1 # asm("ldf (r13)[r5]"); /* load -indexed by r5 */
1374: 1363 000269C1 06 456d ldf (r13)[r5]
1375: 1364 000269C4 # asm("subf (r13)[r5]"); /* subtract it (twice) */
1376: 1365 000269C4 d6 456d subf (r13)[r5]
1377: 1366 000269C7 # asm("subf (r13)[r5]");
1378: 1367 000269C7 d6 456d subf (r13)[r5]
1379: 1368 000269CA # asm("addf (r13)[r5]"); /* add it back (twice) */
1380: 1369 000269CA c6 456d addf (r13)[r5]
1381: 1370 000269CD # asm("addf (r13)[r5]");
1382: 1371 000269CD c6 456d addf (r13)[r5]
1383: 1372 000269D0 # asm("stf (r13)[r6]"); /* store -indexed by r6 */
1384: 1373 000269D0 26 466d stf (r13)[r6]
1385: 1374 000269D3 # if ( force_loop );
1386: 1375 000269D3 5d effffff663 tstl _force_loop
1387: 1376 000269D9 31 00 jeql L362
1388: 1377 000269DB # asm("brw _pipe1_10_lp1");; /* loop on the error */
1389: 1378 000269DB L362:
1390: 1379 000269DB 13 ffb2 brw _pipe1_10_lp1
1391: 1380 000269DE # /*
1392: 1381 000269DE # * verify the results
1393: 1382 000269DE # */
1394: 1383 000269DE # sgl_st_acc = pointer_data; /* move the stored result */
1395: 1384 000269DE 0d effffff658 effffff653 movl _pointer_data,_sgl_st_acc
1396: 1385 000269E9 # asm("moval (r13),_sgl_value_3"); /* save the frame pointer */
1397: 1386 000269E9 ed 6d effffff64c moval (r13),_sgl_value_3
1398: 1387 000269F0 # if( (sgl_st_acc != sgl_expected) || /* verify the result... */
1399: 1388 000269F0 # (sgl_value_3 != sgl_value_2) ) /* ... and the final FP */
1400: 1389 000269F0 1d effffff646 effffff641 cmpl _sgl_st_acc,_sgl_expected
1401: 1390 000269FB 21 10 jneq L9998
1402: 1391 000269FD 1d effffff639 effffff634 cmpl _sgl_value_3,_sgl_value_2
1403: 1392 00026A08 21 03 13 0091 jeql L363
1404: 1393 00026A0D L9998:
1405: 1394 00026A0D # {
1406: 1395 00026A0D # asm("movl _pre_event_fp,r13"); /* restore frame pointer */
1407: 1396 00026A0D 0d effffff629 5d movl _pre_event_fp,r13
1408: 1397 00026A14 # asm("movl _pre_event_sp,r14"); /* restore stack pointer */
1409: 1398 00026A14 0d effffff622 5e movl _pre_event_sp,r14
1410: 1399 00026A1B # errcnt++; /* bump the error count */
1411: 1400 00026A1B 6d effffff61b incl _errcnt
1412: 1401 00026A21 # if ( prt_error ) {
1413: 1402 00026A21 5d effffff615 tstl _prt_error
1414: 1403 00026A27 31 4e jeql L364
1415: 1404 00026A29 # print_pipe1_er("indexed FP addressing");
1416: 1405 00026A29 .data 1
1417: 1406 00000cef * L365:
1418: 1407 00000cef * 696E646578656420465020616 .ascii "indexed FP addressing\0"
1419: 46472657373696E6700
1420: 1408 00000d05 * .text
1421: 1409 00026A29 dd 8f00000cef pushl $L365
1422: 1410 00026A2F fe 08 ef00000094 callf $8,_print_pipe1_er
1423: 1411 00026A36 # writes("final Frame Pointer = ");
1424: 1412 00026A36 .data 1
1425: 1413 00000d05 * L366:
1426: 1414 00000d05 * 66696E616C204672616D65205 .ascii "final Frame Pointer = \0"
1427: 06F696E746572203D2000
1428: 1415 00000d1c * .text
1429: 1416 00026A36 dd 8f00000d05 pushl $L366
1430: 1417 00026A3C fe 08 effffff5f9 callf $8,_writes
1431: 1418 00026A43 # writeh( sgl_value_3 );
1432: 1419 00026A43 dd effffff5f3 pushl _sgl_value_3
1433: 1420 00026A49 fe 08 effffff5ec callf $8,_writeh
1434: 1421 00026A50 # writes(", expected FP = ");
1435: 1422 00026A50 .data 1
1436: 1423 00000d1c * L368:
1437: 1424 00000d1c * 2C20206578706563746564204 .ascii ", expected FP = \0"
1438: 650203D2000
1439: 1425 00000d2e * .text
1440: 1426 00026A50 dd 8f00000d1c pushl $L368
1441: 1427 00026A56 fe 08 effffff5df callf $8,_writes
1442: 1428 00026A5D # writeh( sgl_value_2 );
1443: 1429 00026A5D dd effffff5d9 pushl _sgl_value_2
1444: 1430 00026A63 fe 08 effffff5d2 callf $8,_writeh
1445: 1431 00026A6A # writes(" \n");
1446: 1432 00026A6A .data 1
1447: 1433 00000d2e * L369:
1448: 1434 00000d2e * 200A00 .ascii " \12\0"
1449: 1435 00000d31 * .text
1450: 1436 00026A6A dd 8f00000d2e pushl $L369
1451: 1437 00026A70 fe 08 effffff5c5 callf $8,_writes
1452: 1438 00026A77 # }
1453: 1439 00026A77 # if ( halt_flg ) /* halt on error? */
1454: 1440 00026A77 L364:
1455: 1441 00026A77 5d effffff5bf tstl _halt_flg
1456: 1442 00026A7D 31 0d jeql L370
1457: 1443 00026A7F # pipe1_er_hlt( subtest );
1458: 1444 00026A7F dd effffff5b7 pushl _subtest
1459: 1445 00026A85 fe 08 ef0000014a callf $8,_pipe1_er_hlt
1460: 1446 00026A8C # if ( loop_on_err ) {
1461: 1447 00026A8C L370:
1462: 1448 00026A8C 5d effffff5aa tstl _loop_on_err
1463: 1449 00026A92 31 0a jeql L371
1464: 1450 00026A94 # force_loop = TRUE; /* set the force loop flag */
1465: 1451 00026A94 0d 01 effffff5a1 movl $1,_force_loop
1466: 1452 00026A9B # asm("brw _pipe1_10_lp1"); /* and loop */
1467: 1453 00026A9B 13 fef2 brw _pipe1_10_lp1
1468: 1454 00026A9E # }
1469: 1455 00026A9E # } /* end of compare error */
1470: 1456 00026A9E L371:
1471: 1457 00026A9E # } while( index++ < max_ldf_1_index );
1472: 1458 00026A9E L363:
1473: 1459 00026A9E L360:
1474: 1460 00026A9E 0d effffff598 50 movl _index,r0
1475: 1461 00026AA5 6d effffff591 incl _index
1476: 1462 00026AAB 1d 50 effffff58a cmpl r0,_max_ldf_1_index
1477: 1463 00026AB2 81 03 13 fea2 jlss L361
1478: 1464 00026AB7 L359:
1479: 1465 00026AB7 # asm("movl _pre_event_fp,r13"); /* restore the frame pointer */
1480: 1466 00026AB7 0d effffff57f 5d movl _pre_event_fp,r13
1481: 1467 00026ABE # asm("movl _pre_event_sp,r14"); /* restore the stack pointer */
1482: 1468 00026ABE 0d effffff578 5e movl _pre_event_sp,r14
1483: 1469 00026AC5 # } /* end of subtest 10 */
1484: 1470 00026AC5 40 ret#2
1485: 1471 00026AC6 .set L355,0x0
1486: 1472 00026AC6 L357:
1487: 1473 00026AC6 13 fe76 jbr L358
1488: 1474 00026AC9 .data
1489: 1475 00000c00 * .text
1490: 1476 00026AC9 00 .align 1
1491: 1477 00026ACA .globl _print_pipe1_er
1492: 1478 00026ACA _print_pipe1_er:
1493: 1479 00026ACA 0000 .word L372
1494: 1480 00026ACC #
1495: 1481 00026ACC #
1496: 1482 00026ACC #
1497: 1483 00026ACC #
1498: 1484 00026ACC #
1499: 1485 00026ACC # /******************************************************************************
1500: 1486 00026ACC # *
1501: 1487 00026ACC # * ERROR ROUTINE
1502: 1488 00026ACC # *
1503: 1489 00026ACC # * print an error in the following form
1504: 1490 00026ACC # *
1505: 1491 00026ACC # * operand = xxxxxxxx, final Acc = xxxxxxxx, data index = dd
1506: 1492 00026ACC # * expected Acc = xxxxxxxx
1507: 1493 00026ACC # *
1508: 1494 00026ACC # ******************************************************************************/
1509: 1495 00026ACC # print_pipe1_er(msg)
1510: 1496 00026ACC # char *msg;
1511: 1497 00026ACC # {
1512: 1498 00026ACC 13 0103 jbr L374
1513: 1499 00026ACF L375:
1514: 1500 00026ACF # writes(" \n"); /* start a new print line */
1515: 1501 00026ACF .data 1
1516: 1502 00000d31 * L376:
1517: 1503 00000d31 * 200A00 .ascii " \12\0"
1518: 1504 00000d34 * .text
1519: 1505 00026ACF dd 8f00000d31 pushl $L376
1520: 1506 00026AD5 fe 08 effffff560 callf $8,_writes
1521: 1507 00026ADC # writes("cycle: ");
1522: 1508 00026ADC .data 1
1523: 1509 00000d34 * L377:
1524: 1510 00000d34 * 6379636C653A2000 .ascii "cycle: \0"
1525: 1511 00000d3c * .text
1526: 1512 00026ADC dd 8f00000d34 pushl $L377
1527: 1513 00026AE2 fe 08 effffff553 callf $8,_writes
1528: 1514 00026AE9 # writed( cycle );
1529: 1515 00026AE9 dd effffff54d pushl _cycle
1530: 1516 00026AEF fe 08 effffff546 callf $8,_writed
1531: 1517 00026AF6 # writes(" test ");
1532: 1518 00026AF6 .data 1
1533: 1519 00000d3c * L379:
1534: 1520 00000d3c * 20746573742000 .ascii " test \0"
1535: 1521 00000d43 * .text
1536: 1522 00026AF6 dd 8f00000d3c pushl $L379
1537: 1523 00026AFC fe 08 effffff539 callf $8,_writes
1538: 1524 00026B03 # writed( test_no );
1539: 1525 00026B03 dd effffff533 pushl _test_no
1540: 1526 00026B09 fe 08 effffff52c callf $8,_writed
1541: 1527 00026B10 # writes(" (Pipe 1), subtest ");
1542: 1528 00026B10 .data 1
1543: 1529 00000d43 * L380:
1544: 1530 00000d43 * 202028506970652031292C207 .ascii " (Pipe 1), subtest \0"
1545: 37562746573742000
1546: 1531 00000d58 * .text
1547: 1532 00026B10 dd 8f00000d43 pushl $L380
1548: 1533 00026B16 fe 08 effffff51f callf $8,_writes
1549: 1534 00026B1D # writed( subtest );
1550: 1535 00026B1D dd effffff519 pushl _subtest
1551: 1536 00026B23 fe 08 effffff512 callf $8,_writed
1552: 1537 00026B2A # writes(" error - ");
1553: 1538 00026B2A .data 1
1554: 1539 00000d58 * L381:
1555: 1540 00000d58 * 206572726F72202D2000 .ascii " error - \0"
1556: 1541 00000d62 * .text
1557: 1542 00026B2A dd 8f00000d58 pushl $L381
1558: 1543 00026B30 fe 08 effffff505 callf $8,_writes
1559: 1544 00026B37 # writes( msg );
1560: 1545 00026B37 dd ad04 pushl 4(fp)
1561: 1546 00026B3A fe 08 effffff4fb callf $8,_writes
1562: 1547 00026B41 # writec('\n');
1563: 1548 00026B41 dd 0a pushl $10
1564: 1549 00026B43 fe 08 effffff4f2 callf $8,_writec
1565: 1550 00026B4A # writes(" LDF(op1), SUBF(op1), SUBF(op1), ADDF(op1), ADDF(op1), STF\n");
1566: 1551 00026B4A .data 1
1567: 1552 00000d62 * L383:
1568: 1553 00000d62 * 204C4446286F7031292C20535 .ascii " LDF(op1), SUBF(op1), SUBF(op1), ADDF(op1), ADDF(op1), STF\12\0"
1569: 54246286F7031292C20535542
1570: 46286F7031292C20414444462
1571: 86F7031292C2041444446286F
1572: 7031292C205354460A00
1573: 1554 00000d9e * .text
1574: 1555 00026B4A dd 8f00000d62 pushl $L383
1575: 1556 00026B50 fe 08 effffff4e5 callf $8,_writes
1576: 1557 00026B57 # writes("operand = ");
1577: 1558 00026B57 .data 1
1578: 1559 00000d9e * L384:
1579: 1560 00000d9e * 6F706572616E64203D2000 .ascii "operand = \0"
1580: 1561 00000da9 * .text
1581: 1562 00026B57 dd 8f00000d9e pushl $L384
1582: 1563 00026B5D fe 08 effffff4d8 callf $8,_writes
1583: 1564 00026B64 # write32h( sgl_value_1 );
1584: 1565 00026B64 dd effffff4d2 pushl _sgl_value_1
1585: 1566 00026B6A fe 08 effffff4cb callf $8,_write32h
1586: 1567 00026B71 # writes(", final Acc = ");
1587: 1568 00026B71 .data 1
1588: 1569 00000da9 * L385:
1589: 1570 00000da9 * 2C20202066696E616C2041636 .ascii ", final Acc = \0"
1590: 3203D2000
1591: 1571 00000dba * .text
1592: 1572 00026B71 dd 8f00000da9 pushl $L385
1593: 1573 00026B77 fe 08 effffff4be callf $8,_writes
1594: 1574 00026B7E # write32h( sgl_st_acc );
1595: 1575 00026B7E dd effffff4b8 pushl _sgl_st_acc
1596: 1576 00026B84 fe 08 effffff4b1 callf $8,_write32h
1597: 1577 00026B8B # writes(", data index = ");
1598: 1578 00026B8B .data 1
1599: 1579 00000dba * L386:
1600: 1580 00000dba * 2C2020206461746120696E646 .ascii ", data index = \0"
1601: 578203D2000
1602: 1581 00000dcc * .text
1603: 1582 00026B8B dd 8f00000dba pushl $L386
1604: 1583 00026B91 fe 08 effffff4a4 callf $8,_writes
1605: 1584 00026B98 # writed( index );
1606: 1585 00026B98 dd effffff49e pushl _index
1607: 1586 00026B9E fe 08 effffff497 callf $8,_writed
1608: 1587 00026BA5 # writec('\n');
1609: 1588 00026BA5 dd 0a pushl $10
1610: 1589 00026BA7 fe 08 effffff48e callf $8,_writec
1611: 1590 00026BAE # writes(" expected Acc = ");
1612: 1591 00026BAE .data 1
1613: 1592 00000dcc * L387:
1614: 1593 00000dcc * 2020202020202020202020202 .ascii " expected Acc = \0"
1615: 0202020202020657870656374
1616: 656420416363203D2000
1617: 1594 00000def * .text
1618: 1595 00026BAE dd 8f00000dcc pushl $L387
1619: 1596 00026BB4 fe 08 effffff481 callf $8,_writes
1620: 1597 00026BBB # write32h( sgl_expected );
1621: 1598 00026BBB dd effffff47b pushl _sgl_expected
1622: 1599 00026BC1 fe 08 effffff474 callf $8,_write32h
1623: 1600 00026BC8 # writec('\n');
1624: 1601 00026BC8 dd 0a pushl $10
1625: 1602 00026BCA fe 08 effffff46b callf $8,_writec
1626: 1603 00026BD1 # }
1627: 1604 00026BD1 40 ret#2
1628: 1605 00026BD2 .set L372,0x0
1629: 1606 00026BD2 L374:
1630: 1607 00026BD2 13 fefa jbr L375
1631: 1608 00026BD5 .data
1632: 1609 00000c00 * .text
1633: 1610 00026BD5 00 .align 1
1634: 1611 00026BD6 .globl _pipe1_er_hlt
1635: 1612 00026BD6 _pipe1_er_hlt:
1636: 1613 00026BD6 0000 .word L388
1637: 1614 00026BD8 #
1638: 1615 00026BD8 #
1639: 1616 00026BD8 #
1640: 1617 00026BD8 #
1641: 1618 00026BD8 #
1642: 1619 00026BD8 # /******************************************************************************
1643: 1620 00026BD8 # *
1644: 1621 00026BD8 # * HALT ON ERROR ROUTINE
1645: 1622 00026BD8 # *
1646: 1623 00026BD8 # * halt with the necessary information saved in the registers
1647: 1624 00026BD8 # *
1648: 1625 00026BD8 # ******************************************************************************/
1649: 1626 00026BD8 # pipe1_er_hlt( subtest )
1650: 1627 00026BD8 # int subtest;
1651: 1628 00026BD8 # {
1652: 1629 00026BD8 11 60 jbr L390
1653: 1630 00026BDA L391:
1654: 1631 00026BDA # asm("movl _test_no,r0"); /* r0 = test number */
1655: 1632 00026BDA 0d effffff45c 50 movl _test_no,r0
1656: 1633 00026BE1 # asm("movl _subtest,r1"); /* r1 = subtest number */
1657: 1634 00026BE1 0d effffff455 51 movl _subtest,r1
1658: 1635 00026BE8 # asm("movl $1,r2"); /* r2 = error code */
1659: 1636 00026BE8 0d 01 52 movl $1,r2
1660: 1637 00026BEB # asm("movl _cycle,r3"); /* r3 = cycle count */
1661: 1638 00026BEB 0d effffff44b 53 movl _cycle,r3
1662: 1639 00026BF2 # asm("movl _sgl_value_1,r4"); /* r4 = sgl operand */
1663: 1640 00026BF2 0d effffff444 54 movl _sgl_value_1,r4
1664: 1641 00026BF9 # asm("movl _sgl_st_acc,r5"); /* r5 = sgl stored */
1665: 1642 00026BF9 0d effffff43d 55 movl _sgl_st_acc,r5
1666: 1643 00026C00 # asm("movl _sgl_expected,r6"); /* r6 = sgl expected */
1667: 1644 00026C00 0d effffff436 56 movl _sgl_expected,r6
1668: 1645 00026C07 # asm("movl _index,r7"); /* r7 = data index */
1669: 1646 00026C07 0d effffff42f 57 movl _index,r7
1670: 1647 00026C0E # if( subtest == 9 ) {
1671: 1648 00026C0E 1d ad04 09 cmpl 4(fp),$9
1672: 1649 00026C12 21 10 jneq L392
1673: 1650 00026C14 # asm("movl _sgl_value_3,r8"); /* r8 = final SP value */
1674: 1651 00026C14 0d effffff422 58 movl _sgl_value_3,r8
1675: 1652 00026C1B # asm("movl _sgl_value_2,r9"); /* r9 = expected SP value */
1676: 1653 00026C1B 0d effffff41b 59 movl _sgl_value_2,r9
1677: 1654 00026C22 # } else
1678: 1655 00026C22 11 14 jbr L393
1679: 1656 00026C24 L392:
1680: 1657 00026C24 # if( subtest == 10 ) {
1681: 1658 00026C24 1d ad04 0a cmpl 4(fp),$10
1682: 1659 00026C28 21 0e jneq L394
1683: 1660 00026C2A # asm("movl _sgl_value_3,r8"); /* r8 = final FP value */
1684: 1661 00026C2A 0d effffff40c 58 movl _sgl_value_3,r8
1685: 1662 00026C31 # asm("movl _sgl_value_2,r9"); /* r9 = expected FP value */
1686: 1663 00026C31 0d effffff405 59 movl _sgl_value_2,r9
1687: 1664 00026C38 # };
1688: 1665 00026C38 L394:
1689: 1666 00026C38 L393:
1690: 1667 00026C38 # asm(".globl _pipe1_1_hlt");
1691: 1668 00026C38 .globl _pipe1_1_hlt
1692: 1669 00026C38 # asm("_pipe1_1_hlt:"); /* PC after the halt */
1693: 1670 00026C38 _pipe1_1_hlt:
1694: 1671 00026C38 # asm("halt"); /* HALT ... */
1695: 1672 00026C38 00 halt
1696: 1673 00026C39 # } /* end of halt on error */
1697: 1674 00026C39 40 ret#2
1698: 1675 00026C3A .set L388,0x0
1699: 1676 00026C3A L390:
1700: 1677 00026C3A 11 9e jbr L391
1701: 1678 00000c00 * .data
1702: 1678 00000c00 * .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.