|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00000ce8 * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _pipe_3
6: 6 00000000 _pipe_3:
7: 7 00027948 0000 .word L215
8: 8 0002794A # #include "fpp_defs.h"
9: 9 0002794A #
10: 10 0002794A #
11: 11 0002794A # /*****************************************************************************
12: 12 0002794A # *
13: 13 0002794A # * PIPELINE TEST #3 MONITOR
14: 14 0002794A # *
15: 15 0002794A # * This test will do:
16: 16 0002794A # *
17: 17 0002794A # * CVLF(x), STF, MULF(1), STF
18: 18 0002794A # *
19: 19 0002794A # * where x is the fmacro1 CVLF data. This test verifies that we can keep
20: 20 0002794A # * using data after we store it.
21: 21 0002794A # *****************************************************************************/
22: 22 0002794A # pipe_3()
23: 23 0002794A # {
24: 24 0002794A 13 00a8 jbr L217
25: 25 0002794D L218:
26: 26 0002794D # asm(".globl _pipeline_3_t");
27: 27 0002794D .globl _pipeline_3_t
28: 28 0002794D # asm("_pipeline_3_t:"); /* entry address */
29: 29 0002794D _pipeline_3_t:
30: 30 0002794D # if( (cycle == 1) && (prt_hdrs) ) /* print headers on 1st cycle */
31: 31 0002794D 1d effffffff5 01 cmpl _cycle,$1
32: 32 00027954 21 15 jneq L219
33: 33 00027956 5d efffffffec tstl _prt_hdrs
34: 34 0002795C 31 0d jeql L219
35: 35 0002795E # {
36: 36 0002795E # writes(" PIPE_3 ");
37: 37 0002795E .data 1
38: 38 00000ce8 * L221:
39: 39 00000ce8 * 20504950455F332000 .ascii " PIPE_3 \0"
40: 40 00000cf1 * .text
41: 41 0002795E dd 8f00000ce8 pushl $L221
42: 42 00027964 fe 08 efffffffdd callf $8,_writes
43: 43 0002796B # }
44: 44 0002796B # subtest = 1;
45: 45 0002796B L219:
46: 46 0002796B 0d 01 efffffffd6 movl $1,_subtest
47: 47 00027972 # pipe3_1(); /* data in REGs, no NOPs */
48: 48 00027972 fe 04 ef0000007f callf $4,_pipe3_1
49: 49 00027979 # subtest++; /* increment the subtest */
50: 50 00027979 6d efffffffc9 incl _subtest
51: 51 0002797F # pipe3_2(); /* data in REGs, 1 NOP */
52: 52 0002797F fe 04 ef00000162 callf $4,_pipe3_2
53: 53 00027986 # subtest++; /* increment the subtest */
54: 54 00027986 6d efffffffbc incl _subtest
55: 55 0002798C # pipe3_3(); /* data in REGs, 2 NOPs */
56: 56 0002798C fe 04 ef00000247 callf $4,_pipe3_3
57: 57 00027993 # subtest++; /* increment the subtest */
58: 58 00027993 6d efffffffaf incl _subtest
59: 59 00027999 # pipe3_4(); /* data in REGs, 3 NOPs */
60: 60 00027999 fe 04 ef00000330 callf $4,_pipe3_4
61: 61 000279A0 # subtest++; /* increment the subtest */
62: 62 000279A0 6d efffffffa2 incl _subtest
63: 63 000279A6 # pipe3_5(); /* data in CACHE, no NOPs */
64: 64 000279A6 fe 04 ef0000041b callf $4,_pipe3_5
65: 65 000279AD # subtest++; /* increment the subtest */
66: 66 000279AD 6d efffffff95 incl _subtest
67: 67 000279B3 # pipe3_6(); /* data in CACHE, 1 NOP */
68: 68 000279B3 fe 04 ef000004f2 callf $4,_pipe3_6
69: 69 000279BA # subtest++; /* increment the subtest */
70: 70 000279BA 6d efffffff88 incl _subtest
71: 71 000279C0 # pipe3_7(); /* data in CACHE, 2 NOPs */
72: 72 000279C0 fe 04 ef000005cb callf $4,_pipe3_7
73: 73 000279C7 # subtest++; /* increment the subtest */
74: 74 000279C7 6d efffffff7b incl _subtest
75: 75 000279CD # pipe3_8(); /* data in CACHE, 3 NOPs */
76: 76 000279CD fe 04 ef000006a8 callf $4,_pipe3_8
77: 77 000279D4 # subtest++; /* increment the subtest */
78: 78 000279D4 6d efffffff6e incl _subtest
79: 79 000279DA # pipe3_9(); /* data on STACK, no NOPs */
80: 80 000279DA fe 04 ef00000787 callf $4,_pipe3_9
81: 81 000279E1 # subtest++; /* increment the subtest */
82: 82 000279E1 6d efffffff61 incl _subtest
83: 83 000279E7 # pipe3_10(); /* data via FP no NOPs */
84: 84 000279E7 fe 04 ef000008fe callf $4,_pipe3_10
85: 85 000279EE # asm("jmp *return"); /* return to the test monitor */
86: 86 000279EE 71 ffffffff54 jmp *return
87: 87 000279F4 # }
88: 88 000279F4 40 ret#2
89: 89 000279F5 .set L215,0x0
90: 90 000279F5 L217:
91: 91 000279F5 13 ff55 jbr L218
92: 92 000279F8 .data
93: 93 00000ce8 * .text
94: 94 000279F8 .align 1
95: 95 000279F8 .globl _pipe3_1
96: 96 000279F8 _pipe3_1:
97: 97 000279F8 0000 .word L232
98: 98 000279FA #
99: 99 000279FA #
100: 100 000279FA #
101: 101 000279FA #
102: 102 000279FA #
103: 103 000279FA #
104: 104 000279FA # /************************************************************************
105: 105 000279FA # *
106: 106 000279FA # * SUBTEST 1
107: 107 000279FA # * data in registers, no NO-OPs
108: 108 000279FA # *
109: 109 000279FA # ************************************************************************/
110: 110 000279FA # pipe3_1()
111: 111 000279FA # {
112: 112 000279FA 13 00e7 jbr L234
113: 113 000279FD L235:
114: 114 000279FD # force_loop = FALSE; /* clear force_loop flag */
115: 115 000279FD 4d efffffff45 clrl _force_loop
116: 116 00027A03 # index = 0;
117: 117 00027A03 4d efffffff3f clrl _index
118: 118 00027A09 # do
119: 119 00027A09 L238:
120: 120 00027A09 # {
121: 121 00027A09 # sgl_value_1 = cvlf_1_data[index].ld; /* get operand 1 */
122: 122 00027A09 0d efffffff39 50 movl _index,r0
123: 123 00027A10 48 03 50 50 shll $3,r0,r0
124: 124 00027A14 0d e000000000 efffffff29 movl _cvlf_1_data(r0),_sgl_value_1
125: 125 00027A1F # sgl_expected = cvlf_1_data[index].exp; /* get expected results */
126: 126 00027A1F 0d efffffff23 50 movl _index,r0
127: 127 00027A26 48 03 50 50 shll $3,r0,r0
128: 128 00027A2A 0d e000000004 efffffff13 movl _cvlf_1_data+4(r0),_sgl_expected
129: 129 00027A35 # sgl_value_2 = 0x40800000; /* floating '1' */
130: 130 00027A35 0d 8f40800000 efffffff08 movl $1082130432,_sgl_value_2
131: 131 00027A40 # /*
132: 132 00027A40 # * If LOOP ON ERROR is set, this is the loop for this subtest.
133: 133 00027A40 # * The force loop flag is set after the first error.
134: 134 00027A40 # */
135: 135 00027A40 # asm("_pipe3_1_lp1:");
136: 136 00027A40 _pipe3_1_lp1:
137: 137 00027A40 # asm("movl _sgl_value_1,r4"); /* move the data to r4 */
138: 138 00027A40 0d efffffff02 54 movl _sgl_value_1,r4
139: 139 00027A47 # asm("movl _sgl_value_2,r5"); /* move data to r5 */
140: 140 00027A47 0d effffffefb 55 movl _sgl_value_2,r5
141: 141 00027A4E # asm("cvlf r4"); /* load (negate) the data */
142: 142 00027A4E 76 54 cvlf r4
143: 143 00027A50 # asm("stf r7"); /* store the result */
144: 144 00027A50 26 57 stf r7
145: 145 00027A52 # asm("mulf r5"); /* multipy by '1' (twice) */
146: 146 00027A52 e6 55 mulf r5
147: 147 00027A54 # asm("stf r8"); /* store the result */
148: 148 00027A54 26 58 stf r8
149: 149 00027A56 # if( force_loop )
150: 150 00027A56 5d effffffeec tstl _force_loop
151: 151 00027A5C 31 02 jeql L239
152: 152 00027A5E # asm("brb _pipe3_1_lp1");; /* loop on the error */
153: 153 00027A5E 11 e0 brb _pipe3_1_lp1
154: 154 00027A60 L239:
155: 155 00027A60 # /*
156: 156 00027A60 # * verify the results
157: 157 00027A60 # */
158: 158 00027A60 # asm("movl r7,_sgl_st_acc"); /* get the 1st store value */
159: 159 00027A60 0d 57 effffffee1 movl r7,_sgl_st_acc
160: 160 00027A67 # asm("movl r8,_sgl_value_6"); /* get the 2nd store value */
161: 161 00027A67 0d 58 effffffeda movl r8,_sgl_value_6
162: 162 00027A6E # if( (sgl_st_acc != sgl_expected) || /* COMPARE the values */
163: 163 00027A6E # (sgl_value_6 != sgl_expected) )
164: 164 00027A6E 1d effffffed4 effffffecf cmpl _sgl_st_acc,_sgl_expected
165: 165 00027A79 21 0d jneq L9999
166: 166 00027A7B 1d effffffec7 effffffec2 cmpl _sgl_value_6,_sgl_expected
167: 167 00027A86 31 42 jeql L240
168: 168 00027A88 L9999:
169: 169 00027A88 # {
170: 170 00027A88 # errcnt++; /* bump the error count */
171: 171 00027A88 6d effffffeba incl _errcnt
172: 172 00027A8E # if ( prt_error )
173: 173 00027A8E 5d effffffeb4 tstl _prt_error
174: 174 00027A94 31 0d jeql L241
175: 175 00027A96 # print_pipe3_er("Reg. Data, no NOPS");
176: 176 00027A96 .data 1
177: 177 00000cf1 * L243:
178: 178 00000cf1 * 5265672E20446174612C206E6 .ascii "Reg. Data, no NOPS\0"
179: F204E4F505300
180: 179 00000d04 * .text
181: 180 00027A96 dd 8f00000cf1 pushl $L243
182: 181 00027A9C fe 08 ef00000a13 callf $8,_print_pipe3_er
183: 182 00027AA3 # if ( halt_flg )
184: 183 00027AA3 L241:
185: 184 00027AA3 5d effffffe9f tstl _halt_flg
186: 185 00027AA9 31 0d jeql L244
187: 186 00027AAB # pipe3_er_hlt( subtest );
188: 187 00027AAB dd effffffe97 pushl _subtest
189: 188 00027AB1 fe 08 ef00000b0a callf $8,_pipe3_er_hlt
190: 189 00027AB8 # if ( loop_on_err ) {
191: 190 00027AB8 L244:
192: 191 00027AB8 5d effffffe8a tstl _loop_on_err
193: 192 00027ABE 31 0a jeql L246
194: 193 00027AC0 # force_loop = TRUE; /* set the force loop flag */
195: 194 00027AC0 0d 01 effffffe81 movl $1,_force_loop
196: 195 00027AC7 # asm("brw _pipe3_1_lp1"); /* and loop */
197: 196 00027AC7 13 ff76 brw _pipe3_1_lp1
198: 197 00027ACA # }
199: 198 00027ACA # } /* end of compare error */
200: 199 00027ACA L246:
201: 200 00027ACA # } while( index++ < max_cvlf_1_index );
202: 201 00027ACA L240:
203: 202 00027ACA L237:
204: 203 00027ACA 0d effffffe78 50 movl _index,r0
205: 204 00027AD1 6d effffffe71 incl _index
206: 205 00027AD7 1d 50 effffffe6a cmpl r0,_max_cvlf_1_index
207: 206 00027ADE 81 03 13 ff26 jlss L238
208: 207 00027AE3 L236:
209: 208 00027AE3 # } /* end of subtest 1 */
210: 209 00027AE3 40 ret#2
211: 210 00027AE4 .set L232,0x0
212: 211 00027AE4 L234:
213: 212 00027AE4 13 ff16 jbr L235
214: 213 00027AE7 .data
215: 214 00000ce8 * .text
216: 215 00027AE7 00 .align 1
217: 216 00027AE8 .globl _pipe3_2
218: 217 00027AE8 _pipe3_2:
219: 218 00027AE8 0000 .word L247
220: 219 00027AEA #
221: 220 00027AEA #
222: 221 00027AEA #
223: 222 00027AEA #
224: 223 00027AEA #
225: 224 00027AEA #
226: 225 00027AEA # /************************************************************************
227: 226 00027AEA # *
228: 227 00027AEA # * SUBTEST 2
229: 228 00027AEA # * data in registers, 1 NO-OP
230: 229 00027AEA # *
231: 230 00027AEA # ************************************************************************/
232: 231 00027AEA # pipe3_2()
233: 232 00027AEA # {
234: 233 00027AEA 13 00ea jbr L249
235: 234 00027AED L250:
236: 235 00027AED # force_loop = FALSE; /* clear force_loop flag */
237: 236 00027AED 4d effffffe55 clrl _force_loop
238: 237 00027AF3 # index = 0;
239: 238 00027AF3 4d effffffe4f clrl _index
240: 239 00027AF9 # do
241: 240 00027AF9 L253:
242: 241 00027AF9 # {
243: 242 00027AF9 # sgl_value_1 = cvlf_1_data[index].ld; /* get operand 1 */
244: 243 00027AF9 0d effffffe49 50 movl _index,r0
245: 244 00027B00 48 03 50 50 shll $3,r0,r0
246: 245 00027B04 0d e000000000 effffffe39 movl _cvlf_1_data(r0),_sgl_value_1
247: 246 00027B0F # sgl_expected = cvlf_1_data[index].exp; /* get expected results */
248: 247 00027B0F 0d effffffe33 50 movl _index,r0
249: 248 00027B16 48 03 50 50 shll $3,r0,r0
250: 249 00027B1A 0d e000000004 effffffe23 movl _cvlf_1_data+4(r0),_sgl_expected
251: 250 00027B25 # sgl_value_2 = 0x40800000; /* floating '1' */
252: 251 00027B25 0d 8f40800000 effffffe18 movl $1082130432,_sgl_value_2
253: 252 00027B30 # /*
254: 253 00027B30 # * If LOOP ON ERROR is set, this is the loop for this subtest.
255: 254 00027B30 # * The force loop flag is set after the first error.
256: 255 00027B30 # */
257: 256 00027B30 # asm("_pipe3_2_lp1:");
258: 257 00027B30 _pipe3_2_lp1:
259: 258 00027B30 # asm("movl _sgl_value_1,r4"); /* move the data to r4 */
260: 259 00027B30 0d effffffe12 54 movl _sgl_value_1,r4
261: 260 00027B37 # asm("movl _sgl_value_2,r5"); /* move data to r5 */
262: 261 00027B37 0d effffffe0b 55 movl _sgl_value_2,r5
263: 262 00027B3E # asm("cvlf r4"); /* load (negate) the data */
264: 263 00027B3E 76 54 cvlf r4
265: 264 00027B40 # asm("nop");
266: 265 00027B40 10 nop
267: 266 00027B41 # asm("stf r7"); /* store the result */
268: 267 00027B41 26 57 stf r7
269: 268 00027B43 # asm("nop");
270: 269 00027B43 10 nop
271: 270 00027B44 # asm("mulf r5"); /* multipy by '1' (twice) */
272: 271 00027B44 e6 55 mulf r5
273: 272 00027B46 # asm("nop");
274: 273 00027B46 10 nop
275: 274 00027B47 # asm("stf r8"); /* store the result */
276: 275 00027B47 26 58 stf r8
277: 276 00027B49 # if( force_loop )
278: 277 00027B49 5d effffffdf9 tstl _force_loop
279: 278 00027B4F 31 02 jeql L254
280: 279 00027B51 # asm("brb _pipe3_2_lp1");; /* loop on the error */
281: 280 00027B51 11 dd brb _pipe3_2_lp1
282: 281 00027B53 L254:
283: 282 00027B53 # /*
284: 283 00027B53 # * verify the results
285: 284 00027B53 # */
286: 285 00027B53 # asm("movl r7,_sgl_st_acc"); /* get the 1st store value */
287: 286 00027B53 0d 57 effffffdee movl r7,_sgl_st_acc
288: 287 00027B5A # asm("movl r8,_sgl_value_6"); /* get the 2nd store value */
289: 288 00027B5A 0d 58 effffffde7 movl r8,_sgl_value_6
290: 289 00027B61 # if( (sgl_st_acc != sgl_expected) || /* COMPARE the values */
291: 290 00027B61 # (sgl_value_6 != sgl_expected) )
292: 291 00027B61 1d effffffde1 effffffddc cmpl _sgl_st_acc,_sgl_expected
293: 292 00027B6C 21 0d jneq L9998
294: 293 00027B6E 1d effffffdd4 effffffdcf cmpl _sgl_value_6,_sgl_expected
295: 294 00027B79 31 42 jeql L255
296: 295 00027B7B L9998:
297: 296 00027B7B # {
298: 297 00027B7B # errcnt++; /* bump the error count */
299: 298 00027B7B 6d effffffdc7 incl _errcnt
300: 299 00027B81 # if ( prt_error )
301: 300 00027B81 5d effffffdc1 tstl _prt_error
302: 301 00027B87 31 0d jeql L256
303: 302 00027B89 # print_pipe3_er("Reg. Data, 1 NO-OP");
304: 303 00027B89 .data 1
305: 304 00000d04 * L257:
306: 305 00000d04 * 5265672E20446174612C20312 .ascii "Reg. Data, 1 NO-OP\0"
307: 04E4F2D4F5000
308: 306 00000d17 * .text
309: 307 00027B89 dd 8f00000d04 pushl $L257
310: 308 00027B8F fe 08 ef00000920 callf $8,_print_pipe3_er
311: 309 00027B96 # if ( halt_flg )
312: 310 00027B96 L256:
313: 311 00027B96 5d effffffdac tstl _halt_flg
314: 312 00027B9C 31 0d jeql L258
315: 313 00027B9E # pipe3_er_hlt( subtest );
316: 314 00027B9E dd effffffda4 pushl _subtest
317: 315 00027BA4 fe 08 ef00000a17 callf $8,_pipe3_er_hlt
318: 316 00027BAB # if ( loop_on_err ) {
319: 317 00027BAB L258:
320: 318 00027BAB 5d effffffd97 tstl _loop_on_err
321: 319 00027BB1 31 0a jeql L259
322: 320 00027BB3 # force_loop = TRUE; /* set the force loop flag */
323: 321 00027BB3 0d 01 effffffd8e movl $1,_force_loop
324: 322 00027BBA # asm("brw _pipe3_2_lp1"); /* and loop */
325: 323 00027BBA 13 ff73 brw _pipe3_2_lp1
326: 324 00027BBD # }
327: 325 00027BBD # } /* end of compare error */
328: 326 00027BBD L259:
329: 327 00027BBD # } while( index++ < max_cvlf_1_index );
330: 328 00027BBD L255:
331: 329 00027BBD L252:
332: 330 00027BBD 0d effffffd85 50 movl _index,r0
333: 331 00027BC4 6d effffffd7e incl _index
334: 332 00027BCA 1d 50 effffffd77 cmpl r0,_max_cvlf_1_index
335: 333 00027BD1 81 03 13 ff23 jlss L253
336: 334 00027BD6 L251:
337: 335 00027BD6 # } /* end of subtest 2 */
338: 336 00027BD6 40 ret#2
339: 337 00027BD7 .set L247,0x0
340: 338 00027BD7 L249:
341: 339 00027BD7 13 ff13 jbr L250
342: 340 00027BDA .data
343: 341 00000ce8 * .text
344: 342 00027BDA .align 1
345: 343 00027BDA .globl _pipe3_3
346: 344 00027BDA _pipe3_3:
347: 345 00027BDA 0000 .word L260
348: 346 00027BDC #
349: 347 00027BDC #
350: 348 00027BDC #
351: 349 00027BDC #
352: 350 00027BDC #
353: 351 00027BDC #
354: 352 00027BDC # /************************************************************************
355: 353 00027BDC # *
356: 354 00027BDC # * SUBTEST 3
357: 355 00027BDC # * data in registers, 2 NO-OPs
358: 356 00027BDC # *
359: 357 00027BDC # ************************************************************************/
360: 358 00027BDC # pipe3_3()
361: 359 00027BDC # {
362: 360 00027BDC 13 00ed jbr L262
363: 361 00027BDF L263:
364: 362 00027BDF # force_loop = FALSE; /* clear force_loop flag */
365: 363 00027BDF 4d effffffd63 clrl _force_loop
366: 364 00027BE5 # index = 0;
367: 365 00027BE5 4d effffffd5d clrl _index
368: 366 00027BEB # do
369: 367 00027BEB L266:
370: 368 00027BEB # {
371: 369 00027BEB # sgl_value_1 = cvlf_1_data[index].ld; /* get operand 1 */
372: 370 00027BEB 0d effffffd57 50 movl _index,r0
373: 371 00027BF2 48 03 50 50 shll $3,r0,r0
374: 372 00027BF6 0d e000000000 effffffd47 movl _cvlf_1_data(r0),_sgl_value_1
375: 373 00027C01 # sgl_expected = cvlf_1_data[index].exp; /* get expected results */
376: 374 00027C01 0d effffffd41 50 movl _index,r0
377: 375 00027C08 48 03 50 50 shll $3,r0,r0
378: 376 00027C0C 0d e000000004 effffffd31 movl _cvlf_1_data+4(r0),_sgl_expected
379: 377 00027C17 # sgl_value_2 = 0x40800000; /* floating '1' */
380: 378 00027C17 0d 8f40800000 effffffd26 movl $1082130432,_sgl_value_2
381: 379 00027C22 # /*
382: 380 00027C22 # * If LOOP ON ERROR is set, this is the loop for this subtest.
383: 381 00027C22 # * The force loop flag is set after the first error.
384: 382 00027C22 # */
385: 383 00027C22 # asm("_pipe3_3_lp1:");
386: 384 00027C22 _pipe3_3_lp1:
387: 385 00027C22 # asm("movl _sgl_value_1,r4"); /* move the data to r4 */
388: 386 00027C22 0d effffffd20 54 movl _sgl_value_1,r4
389: 387 00027C29 # asm("movl _sgl_value_2,r5"); /* move data to r5 */
390: 388 00027C29 0d effffffd19 55 movl _sgl_value_2,r5
391: 389 00027C30 # asm("cvlf r4"); /* load (negate) the data */
392: 390 00027C30 76 54 cvlf r4
393: 391 00027C32 # asm("nop");
394: 392 00027C32 10 nop
395: 393 00027C33 # asm("nop");
396: 394 00027C33 10 nop
397: 395 00027C34 # asm("stf r7"); /* store the result */
398: 396 00027C34 26 57 stf r7
399: 397 00027C36 # asm("nop");
400: 398 00027C36 10 nop
401: 399 00027C37 # asm("nop");
402: 400 00027C37 10 nop
403: 401 00027C38 # asm("mulf r5"); /* multipy by '1' (twice) */
404: 402 00027C38 e6 55 mulf r5
405: 403 00027C3A # asm("nop");
406: 404 00027C3A 10 nop
407: 405 00027C3B # asm("nop");
408: 406 00027C3B 10 nop
409: 407 00027C3C # asm("stf r8"); /* store the result */
410: 408 00027C3C 26 58 stf r8
411: 409 00027C3E # if( force_loop )
412: 410 00027C3E 5d effffffd04 tstl _force_loop
413: 411 00027C44 31 02 jeql L267
414: 412 00027C46 # asm("brb _pipe3_3_lp1");; /* loop on the error */
415: 413 00027C46 11 da brb _pipe3_3_lp1
416: 414 00027C48 L267:
417: 415 00027C48 # /*
418: 416 00027C48 # * verify the results
419: 417 00027C48 # */
420: 418 00027C48 # asm("movl r7,_sgl_st_acc"); /* get the 1st store value */
421: 419 00027C48 0d 57 effffffcf9 movl r7,_sgl_st_acc
422: 420 00027C4F # asm("movl r8,_sgl_value_6"); /* get the 2nd store value */
423: 421 00027C4F 0d 58 effffffcf2 movl r8,_sgl_value_6
424: 422 00027C56 # if( (sgl_st_acc != sgl_expected) || /* COMPARE the values */
425: 423 00027C56 # (sgl_value_6 != sgl_expected) )
426: 424 00027C56 1d effffffcec effffffce7 cmpl _sgl_st_acc,_sgl_expected
427: 425 00027C61 21 0d jneq L9997
428: 426 00027C63 1d effffffcdf effffffcda cmpl _sgl_value_6,_sgl_expected
429: 427 00027C6E 31 42 jeql L268
430: 428 00027C70 L9997:
431: 429 00027C70 # {
432: 430 00027C70 # errcnt++; /* bump the error count */
433: 431 00027C70 6d effffffcd2 incl _errcnt
434: 432 00027C76 # if ( prt_error )
435: 433 00027C76 5d effffffccc tstl _prt_error
436: 434 00027C7C 31 0d jeql L269
437: 435 00027C7E # print_pipe3_er("Reg. Data, 2 NO-OPS");
438: 436 00027C7E .data 1
439: 437 00000d17 * L270:
440: 438 00000d17 * 5265672E20446174612C20322 .ascii "Reg. Data, 2 NO-OPS\0"
441: 04E4F2D4F505300
442: 439 00000d2b * .text
443: 440 00027C7E dd 8f00000d17 pushl $L270
444: 441 00027C84 fe 08 ef0000082b callf $8,_print_pipe3_er
445: 442 00027C8B # if ( halt_flg )
446: 443 00027C8B L269:
447: 444 00027C8B 5d effffffcb7 tstl _halt_flg
448: 445 00027C91 31 0d jeql L271
449: 446 00027C93 # pipe3_er_hlt( subtest );
450: 447 00027C93 dd effffffcaf pushl _subtest
451: 448 00027C99 fe 08 ef00000922 callf $8,_pipe3_er_hlt
452: 449 00027CA0 # if ( loop_on_err ) {
453: 450 00027CA0 L271:
454: 451 00027CA0 5d effffffca2 tstl _loop_on_err
455: 452 00027CA6 31 0a jeql L272
456: 453 00027CA8 # force_loop = TRUE; /* set the force loop flag */
457: 454 00027CA8 0d 01 effffffc99 movl $1,_force_loop
458: 455 00027CAF # asm("brw _pipe3_3_lp1"); /* and loop */
459: 456 00027CAF 13 ff70 brw _pipe3_3_lp1
460: 457 00027CB2 # }
461: 458 00027CB2 # } /* end of compare error */
462: 459 00027CB2 L272:
463: 460 00027CB2 # } while( index++ < max_cvlf_1_index );
464: 461 00027CB2 L268:
465: 462 00027CB2 L265:
466: 463 00027CB2 0d effffffc90 50 movl _index,r0
467: 464 00027CB9 6d effffffc89 incl _index
468: 465 00027CBF 1d 50 effffffc82 cmpl r0,_max_cvlf_1_index
469: 466 00027CC6 81 03 13 ff20 jlss L266
470: 467 00027CCB L264:
471: 468 00027CCB # } /* end of subtest 3 */
472: 469 00027CCB 40 ret#2
473: 470 00027CCC .set L260,0x0
474: 471 00027CCC L262:
475: 472 00027CCC 13 ff10 jbr L263
476: 473 00027CCF .data
477: 474 00000ce8 * .text
478: 475 00027CCF 00 .align 1
479: 476 00027CD0 .globl _pipe3_4
480: 477 00027CD0 _pipe3_4:
481: 478 00027CD0 0000 .word L273
482: 479 00027CD2 #
483: 480 00027CD2 #
484: 481 00027CD2 #
485: 482 00027CD2 #
486: 483 00027CD2 #
487: 484 00027CD2 #
488: 485 00027CD2 # /************************************************************************
489: 486 00027CD2 # *
490: 487 00027CD2 # * SUBTEST 4
491: 488 00027CD2 # * data in registers, 3 NO-OPs
492: 489 00027CD2 # *
493: 490 00027CD2 # ************************************************************************/
494: 491 00027CD2 # pipe3_4()
495: 492 00027CD2 # {
496: 493 00027CD2 13 00f0 jbr L275
497: 494 00027CD5 L276:
498: 495 00027CD5 # force_loop = FALSE; /* clear force_loop flag */
499: 496 00027CD5 4d effffffc6d clrl _force_loop
500: 497 00027CDB # index = 0;
501: 498 00027CDB 4d effffffc67 clrl _index
502: 499 00027CE1 # do
503: 500 00027CE1 L279:
504: 501 00027CE1 # {
505: 502 00027CE1 # sgl_value_1 = cvlf_1_data[index].ld; /* get operand 1 */
506: 503 00027CE1 0d effffffc61 50 movl _index,r0
507: 504 00027CE8 48 03 50 50 shll $3,r0,r0
508: 505 00027CEC 0d e000000000 effffffc51 movl _cvlf_1_data(r0),_sgl_value_1
509: 506 00027CF7 # sgl_expected = cvlf_1_data[index].exp; /* get expected results */
510: 507 00027CF7 0d effffffc4b 50 movl _index,r0
511: 508 00027CFE 48 03 50 50 shll $3,r0,r0
512: 509 00027D02 0d e000000004 effffffc3b movl _cvlf_1_data+4(r0),_sgl_expected
513: 510 00027D0D # sgl_value_2 = 0x40800000; /* floating '1' */
514: 511 00027D0D 0d 8f40800000 effffffc30 movl $1082130432,_sgl_value_2
515: 512 00027D18 # /*
516: 513 00027D18 # * If LOOP ON ERROR is set, this is the loop for this subtest.
517: 514 00027D18 # * The force loop flag is set after the first error.
518: 515 00027D18 # */
519: 516 00027D18 # asm("_pipe3_4_lp1:");
520: 517 00027D18 _pipe3_4_lp1:
521: 518 00027D18 # asm("movl _sgl_value_1,r4"); /* move the data to r4 */
522: 519 00027D18 0d effffffc2a 54 movl _sgl_value_1,r4
523: 520 00027D1F # asm("movl _sgl_value_2,r5"); /* move data to r5 */
524: 521 00027D1F 0d effffffc23 55 movl _sgl_value_2,r5
525: 522 00027D26 # asm("cvlf r4"); /* load (negate) the data */
526: 523 00027D26 76 54 cvlf r4
527: 524 00027D28 # asm("nop");
528: 525 00027D28 10 nop
529: 526 00027D29 # asm("nop");
530: 527 00027D29 10 nop
531: 528 00027D2A # asm("nop");
532: 529 00027D2A 10 nop
533: 530 00027D2B # asm("stf r7"); /* store the result */
534: 531 00027D2B 26 57 stf r7
535: 532 00027D2D # asm("nop");
536: 533 00027D2D 10 nop
537: 534 00027D2E # asm("nop");
538: 535 00027D2E 10 nop
539: 536 00027D2F # asm("nop");
540: 537 00027D2F 10 nop
541: 538 00027D30 # asm("mulf r5"); /* multipy by '1' (twice) */
542: 539 00027D30 e6 55 mulf r5
543: 540 00027D32 # asm("nop");
544: 541 00027D32 10 nop
545: 542 00027D33 # asm("nop");
546: 543 00027D33 10 nop
547: 544 00027D34 # asm("nop");
548: 545 00027D34 10 nop
549: 546 00027D35 # asm("stf r8"); /* store the result */
550: 547 00027D35 26 58 stf r8
551: 548 00027D37 # if( force_loop )
552: 549 00027D37 5d effffffc0b tstl _force_loop
553: 550 00027D3D 31 02 jeql L280
554: 551 00027D3F # asm("brb _pipe3_4_lp1");; /* loop on the error */
555: 552 00027D3F 11 d7 brb _pipe3_4_lp1
556: 553 00027D41 L280:
557: 554 00027D41 # /*
558: 555 00027D41 # * verify the results
559: 556 00027D41 # */
560: 557 00027D41 # asm("movl r7,_sgl_st_acc"); /* get the 1st store value */
561: 558 00027D41 0d 57 effffffc00 movl r7,_sgl_st_acc
562: 559 00027D48 # asm("movl r8,_sgl_value_6"); /* get the 2nd store value */
563: 560 00027D48 0d 58 effffffbf9 movl r8,_sgl_value_6
564: 561 00027D4F # if( (sgl_st_acc != sgl_expected) || /* COMPARE the values */
565: 562 00027D4F # (sgl_value_6 != sgl_expected) )
566: 563 00027D4F 1d effffffbf3 effffffbee cmpl _sgl_st_acc,_sgl_expected
567: 564 00027D5A 21 0d jneq L9996
568: 565 00027D5C 1d effffffbe6 effffffbe1 cmpl _sgl_value_6,_sgl_expected
569: 566 00027D67 31 42 jeql L281
570: 567 00027D69 L9996:
571: 568 00027D69 # {
572: 569 00027D69 # errcnt++; /* bump the error count */
573: 570 00027D69 6d effffffbd9 incl _errcnt
574: 571 00027D6F # if ( prt_error )
575: 572 00027D6F 5d effffffbd3 tstl _prt_error
576: 573 00027D75 31 0d jeql L282
577: 574 00027D77 # print_pipe3_er("Reg. Data, 3 NO-OPS");
578: 575 00027D77 .data 1
579: 576 00000d2b * L283:
580: 577 00000d2b * 5265672E20446174612C20332 .ascii "Reg. Data, 3 NO-OPS\0"
581: 04E4F2D4F505300
582: 578 00000d3f * .text
583: 579 00027D77 dd 8f00000d2b pushl $L283
584: 580 00027D7D fe 08 ef00000732 callf $8,_print_pipe3_er
585: 581 00027D84 # if ( halt_flg )
586: 582 00027D84 L282:
587: 583 00027D84 5d effffffbbe tstl _halt_flg
588: 584 00027D8A 31 0d jeql L284
589: 585 00027D8C # pipe3_er_hlt( subtest );
590: 586 00027D8C dd effffffbb6 pushl _subtest
591: 587 00027D92 fe 08 ef00000829 callf $8,_pipe3_er_hlt
592: 588 00027D99 # if ( loop_on_err ) {
593: 589 00027D99 L284:
594: 590 00027D99 5d effffffba9 tstl _loop_on_err
595: 591 00027D9F 31 0a jeql L285
596: 592 00027DA1 # force_loop = TRUE; /* set the force loop flag */
597: 593 00027DA1 0d 01 effffffba0 movl $1,_force_loop
598: 594 00027DA8 # asm("brw _pipe3_4_lp1"); /* and loop */
599: 595 00027DA8 13 ff6d brw _pipe3_4_lp1
600: 596 00027DAB # }
601: 597 00027DAB # } /* end of compare error */
602: 598 00027DAB L285:
603: 599 00027DAB # } while( index++ < max_cvlf_1_index );
604: 600 00027DAB L281:
605: 601 00027DAB L278:
606: 602 00027DAB 0d effffffb97 50 movl _index,r0
607: 603 00027DB2 6d effffffb90 incl _index
608: 604 00027DB8 1d 50 effffffb89 cmpl r0,_max_cvlf_1_index
609: 605 00027DBF 81 03 13 ff1d jlss L279
610: 606 00027DC4 L277:
611: 607 00027DC4 # } /* end of subtest 4 */
612: 608 00027DC4 40 ret#2
613: 609 00027DC5 .set L273,0x0
614: 610 00027DC5 L275:
615: 611 00027DC5 13 ff0d jbr L276
616: 612 00027DC8 .data
617: 613 00000ce8 * .text
618: 614 00027DC8 .align 1
619: 615 00027DC8 .globl _pipe3_5
620: 616 00027DC8 _pipe3_5:
621: 617 00027DC8 0000 .word L286
622: 618 00027DCA #
623: 619 00027DCA #
624: 620 00027DCA #
625: 621 00027DCA #
626: 622 00027DCA #
627: 623 00027DCA #
628: 624 00027DCA #
629: 625 00027DCA # /************************************************************************
630: 626 00027DCA # *
631: 627 00027DCA # * SUBTEST 5
632: 628 00027DCA # * data in Cache, no NO-OPs
633: 629 00027DCA # *
634: 630 00027DCA # ************************************************************************/
635: 631 00027DCA # pipe3_5()
636: 632 00027DCA # {
637: 633 00027DCA 13 00db jbr L288
638: 634 00027DCD L289:
639: 635 00027DCD # force_loop = FALSE; /* clear force_loop flag */
640: 636 00027DCD 4d effffffb75 clrl _force_loop
641: 637 00027DD3 # index = 0;
642: 638 00027DD3 4d effffffb6f clrl _index
643: 639 00027DD9 # do
644: 640 00027DD9 L292:
645: 641 00027DD9 # {
646: 642 00027DD9 # sgl_value_1 = cvlf_1_data[index].ld; /* get operand 1 */
647: 643 00027DD9 0d effffffb69 50 movl _index,r0
648: 644 00027DE0 48 03 50 50 shll $3,r0,r0
649: 645 00027DE4 0d e000000000 effffffb59 movl _cvlf_1_data(r0),_sgl_value_1
650: 646 00027DEF # sgl_expected = cvlf_1_data[index].exp; /* get expected results */
651: 647 00027DEF 0d effffffb53 50 movl _index,r0
652: 648 00027DF6 48 03 50 50 shll $3,r0,r0
653: 649 00027DFA 0d e000000004 effffffb43 movl _cvlf_1_data+4(r0),_sgl_expected
654: 650 00027E05 # sgl_value_2 = 0x40800000; /* floating '1' */
655: 651 00027E05 0d 8f40800000 effffffb38 movl $1082130432,_sgl_value_2
656: 652 00027E10 # /*
657: 653 00027E10 # * If LOOP ON ERROR is set, this is the loop for this subtest.
658: 654 00027E10 # * The force loop flag is set after the first error.
659: 655 00027E10 # */
660: 656 00027E10 # asm("_pipe3_5_lp1:");
661: 657 00027E10 _pipe3_5_lp1:
662: 658 00027E10 # asm("cvlf _sgl_value_1"); /* load (negate) the data */
663: 659 00027E10 76 effffffb32 cvlf _sgl_value_1
664: 660 00027E16 # asm("stf _sgl_st_acc"); /* store the result */
665: 661 00027E16 26 effffffb2c stf _sgl_st_acc
666: 662 00027E1C # asm("mulf _sgl_value_2"); /* multipy by '1' (twice) */
667: 663 00027E1C e6 effffffb26 mulf _sgl_value_2
668: 664 00027E22 # asm("stf _sgl_value_6"); /* store the result */
669: 665 00027E22 26 effffffb20 stf _sgl_value_6
670: 666 00027E28 # if( force_loop )
671: 667 00027E28 5d effffffb1a tstl _force_loop
672: 668 00027E2E 31 02 jeql L293
673: 669 00027E30 # asm("brb _pipe3_5_lp1");; /* loop on the error */
674: 670 00027E30 11 de brb _pipe3_5_lp1
675: 671 00027E32 L293:
676: 672 00027E32 # /*
677: 673 00027E32 # * verify the results
678: 674 00027E32 # */
679: 675 00027E32 # if( (sgl_st_acc != sgl_expected) || /* COMPARE the values */
680: 676 00027E32 # (sgl_value_6 != sgl_expected) )
681: 677 00027E32 1d effffffb10 effffffb0b cmpl _sgl_st_acc,_sgl_expected
682: 678 00027E3D 21 0d jneq L9995
683: 679 00027E3F 1d effffffb03 effffffafe cmpl _sgl_value_6,_sgl_expected
684: 680 00027E4A 31 42 jeql L294
685: 681 00027E4C L9995:
686: 682 00027E4C # {
687: 683 00027E4C # errcnt++; /* bump the error count */
688: 684 00027E4C 6d effffffaf6 incl _errcnt
689: 685 00027E52 # if ( prt_error )
690: 686 00027E52 5d effffffaf0 tstl _prt_error
691: 687 00027E58 31 0d jeql L295
692: 688 00027E5A # print_pipe3_er("Cache Data, no NO-OPS");
693: 689 00027E5A .data 1
694: 690 00000d3f * L296:
695: 691 00000d3f * 436163686520446174612C206 .ascii "Cache Data, no NO-OPS\0"
696: E6F204E4F2D4F505300
697: 692 00000d55 * .text
698: 693 00027E5A dd 8f00000d3f pushl $L296
699: 694 00027E60 fe 08 ef0000064f callf $8,_print_pipe3_er
700: 695 00027E67 # if ( halt_flg )
701: 696 00027E67 L295:
702: 697 00027E67 5d effffffadb tstl _halt_flg
703: 698 00027E6D 31 0d jeql L297
704: 699 00027E6F # pipe3_er_hlt( subtest );
705: 700 00027E6F dd effffffad3 pushl _subtest
706: 701 00027E75 fe 08 ef00000746 callf $8,_pipe3_er_hlt
707: 702 00027E7C # if ( loop_on_err ) {
708: 703 00027E7C L297:
709: 704 00027E7C 5d effffffac6 tstl _loop_on_err
710: 705 00027E82 31 0a jeql L298
711: 706 00027E84 # force_loop = TRUE; /* set the force loop flag */
712: 707 00027E84 0d 01 effffffabd movl $1,_force_loop
713: 708 00027E8B # asm("brw _pipe3_5_lp1"); /* and loop */
714: 709 00027E8B 13 ff82 brw _pipe3_5_lp1
715: 710 00027E8E # }
716: 711 00027E8E # } /* end of compare error */
717: 712 00027E8E L298:
718: 713 00027E8E # } while( index++ < max_cvlf_1_index );
719: 714 00027E8E L294:
720: 715 00027E8E L291:
721: 716 00027E8E 0d effffffab4 50 movl _index,r0
722: 717 00027E95 6d effffffaad incl _index
723: 718 00027E9B 1d 50 effffffaa6 cmpl r0,_max_cvlf_1_index
724: 719 00027EA2 81 03 13 ff32 jlss L292
725: 720 00027EA7 L290:
726: 721 00027EA7 # } /* end of subtest 5 */
727: 722 00027EA7 40 ret#2
728: 723 00027EA8 .set L286,0x0
729: 724 00027EA8 L288:
730: 725 00027EA8 13 ff22 jbr L289
731: 726 00027EAB .data
732: 727 00000ce8 * .text
733: 728 00027EAB 00 .align 1
734: 729 00027EAC .globl _pipe3_6
735: 730 00027EAC _pipe3_6:
736: 731 00027EAC 0000 .word L299
737: 732 00027EAE #
738: 733 00027EAE #
739: 734 00027EAE #
740: 735 00027EAE #
741: 736 00027EAE #
742: 737 00027EAE #
743: 738 00027EAE # /************************************************************************
744: 739 00027EAE # *
745: 740 00027EAE # * SUBTEST 6
746: 741 00027EAE # * data in Cache, 1 NO-OP
747: 742 00027EAE # *
748: 743 00027EAE # ************************************************************************/
749: 744 00027EAE # pipe3_6()
750: 745 00027EAE # {
751: 746 00027EAE 13 00de jbr L301
752: 747 00027EB1 L302:
753: 748 00027EB1 # force_loop = FALSE; /* clear force_loop flag */
754: 749 00027EB1 4d effffffa91 clrl _force_loop
755: 750 00027EB7 # index = 0;
756: 751 00027EB7 4d effffffa8b clrl _index
757: 752 00027EBD # do
758: 753 00027EBD L305:
759: 754 00027EBD # {
760: 755 00027EBD # sgl_value_1 = cvlf_1_data[index].ld; /* get operand 1 */
761: 756 00027EBD 0d effffffa85 50 movl _index,r0
762: 757 00027EC4 48 03 50 50 shll $3,r0,r0
763: 758 00027EC8 0d e000000000 effffffa75 movl _cvlf_1_data(r0),_sgl_value_1
764: 759 00027ED3 # sgl_expected = cvlf_1_data[index].exp; /* get expected results */
765: 760 00027ED3 0d effffffa6f 50 movl _index,r0
766: 761 00027EDA 48 03 50 50 shll $3,r0,r0
767: 762 00027EDE 0d e000000004 effffffa5f movl _cvlf_1_data+4(r0),_sgl_expected
768: 763 00027EE9 # sgl_value_2 = 0x40800000; /* floating '1' */
769: 764 00027EE9 0d 8f40800000 effffffa54 movl $1082130432,_sgl_value_2
770: 765 00027EF4 # /*
771: 766 00027EF4 # * If LOOP ON ERROR is set, this is the loop for this subtest.
772: 767 00027EF4 # * The force loop flag is set after the first error.
773: 768 00027EF4 # */
774: 769 00027EF4 # asm("_pipe3_6_lp1:");
775: 770 00027EF4 _pipe3_6_lp1:
776: 771 00027EF4 # asm("cvlf _sgl_value_1"); /* load (negate) the data */
777: 772 00027EF4 76 effffffa4e cvlf _sgl_value_1
778: 773 00027EFA # asm("nop");
779: 774 00027EFA 10 nop
780: 775 00027EFB # asm("stf _sgl_st_acc"); /* store the result */
781: 776 00027EFB 26 effffffa47 stf _sgl_st_acc
782: 777 00027F01 # asm("nop");
783: 778 00027F01 10 nop
784: 779 00027F02 # asm("mulf _sgl_value_2"); /* multipy by '1' (twice) */
785: 780 00027F02 e6 effffffa40 mulf _sgl_value_2
786: 781 00027F08 # asm("nop");
787: 782 00027F08 10 nop
788: 783 00027F09 # asm("stf _sgl_value_6"); /* store the result */
789: 784 00027F09 26 effffffa39 stf _sgl_value_6
790: 785 00027F0F # if( force_loop )
791: 786 00027F0F 5d effffffa33 tstl _force_loop
792: 787 00027F15 31 02 jeql L306
793: 788 00027F17 # asm("brb _pipe3_6_lp1");; /* loop on the error */
794: 789 00027F17 11 db brb _pipe3_6_lp1
795: 790 00027F19 L306:
796: 791 00027F19 # /*
797: 792 00027F19 # * verify the results
798: 793 00027F19 # */
799: 794 00027F19 # if( (sgl_st_acc != sgl_expected) || /* COMPARE the values */
800: 795 00027F19 # (sgl_value_6 != sgl_expected) )
801: 796 00027F19 1d effffffa29 effffffa24 cmpl _sgl_st_acc,_sgl_expected
802: 797 00027F24 21 0d jneq L9994
803: 798 00027F26 1d effffffa1c effffffa17 cmpl _sgl_value_6,_sgl_expected
804: 799 00027F31 31 42 jeql L307
805: 800 00027F33 L9994:
806: 801 00027F33 # {
807: 802 00027F33 # errcnt++; /* bump the error count */
808: 803 00027F33 6d effffffa0f incl _errcnt
809: 804 00027F39 # if ( prt_error )
810: 805 00027F39 5d effffffa09 tstl _prt_error
811: 806 00027F3F 31 0d jeql L308
812: 807 00027F41 # print_pipe3_er("Cache Data, 1 NO-OP");
813: 808 00027F41 .data 1
814: 809 00000d55 * L309:
815: 810 00000d55 * 436163686520446174612C203 .ascii "Cache Data, 1 NO-OP\0"
816: 1204E4F2D4F5000
817: 811 00000d69 * .text
818: 812 00027F41 dd 8f00000d55 pushl $L309
819: 813 00027F47 fe 08 ef00000568 callf $8,_print_pipe3_er
820: 814 00027F4E # if ( halt_flg )
821: 815 00027F4E L308:
822: 816 00027F4E 5d effffff9f4 tstl _halt_flg
823: 817 00027F54 31 0d jeql L310
824: 818 00027F56 # pipe3_er_hlt( subtest );
825: 819 00027F56 dd effffff9ec pushl _subtest
826: 820 00027F5C fe 08 ef0000065f callf $8,_pipe3_er_hlt
827: 821 00027F63 # if ( loop_on_err ) {
828: 822 00027F63 L310:
829: 823 00027F63 5d effffff9df tstl _loop_on_err
830: 824 00027F69 31 0a jeql L311
831: 825 00027F6B # force_loop = TRUE; /* set the force loop flag */
832: 826 00027F6B 0d 01 effffff9d6 movl $1,_force_loop
833: 827 00027F72 # asm("brw _pipe3_6_lp1"); /* and loop */
834: 828 00027F72 13 ff7f brw _pipe3_6_lp1
835: 829 00027F75 # }
836: 830 00027F75 # } /* end of compare error */
837: 831 00027F75 L311:
838: 832 00027F75 # } while( index++ < max_cvlf_1_index );
839: 833 00027F75 L307:
840: 834 00027F75 L304:
841: 835 00027F75 0d effffff9cd 50 movl _index,r0
842: 836 00027F7C 6d effffff9c6 incl _index
843: 837 00027F82 1d 50 effffff9bf cmpl r0,_max_cvlf_1_index
844: 838 00027F89 81 03 13 ff2f jlss L305
845: 839 00027F8E L303:
846: 840 00027F8E # } /* end of subtest 6 */
847: 841 00027F8E 40 ret#2
848: 842 00027F8F .set L299,0x0
849: 843 00027F8F L301:
850: 844 00027F8F 13 ff1f jbr L302
851: 845 00027F92 .data
852: 846 00000ce8 * .text
853: 847 00027F92 .align 1
854: 848 00027F92 .globl _pipe3_7
855: 849 00027F92 _pipe3_7:
856: 850 00027F92 0000 .word L312
857: 851 00027F94 #
858: 852 00027F94 #
859: 853 00027F94 #
860: 854 00027F94 #
861: 855 00027F94 #
862: 856 00027F94 #
863: 857 00027F94 # /************************************************************************
864: 858 00027F94 # *
865: 859 00027F94 # * SUBTEST 7
866: 860 00027F94 # * data in Cache, 2 NO-OPs
867: 861 00027F94 # *
868: 862 00027F94 # ************************************************************************/
869: 863 00027F94 # pipe3_7()
870: 864 00027F94 # {
871: 865 00027F94 13 00e1 jbr L314
872: 866 00027F97 L315:
873: 867 00027F97 # force_loop = FALSE; /* clear force_loop flag */
874: 868 00027F97 4d effffff9ab clrl _force_loop
875: 869 00027F9D # index = 0;
876: 870 00027F9D 4d effffff9a5 clrl _index
877: 871 00027FA3 # do
878: 872 00027FA3 L318:
879: 873 00027FA3 # {
880: 874 00027FA3 # sgl_value_1 = cvlf_1_data[index].ld; /* get operand 1 */
881: 875 00027FA3 0d effffff99f 50 movl _index,r0
882: 876 00027FAA 48 03 50 50 shll $3,r0,r0
883: 877 00027FAE 0d e000000000 effffff98f movl _cvlf_1_data(r0),_sgl_value_1
884: 878 00027FB9 # sgl_expected = cvlf_1_data[index].exp; /* get expected results */
885: 879 00027FB9 0d effffff989 50 movl _index,r0
886: 880 00027FC0 48 03 50 50 shll $3,r0,r0
887: 881 00027FC4 0d e000000004 effffff979 movl _cvlf_1_data+4(r0),_sgl_expected
888: 882 00027FCF # sgl_value_2 = 0x40800000; /* floating '1' */
889: 883 00027FCF 0d 8f40800000 effffff96e movl $1082130432,_sgl_value_2
890: 884 00027FDA # /*
891: 885 00027FDA # * If LOOP ON ERROR is set, this is the loop for this subtest.
892: 886 00027FDA # * The force loop flag is set after the first error.
893: 887 00027FDA # */
894: 888 00027FDA # asm("_pipe3_7_lp1:");
895: 889 00027FDA _pipe3_7_lp1:
896: 890 00027FDA # asm("cvlf _sgl_value_1"); /* load (negate) the data */
897: 891 00027FDA 76 effffff968 cvlf _sgl_value_1
898: 892 00027FE0 # asm("nop");
899: 893 00027FE0 10 nop
900: 894 00027FE1 # asm("nop");
901: 895 00027FE1 10 nop
902: 896 00027FE2 # asm("stf _sgl_st_acc"); /* store the result */
903: 897 00027FE2 26 effffff960 stf _sgl_st_acc
904: 898 00027FE8 # asm("nop");
905: 899 00027FE8 10 nop
906: 900 00027FE9 # asm("nop");
907: 901 00027FE9 10 nop
908: 902 00027FEA # asm("mulf _sgl_value_2"); /* multipy by '1' (twice) */
909: 903 00027FEA e6 effffff958 mulf _sgl_value_2
910: 904 00027FF0 # asm("nop");
911: 905 00027FF0 10 nop
912: 906 00027FF1 # asm("nop");
913: 907 00027FF1 10 nop
914: 908 00027FF2 # asm("stf _sgl_value_6"); /* store the result */
915: 909 00027FF2 26 effffff950 stf _sgl_value_6
916: 910 00027FF8 # if( force_loop )
917: 911 00027FF8 5d effffff94a tstl _force_loop
918: 912 00027FFE 31 02 jeql L319
919: 913 00028000 # asm("brb _pipe3_7_lp1");; /* loop on the error */
920: 914 00028000 11 d8 brb _pipe3_7_lp1
921: 915 00028002 L319:
922: 916 00028002 # /*
923: 917 00028002 # * verify the results
924: 918 00028002 # */
925: 919 00028002 # if( (sgl_st_acc != sgl_expected) || /* COMPARE the values */
926: 920 00028002 # (sgl_value_6 != sgl_expected) )
927: 921 00028002 1d effffff940 effffff93b cmpl _sgl_st_acc,_sgl_expected
928: 922 0002800D 21 0d jneq L9993
929: 923 0002800F 1d effffff933 effffff92e cmpl _sgl_value_6,_sgl_expected
930: 924 0002801A 31 42 jeql L320
931: 925 0002801C L9993:
932: 926 0002801C # {
933: 927 0002801C # errcnt++; /* bump the error count */
934: 928 0002801C 6d effffff926 incl _errcnt
935: 929 00028022 # if ( prt_error )
936: 930 00028022 5d effffff920 tstl _prt_error
937: 931 00028028 31 0d jeql L321
938: 932 0002802A # print_pipe3_er("Cache Data, 2 NO-OPS");
939: 933 0002802A .data 1
940: 934 00000d69 * L322:
941: 935 00000d69 * 436163686520446174612C203 .ascii "Cache Data, 2 NO-OPS\0"
942: 2204E4F2D4F505300
943: 936 00000d7e * .text
944: 937 0002802A dd 8f00000d69 pushl $L322
945: 938 00028030 fe 08 ef0000047f callf $8,_print_pipe3_er
946: 939 00028037 # if ( halt_flg )
947: 940 00028037 L321:
948: 941 00028037 5d effffff90b tstl _halt_flg
949: 942 0002803D 31 0d jeql L323
950: 943 0002803F # pipe3_er_hlt( subtest );
951: 944 0002803F dd effffff903 pushl _subtest
952: 945 00028045 fe 08 ef00000576 callf $8,_pipe3_er_hlt
953: 946 0002804C # if ( loop_on_err ) {
954: 947 0002804C L323:
955: 948 0002804C 5d effffff8f6 tstl _loop_on_err
956: 949 00028052 31 0a jeql L324
957: 950 00028054 # force_loop = TRUE; /* set the force loop flag */
958: 951 00028054 0d 01 effffff8ed movl $1,_force_loop
959: 952 0002805B # asm("brw _pipe3_7_lp1"); /* and loop */
960: 953 0002805B 13 ff7c brw _pipe3_7_lp1
961: 954 0002805E # }
962: 955 0002805E # } /* end of compare error */
963: 956 0002805E L324:
964: 957 0002805E # } while( index++ < max_cvlf_1_index );
965: 958 0002805E L320:
966: 959 0002805E L317:
967: 960 0002805E 0d effffff8e4 50 movl _index,r0
968: 961 00028065 6d effffff8dd incl _index
969: 962 0002806B 1d 50 effffff8d6 cmpl r0,_max_cvlf_1_index
970: 963 00028072 81 03 13 ff2c jlss L318
971: 964 00028077 L316:
972: 965 00028077 # } /* end of subtest 7 */
973: 966 00028077 40 ret#2
974: 967 00028078 .set L312,0x0
975: 968 00028078 L314:
976: 969 00028078 13 ff1c jbr L315
977: 970 0002807B .data
978: 971 00000ce8 * .text
979: 972 0002807B 00 .align 1
980: 973 0002807C .globl _pipe3_8
981: 974 0002807C _pipe3_8:
982: 975 0002807C 0000 .word L325
983: 976 0002807E #
984: 977 0002807E #
985: 978 0002807E #
986: 979 0002807E #
987: 980 0002807E #
988: 981 0002807E #
989: 982 0002807E # /************************************************************************
990: 983 0002807E # *
991: 984 0002807E # * SUBTEST 8
992: 985 0002807E # * data in Cache, 3 NO-OPs
993: 986 0002807E # *
994: 987 0002807E # ************************************************************************/
995: 988 0002807E # pipe3_8()
996: 989 0002807E # {
997: 990 0002807E 13 00e4 jbr L327
998: 991 00028081 L328:
999: 992 00028081 # force_loop = FALSE; /* clear force_loop flag */
1000: 993 00028081 4d effffff8c1 clrl _force_loop
1001: 994 00028087 # index = 0;
1002: 995 00028087 4d effffff8bb clrl _index
1003: 996 0002808D # do
1004: 997 0002808D L331:
1005: 998 0002808D # {
1006: 999 0002808D # sgl_value_1 = cvlf_1_data[index].ld; /* get operand 1 */
1007: 1000 0002808D 0d effffff8b5 50 movl _index,r0
1008: 1001 00028094 48 03 50 50 shll $3,r0,r0
1009: 1002 00028098 0d e000000000 effffff8a5 movl _cvlf_1_data(r0),_sgl_value_1
1010: 1003 000280A3 # sgl_expected = cvlf_1_data[index].exp; /* get expected results */
1011: 1004 000280A3 0d effffff89f 50 movl _index,r0
1012: 1005 000280AA 48 03 50 50 shll $3,r0,r0
1013: 1006 000280AE 0d e000000004 effffff88f movl _cvlf_1_data+4(r0),_sgl_expected
1014: 1007 000280B9 # sgl_value_2 = 0x40800000; /* floating '1' */
1015: 1008 000280B9 0d 8f40800000 effffff884 movl $1082130432,_sgl_value_2
1016: 1009 000280C4 # /*
1017: 1010 000280C4 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1018: 1011 000280C4 # * The force loop flag is set after the first error.
1019: 1012 000280C4 # */
1020: 1013 000280C4 # asm("_pipe3_8_lp1:");
1021: 1014 000280C4 _pipe3_8_lp1:
1022: 1015 000280C4 # asm("cvlf _sgl_value_1"); /* load (negate) the data */
1023: 1016 000280C4 76 effffff87e cvlf _sgl_value_1
1024: 1017 000280CA # asm("nop");
1025: 1018 000280CA 10 nop
1026: 1019 000280CB # asm("nop");
1027: 1020 000280CB 10 nop
1028: 1021 000280CC # asm("nop");
1029: 1022 000280CC 10 nop
1030: 1023 000280CD # asm("stf _sgl_st_acc"); /* store the result */
1031: 1024 000280CD 26 effffff875 stf _sgl_st_acc
1032: 1025 000280D3 # asm("nop");
1033: 1026 000280D3 10 nop
1034: 1027 000280D4 # asm("nop");
1035: 1028 000280D4 10 nop
1036: 1029 000280D5 # asm("nop");
1037: 1030 000280D5 10 nop
1038: 1031 000280D6 # asm("mulf _sgl_value_2"); /* multipy by '1' (twice) */
1039: 1032 000280D6 e6 effffff86c mulf _sgl_value_2
1040: 1033 000280DC # asm("nop");
1041: 1034 000280DC 10 nop
1042: 1035 000280DD # asm("nop");
1043: 1036 000280DD 10 nop
1044: 1037 000280DE # asm("nop");
1045: 1038 000280DE 10 nop
1046: 1039 000280DF # asm("stf _sgl_value_6"); /* store the result */
1047: 1040 000280DF 26 effffff863 stf _sgl_value_6
1048: 1041 000280E5 # if( force_loop )
1049: 1042 000280E5 5d effffff85d tstl _force_loop
1050: 1043 000280EB 31 02 jeql L332
1051: 1044 000280ED # asm("brb _pipe3_8_lp1");; /* loop on the error */
1052: 1045 000280ED 11 d5 brb _pipe3_8_lp1
1053: 1046 000280EF L332:
1054: 1047 000280EF # /*
1055: 1048 000280EF # * verify the results
1056: 1049 000280EF # */
1057: 1050 000280EF # if( (sgl_st_acc != sgl_expected) || /* COMPARE the values */
1058: 1051 000280EF # (sgl_value_6 != sgl_expected) )
1059: 1052 000280EF 1d effffff853 effffff84e cmpl _sgl_st_acc,_sgl_expected
1060: 1053 000280FA 21 0d jneq L9992
1061: 1054 000280FC 1d effffff846 effffff841 cmpl _sgl_value_6,_sgl_expected
1062: 1055 00028107 31 42 jeql L333
1063: 1056 00028109 L9992:
1064: 1057 00028109 # {
1065: 1058 00028109 # errcnt++; /* bump the error count */
1066: 1059 00028109 6d effffff839 incl _errcnt
1067: 1060 0002810F # if ( prt_error )
1068: 1061 0002810F 5d effffff833 tstl _prt_error
1069: 1062 00028115 31 0d jeql L334
1070: 1063 00028117 # print_pipe3_er("Cache Data, 3 NO-OPS");
1071: 1064 00028117 .data 1
1072: 1065 00000d7e * L335:
1073: 1066 00000d7e * 436163686520446174612C203 .ascii "Cache Data, 3 NO-OPS\0"
1074: 3204E4F2D4F505300
1075: 1067 00000d93 * .text
1076: 1068 00028117 dd 8f00000d7e pushl $L335
1077: 1069 0002811D fe 08 ef00000392 callf $8,_print_pipe3_er
1078: 1070 00028124 # if ( halt_flg )
1079: 1071 00028124 L334:
1080: 1072 00028124 5d effffff81e tstl _halt_flg
1081: 1073 0002812A 31 0d jeql L336
1082: 1074 0002812C # pipe3_er_hlt( subtest );
1083: 1075 0002812C dd effffff816 pushl _subtest
1084: 1076 00028132 fe 08 ef00000489 callf $8,_pipe3_er_hlt
1085: 1077 00028139 # if ( loop_on_err ) {
1086: 1078 00028139 L336:
1087: 1079 00028139 5d effffff809 tstl _loop_on_err
1088: 1080 0002813F 31 0a jeql L337
1089: 1081 00028141 # force_loop = TRUE; /* set the force loop flag */
1090: 1082 00028141 0d 01 effffff800 movl $1,_force_loop
1091: 1083 00028148 # asm("brw _pipe3_8_lp1"); /* and loop */
1092: 1084 00028148 13 ff79 brw _pipe3_8_lp1
1093: 1085 0002814B # }
1094: 1086 0002814B # } /* end of compare error */
1095: 1087 0002814B L337:
1096: 1088 0002814B # } while( index++ < max_cvlf_1_index );
1097: 1089 0002814B L333:
1098: 1090 0002814B L330:
1099: 1091 0002814B 0d effffff7f7 50 movl _index,r0
1100: 1092 00028152 6d effffff7f0 incl _index
1101: 1093 00028158 1d 50 effffff7e9 cmpl r0,_max_cvlf_1_index
1102: 1094 0002815F 81 03 13 ff29 jlss L331
1103: 1095 00028164 L329:
1104: 1096 00028164 # } /* end of subtest 8 */
1105: 1097 00028164 40 ret#2
1106: 1098 00028165 .set L325,0x0
1107: 1099 00028165 L327:
1108: 1100 00028165 13 ff19 jbr L328
1109: 1101 00028168 .data
1110: 1102 00000ce8 * .text
1111: 1103 00028168 .align 1
1112: 1104 00028168 .globl _pipe3_9
1113: 1105 00028168 _pipe3_9:
1114: 1106 00028168 0000 .word L338
1115: 1107 0002816A #
1116: 1108 0002816A #
1117: 1109 0002816A #
1118: 1110 0002816A #
1119: 1111 0002816A #
1120: 1112 0002816A #
1121: 1113 0002816A # /*****************************************************************************
1122: 1114 0002816A # *
1123: 1115 0002816A # * SUBTEST 9
1124: 1116 0002816A # * data on the stack, no NO-OPs
1125: 1117 0002816A # *
1126: 1118 0002816A # *****************************************************************************/
1127: 1119 0002816A # pipe3_9()
1128: 1120 0002816A # {
1129: 1121 0002816A 13 017b jbr L340
1130: 1122 0002816D L341:
1131: 1123 0002816D # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */
1132: 1124 0002816D ed 6d effffff7d4 moval (r13),_pre_event_fp
1133: 1125 00028174 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */
1134: 1126 00028174 ed 6e effffff7cd moval (r14),_pre_event_sp
1135: 1127 0002817B # force_loop = FALSE; /* clear force_loop flag */
1136: 1128 0002817B 4d effffff7c7 clrl _force_loop
1137: 1129 00028181 # index = 0;
1138: 1130 00028181 4d effffff7c1 clrl _index
1139: 1131 00028187 # do
1140: 1132 00028187 L344:
1141: 1133 00028187 # {
1142: 1134 00028187 # sgl_value_1 = cvlf_1_data[index].ld; /* get operand 1 */
1143: 1135 00028187 0d effffff7bb 50 movl _index,r0
1144: 1136 0002818E 48 03 50 50 shll $3,r0,r0
1145: 1137 00028192 0d e000000000 effffff7ab movl _cvlf_1_data(r0),_sgl_value_1
1146: 1138 0002819D # sgl_expected = cvlf_1_data[index].exp; /* get expected results */
1147: 1139 0002819D 0d effffff7a5 50 movl _index,r0
1148: 1140 000281A4 48 03 50 50 shll $3,r0,r0
1149: 1141 000281A8 0d e000000004 effffff795 movl _cvlf_1_data+4(r0),_sgl_expected
1150: 1142 000281B3 # sgl_value_2 = 0x40800000; /* floating '1' */
1151: 1143 000281B3 0d 8f40800000 effffff78a movl $1082130432,_sgl_value_2
1152: 1144 000281BE # asm("moval _pointer_data,_sgl_value_4");/* init / final SP value */
1153: 1145 000281BE ed effffff784 effffff77f moval _pointer_data,_sgl_value_4
1154: 1146 000281C9 # /*
1155: 1147 000281C9 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1156: 1148 000281C9 # * The force loop flag is set after the first error.
1157: 1149 000281C9 # */
1158: 1150 000281C9 # asm("_pipe3_9_lp1:");
1159: 1151 000281C9 _pipe3_9_lp1:
1160: 1152 000281C9 # asm("moval _pointer_data,r14"); /* set the stack pointer */
1161: 1153 000281C9 ed effffff779 5e moval _pointer_data,r14
1162: 1154 000281D0 # asm("movl _sgl_value_2,-(r14)"); /* push a floating '1' */
1163: 1155 000281D0 0d effffff772 7e movl _sgl_value_2,-(r14)
1164: 1156 000281D7 # asm("movl _sgl_value_1,-(r14)"); /* push the operand */
1165: 1157 000281D7 0d effffff76b 7e movl _sgl_value_1,-(r14)
1166: 1158 000281DE # /*
1167: 1159 000281DE # * now pop the data off the stack
1168: 1160 000281DE # */
1169: 1161 000281DE #
1170: 1162 000281DE # asm("cvlf (r14)+"); /* load (negate) the data */
1171: 1163 000281DE 76 8e cvlf (r14)+
1172: 1164 000281E0 # asm("stf r5"); /* store the result */
1173: 1165 000281E0 26 55 stf r5
1174: 1166 000281E2 # asm("mulf (r14)+"); /* multipy by '1' */
1175: 1167 000281E2 e6 8e mulf (r14)+
1176: 1168 000281E4 # asm("stf r6"); /* store the result */
1177: 1169 000281E4 26 56 stf r6
1178: 1170 000281E6 # if( force_loop )
1179: 1171 000281E6 5d effffff75c tstl _force_loop
1180: 1172 000281EC 31 02 jeql L345
1181: 1173 000281EE # asm("brb _pipe3_9_lp1");; /* loop on the error */
1182: 1174 000281EE 11 d9 brb _pipe3_9_lp1
1183: 1175 000281F0 L345:
1184: 1176 000281F0 # /*
1185: 1177 000281F0 # * verify the results
1186: 1178 000281F0 # */
1187: 1179 000281F0 # asm("movl r5,_sgl_st_acc"); /* get the 1st store value */
1188: 1180 000281F0 0d 55 effffff751 movl r5,_sgl_st_acc
1189: 1181 000281F7 # asm("movl r6,_sgl_value_6"); /* get the 2nd store value */
1190: 1182 000281F7 0d 56 effffff74a movl r6,_sgl_value_6
1191: 1183 000281FE # asm("moval (r14),_sgl_value_5"); /* save the stack pointer */
1192: 1184 000281FE ed 6e effffff743 moval (r14),_sgl_value_5
1193: 1185 00028205 # if( (sgl_st_acc != sgl_expected) || /* verify the results... */
1194: 1186 00028205 # (sgl_value_6 != sgl_expected) ||
1195: 1187 00028205 # (sgl_value_5 != sgl_value_4) ) /* ... and the final SP */
1196: 1188 00028205 1d effffff73d effffff738 cmpl _sgl_st_acc,_sgl_expected
1197: 1189 00028210 21 1d jneq L9991
1198: 1190 00028212 1d effffff730 effffff72b cmpl _sgl_value_6,_sgl_expected
1199: 1191 0002821D 21 10 jneq L9991
1200: 1192 0002821F 1d effffff723 effffff71e cmpl _sgl_value_5,_sgl_value_4
1201: 1193 0002822A 21 03 13 0091 jeql L346
1202: 1194 0002822F L9991:
1203: 1195 0002822F # {
1204: 1196 0002822F # asm("movl _pre_event_fp,r13"); /* restore frame pointer */
1205: 1197 0002822F 0d effffff713 5d movl _pre_event_fp,r13
1206: 1198 00028236 # asm("movl _pre_event_sp,r14"); /* restore stack pointer */
1207: 1199 00028236 0d effffff70c 5e movl _pre_event_sp,r14
1208: 1200 0002823D # errcnt++; /* bump the error count */
1209: 1201 0002823D 6d effffff705 incl _errcnt
1210: 1202 00028243 # if ( prt_error ) {
1211: 1203 00028243 5d effffff6ff tstl _prt_error
1212: 1204 00028249 31 4e jeql L347
1213: 1205 0002824B # print_pipe3_er("Pop data from the STACK");
1214: 1206 0002824B .data 1
1215: 1207 00000d93 * L348:
1216: 1208 00000d93 * 506F7020646174612066726F6 .ascii "Pop data from the STACK\0"
1217: D2074686520535441434B00
1218: 1209 00000dab * .text
1219: 1210 0002824B dd 8f00000d93 pushl $L348
1220: 1211 00028251 fe 08 ef0000025e callf $8,_print_pipe3_er
1221: 1212 00028258 # writes("final Stack Pointer = ");
1222: 1213 00028258 .data 1
1223: 1214 00000dab * L349:
1224: 1215 00000dab * 66696E616C20537461636B205 .ascii "final Stack Pointer = \0"
1225: 06F696E746572203D2000
1226: 1216 00000dc2 * .text
1227: 1217 00028258 dd 8f00000dab pushl $L349
1228: 1218 0002825E fe 08 effffff6e3 callf $8,_writes
1229: 1219 00028265 # write32h( sgl_value_5 );
1230: 1220 00028265 dd effffff6dd pushl _sgl_value_5
1231: 1221 0002826B fe 08 effffff6d6 callf $8,_write32h
1232: 1222 00028272 # writes(", expected = ");
1233: 1223 00028272 .data 1
1234: 1224 00000dc2 * L351:
1235: 1225 00000dc2 * 2C20206578706563746564203 .ascii ", expected = \0"
1236: D2000
1237: 1226 00000dd1 * .text
1238: 1227 00028272 dd 8f00000dc2 pushl $L351
1239: 1228 00028278 fe 08 effffff6c9 callf $8,_writes
1240: 1229 0002827F # write32h( sgl_value_4 );
1241: 1230 0002827F dd effffff6c3 pushl _sgl_value_4
1242: 1231 00028285 fe 08 effffff6bc callf $8,_write32h
1243: 1232 0002828C # writes(" \n");
1244: 1233 0002828C .data 1
1245: 1234 00000dd1 * L352:
1246: 1235 00000dd1 * 200A00 .ascii " \12\0"
1247: 1236 00000dd4 * .text
1248: 1237 0002828C dd 8f00000dd1 pushl $L352
1249: 1238 00028292 fe 08 effffff6af callf $8,_writes
1250: 1239 00028299 # }
1251: 1240 00028299 # if ( halt_flg )
1252: 1241 00028299 L347:
1253: 1242 00028299 5d effffff6a9 tstl _halt_flg
1254: 1243 0002829F 31 0d jeql L353
1255: 1244 000282A1 # pipe3_er_hlt( subtest );
1256: 1245 000282A1 dd effffff6a1 pushl _subtest
1257: 1246 000282A7 fe 08 ef00000314 callf $8,_pipe3_er_hlt
1258: 1247 000282AE # if ( loop_on_err ) {
1259: 1248 000282AE L353:
1260: 1249 000282AE 5d effffff694 tstl _loop_on_err
1261: 1250 000282B4 31 0a jeql L354
1262: 1251 000282B6 # force_loop = TRUE; /* set the force loop flag */
1263: 1252 000282B6 0d 01 effffff68b movl $1,_force_loop
1264: 1253 000282BD # asm("brw _pipe3_9_lp1"); /* and loop */
1265: 1254 000282BD 13 ff09 brw _pipe3_9_lp1
1266: 1255 000282C0 # }
1267: 1256 000282C0 # } /* end of compare error */
1268: 1257 000282C0 L354:
1269: 1258 000282C0 # } while( index++ < max_cvlf_1_index );
1270: 1259 000282C0 L346:
1271: 1260 000282C0 L343:
1272: 1261 000282C0 0d effffff682 50 movl _index,r0
1273: 1262 000282C7 6d effffff67b incl _index
1274: 1263 000282CD 1d 50 effffff674 cmpl r0,_max_cvlf_1_index
1275: 1264 000282D4 81 03 13 feae jlss L344
1276: 1265 000282D9 L342:
1277: 1266 000282D9 # asm("movl _pre_event_fp,r13"); /* restore the frame pointer */
1278: 1267 000282D9 0d effffff669 5d movl _pre_event_fp,r13
1279: 1268 000282E0 # asm("movl _pre_event_sp,r14"); /* restore the stack pointer */
1280: 1269 000282E0 0d effffff662 5e movl _pre_event_sp,r14
1281: 1270 000282E7 # } /* end of subtest 9 */
1282: 1271 000282E7 40 ret#2
1283: 1272 000282E8 .set L338,0x0
1284: 1273 000282E8 L340:
1285: 1274 000282E8 13 fe82 jbr L341
1286: 1275 000282EB .data
1287: 1276 00000ce8 * .text
1288: 1277 000282EB 00 .align 1
1289: 1278 000282EC .globl _pipe3_10
1290: 1279 000282EC _pipe3_10:
1291: 1280 000282EC 0000 .word L355
1292: 1281 000282EE #
1293: 1282 000282EE #
1294: 1283 000282EE #
1295: 1284 000282EE #
1296: 1285 000282EE #
1297: 1286 000282EE #
1298: 1287 000282EE # /******************************************************************************
1299: 1288 000282EE # *
1300: 1289 000282EE # * SUBTEST 10
1301: 1290 000282EE # * get data via indexed FRAME pointer
1302: 1291 000282EE # *
1303: 1292 000282EE # * ADDR INDEX DATA
1304: 1293 000282EE # * pointer_data 4 <the 1st STF result goes here>
1305: 1294 000282EE # * pointer_data-4 3 <the 2nd STF result goes here>
1306: 1295 000282EE # * pointer_data-8 2 <operand data>
1307: 1296 000282EE # * pointer_data-12 1 <floating '1'>
1308: 1297 000282EE # * pointer_data-16 0 point the frame pointer here
1309: 1298 000282EE # *
1310: 1299 000282EE # ******************************************************************************/
1311: 1300 000282EE # pipe3_10()
1312: 1301 000282EE # {
1313: 1302 000282EE 13 01c2 jbr L357
1314: 1303 000282F1 L358:
1315: 1304 000282F1 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */
1316: 1305 000282F1 ed 6d effffff650 moval (r13),_pre_event_fp
1317: 1306 000282F8 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */
1318: 1307 000282F8 ed 6e effffff649 moval (r14),_pre_event_sp
1319: 1308 000282FF # force_loop = FALSE; /* clear force_loop flag */
1320: 1309 000282FF 4d effffff643 clrl _force_loop
1321: 1310 00028305 # index = 0;
1322: 1311 00028305 4d effffff63d clrl _index
1323: 1312 0002830B # do
1324: 1313 0002830B L361:
1325: 1314 0002830B # {
1326: 1315 0002830B # sgl_value_1 = cvlf_1_data[index].ld; /* get operand 1 */
1327: 1316 0002830B 0d effffff637 50 movl _index,r0
1328: 1317 00028312 48 03 50 50 shll $3,r0,r0
1329: 1318 00028316 0d e000000000 effffff627 movl _cvlf_1_data(r0),_sgl_value_1
1330: 1319 00028321 # sgl_expected = cvlf_1_data[index].exp; /* get expected results */
1331: 1320 00028321 0d effffff621 50 movl _index,r0
1332: 1321 00028328 48 03 50 50 shll $3,r0,r0
1333: 1322 0002832C 0d e000000004 effffff611 movl _cvlf_1_data+4(r0),_sgl_expected
1334: 1323 00028337 # sgl_value_2 = 0x40800000; /* floating '1' */
1335: 1324 00028337 0d 8f40800000 effffff606 movl $1082130432,_sgl_value_2
1336: 1325 00028342 # asm("moval _pointer_data,_sgl_value_4");/* get store data's addr */
1337: 1326 00028342 ed effffff600 effffff5fb moval _pointer_data,_sgl_value_4
1338: 1327 0002834D # sgl_value_4 -= 8; /* decrement it by 8 (bytes)*/
1339: 1328 0002834D 2c 08 effffff5f4 subl2 $8,_sgl_value_4
1340: 1329 00028354 # asm("movl _sgl_value_1,*_sgl_value_4"); /* set the operand data */
1341: 1330 00028354 0d effffff5ee fffffff5e9 movl _sgl_value_1,*_sgl_value_4
1342: 1331 0002835F # sgl_value_4 -= 4; /* decrement it by 4 (bytes)*/
1343: 1332 0002835F 2c 04 effffff5e2 subl2 $4,_sgl_value_4
1344: 1333 00028366 # asm("movl _sgl_value_2,*_sgl_value_4"); /* set the floating '1' */
1345: 1334 00028366 0d effffff5dc fffffff5d7 movl _sgl_value_2,*_sgl_value_4
1346: 1335 00028371 # sgl_value_4 -= 4; /* get FRAME PTR address */
1347: 1336 00028371 2c 04 effffff5d0 subl2 $4,_sgl_value_4
1348: 1337 00028378 # /*
1349: 1338 00028378 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1350: 1339 00028378 # * The force loop flag is set after the first error.
1351: 1340 00028378 # */
1352: 1341 00028378 # asm("_pipe3_10_lp1:");
1353: 1342 00028378 _pipe3_10_lp1:
1354: 1343 00028378 # asm("movl _sgl_value_4,r13"); /* set the FRAME POINTER */
1355: 1344 00028378 0d effffff5ca 5d movl _sgl_value_4,r13
1356: 1345 0002837F # asm("movl $1,r1"); /* r1 index = 1 longwords */
1357: 1346 0002837F 0d 01 51 movl $1,r1
1358: 1347 00028382 # asm("movl $2,r2"); /* r2 index = 2 longwords */
1359: 1348 00028382 0d 02 52 movl $2,r2
1360: 1349 00028385 # asm("movl $3,r3"); /* r3 index = 3 longwords */
1361: 1350 00028385 0d 03 53 movl $3,r3
1362: 1351 00028388 # asm("movl $4,r4"); /* r4 index = 4 longwords */
1363: 1352 00028388 0d 04 54 movl $4,r4
1364: 1353 0002838B # asm("cvlf (r13)[r2]"); /* load the op (indx = 2) */
1365: 1354 0002838B 76 426d cvlf (r13)[r2]
1366: 1355 0002838E # asm("stf (r13)[r4]"); /* store -indexed by r4 */
1367: 1356 0002838E 26 446d stf (r13)[r4]
1368: 1357 00028391 # asm("mulf (r13)[r1]"); /* multiply by '1' (indx=1) */
1369: 1358 00028391 e6 416d mulf (r13)[r1]
1370: 1359 00028394 # asm("stf (r13)[r3]"); /* store -indexed by r3 */
1371: 1360 00028394 26 436d stf (r13)[r3]
1372: 1361 00028397 # if( force_loop )
1373: 1362 00028397 5d effffff5ab tstl _force_loop
1374: 1363 0002839D 31 02 jeql L362
1375: 1364 0002839F # asm("brb _pipe3_10_lp1");; /* loop on the error */
1376: 1365 0002839F 11 d7 brb _pipe3_10_lp1
1377: 1366 000283A1 L362:
1378: 1367 000283A1 # /*
1379: 1368 000283A1 # * verify the results
1380: 1369 000283A1 # */
1381: 1370 000283A1 # sgl_st_acc = pointer_data; /* save 1st stored value */
1382: 1371 000283A1 0d effffff5a1 effffff59c movl _pointer_data,_sgl_st_acc
1383: 1372 000283AC # asm("moval _pointer_data,_sgl_value_5"); /* get addr of 1st stf */
1384: 1373 000283AC ed effffff596 effffff591 moval _pointer_data,_sgl_value_5
1385: 1374 000283B7 # sgl_value_5 -= 4; /* decrement by 4 (bytes) */
1386: 1375 000283B7 2c 04 effffff58a subl2 $4,_sgl_value_5
1387: 1376 000283BE # asm("movl *_sgl_value_5,_sgl_value_6"); /* save 2nd store value */
1388: 1377 000283BE 0d fffffff584 effffff57f movl *_sgl_value_5,_sgl_value_6
1389: 1378 000283C9 # asm("moval (r13),_sgl_value_5"); /* save the frame pointer */
1390: 1379 000283C9 ed 6d effffff578 moval (r13),_sgl_value_5
1391: 1380 000283D0 # if( (sgl_st_acc != sgl_expected) || /* verify the results... */
1392: 1381 000283D0 # (sgl_value_6 != sgl_expected) ||
1393: 1382 000283D0 # (sgl_value_5 != sgl_value_4) ) /* ... and the final FP */
1394: 1383 000283D0 1d effffff572 effffff56d cmpl _sgl_st_acc,_sgl_expected
1395: 1384 000283DB 21 1d jneq L9990
1396: 1385 000283DD 1d effffff565 effffff560 cmpl _sgl_value_6,_sgl_expected
1397: 1386 000283E8 21 10 jneq L9990
1398: 1387 000283EA 1d effffff558 effffff553 cmpl _sgl_value_5,_sgl_value_4
1399: 1388 000283F5 21 03 13 0091 jeql L363
1400: 1389 000283FA L9990:
1401: 1390 000283FA # {
1402: 1391 000283FA # asm("movl _pre_event_fp,r13"); /* restore frame pointer */
1403: 1392 000283FA 0d effffff548 5d movl _pre_event_fp,r13
1404: 1393 00028401 # asm("movl _pre_event_sp,r14"); /* restore stack pointer */
1405: 1394 00028401 0d effffff541 5e movl _pre_event_sp,r14
1406: 1395 00028408 # errcnt++; /* bump the error count */
1407: 1396 00028408 6d effffff53a incl _errcnt
1408: 1397 0002840E # if ( prt_error ) {
1409: 1398 0002840E 5d effffff534 tstl _prt_error
1410: 1399 00028414 31 4e jeql L364
1411: 1400 00028416 # print_pipe3_er("indexed FP addressing");
1412: 1401 00028416 .data 1
1413: 1402 00000dd4 * L365:
1414: 1403 00000dd4 * 696E646578656420465020616 .ascii "indexed FP addressing\0"
1415: 46472657373696E6700
1416: 1404 00000dea * .text
1417: 1405 00028416 dd 8f00000dd4 pushl $L365
1418: 1406 0002841C fe 08 ef00000093 callf $8,_print_pipe3_er
1419: 1407 00028423 # writes("final Frame Pointer = ");
1420: 1408 00028423 .data 1
1421: 1409 00000dea * L366:
1422: 1410 00000dea * 66696E616C204672616D65205 .ascii "final Frame Pointer = \0"
1423: 06F696E746572203D2000
1424: 1411 00000e01 * .text
1425: 1412 00028423 dd 8f00000dea pushl $L366
1426: 1413 00028429 fe 08 effffff518 callf $8,_writes
1427: 1414 00028430 # writeh( sgl_value_5 );
1428: 1415 00028430 dd effffff512 pushl _sgl_value_5
1429: 1416 00028436 fe 08 effffff50b callf $8,_writeh
1430: 1417 0002843D # writes(", expected FP = ");
1431: 1418 0002843D .data 1
1432: 1419 00000e01 * L368:
1433: 1420 00000e01 * 2C20206578706563746564204 .ascii ", expected FP = \0"
1434: 650203D2000
1435: 1421 00000e13 * .text
1436: 1422 0002843D dd 8f00000e01 pushl $L368
1437: 1423 00028443 fe 08 effffff4fe callf $8,_writes
1438: 1424 0002844A # writeh( sgl_value_4 );
1439: 1425 0002844A dd effffff4f8 pushl _sgl_value_4
1440: 1426 00028450 fe 08 effffff4f1 callf $8,_writeh
1441: 1427 00028457 # writes(" \n");
1442: 1428 00028457 .data 1
1443: 1429 00000e13 * L369:
1444: 1430 00000e13 * 200A00 .ascii " \12\0"
1445: 1431 00000e16 * .text
1446: 1432 00028457 dd 8f00000e13 pushl $L369
1447: 1433 0002845D fe 08 effffff4e4 callf $8,_writes
1448: 1434 00028464 # }
1449: 1435 00028464 # if ( halt_flg )
1450: 1436 00028464 L364:
1451: 1437 00028464 5d effffff4de tstl _halt_flg
1452: 1438 0002846A 31 0d jeql L370
1453: 1439 0002846C # pipe3_er_hlt( subtest );
1454: 1440 0002846C dd effffff4d6 pushl _subtest
1455: 1441 00028472 fe 08 ef00000149 callf $8,_pipe3_er_hlt
1456: 1442 00028479 # if ( loop_on_err ) {
1457: 1443 00028479 L370:
1458: 1444 00028479 5d effffff4c9 tstl _loop_on_err
1459: 1445 0002847F 31 0a jeql L371
1460: 1446 00028481 # force_loop = TRUE; /* set the force loop flag */
1461: 1447 00028481 0d 01 effffff4c0 movl $1,_force_loop
1462: 1448 00028488 # asm("brw _pipe3_10_lp1"); /* and loop */
1463: 1449 00028488 13 feed brw _pipe3_10_lp1
1464: 1450 0002848B # }
1465: 1451 0002848B # } /* end of compare error */
1466: 1452 0002848B L371:
1467: 1453 0002848B # } while( index++ < max_cvlf_1_index );
1468: 1454 0002848B L363:
1469: 1455 0002848B L360:
1470: 1456 0002848B 0d effffff4b7 50 movl _index,r0
1471: 1457 00028492 6d effffff4b0 incl _index
1472: 1458 00028498 1d 50 effffff4a9 cmpl r0,_max_cvlf_1_index
1473: 1459 0002849F 81 03 13 fe67 jlss L361
1474: 1460 000284A4 L359:
1475: 1461 000284A4 # asm("movl _pre_event_fp,r13"); /* restore the frame pointer */
1476: 1462 000284A4 0d effffff49e 5d movl _pre_event_fp,r13
1477: 1463 000284AB # asm("movl _pre_event_sp,r14"); /* restore the stack pointer */
1478: 1464 000284AB 0d effffff497 5e movl _pre_event_sp,r14
1479: 1465 000284B2 # } /* end of subtest 10 */
1480: 1466 000284B2 40 ret#2
1481: 1467 000284B3 .set L355,0x0
1482: 1468 000284B3 L357:
1483: 1469 000284B3 13 fe3b jbr L358
1484: 1470 000284B6 .data
1485: 1471 00000ce8 * .text
1486: 1472 000284B6 .align 1
1487: 1473 000284B6 .globl _print_pipe3_er
1488: 1474 000284B6 _print_pipe3_er:
1489: 1475 000284B6 0000 .word L372
1490: 1476 000284B8 #
1491: 1477 000284B8 #
1492: 1478 000284B8 # /******************************************************************************
1493: 1479 000284B8 # *
1494: 1480 000284B8 # *
1495: 1481 000284B8 # * print an error in the following form
1496: 1482 000284B8 # *
1497: 1483 000284B8 # * operand = xxxxxxxx, final Acc = xxxxxxxx, data index = dd
1498: 1484 000284B8 # * expected Acc = xxxxxxxx
1499: 1485 000284B8 # *
1500: 1486 000284B8 # ******************************************************************************/
1501: 1487 000284B8 # print_pipe3_er(msg)
1502: 1488 000284B8 # char *msg;
1503: 1489 000284B8 # {
1504: 1490 000284B8 13 0103 jbr L374
1505: 1491 000284BB L375:
1506: 1492 000284BB # writes(" \n"); /* start a new print line */
1507: 1493 000284BB .data 1
1508: 1494 00000e16 * L376:
1509: 1495 00000e16 * 200A00 .ascii " \12\0"
1510: 1496 00000e19 * .text
1511: 1497 000284BB dd 8f00000e16 pushl $L376
1512: 1498 000284C1 fe 08 effffff480 callf $8,_writes
1513: 1499 000284C8 # writes("cycle: ");
1514: 1500 000284C8 .data 1
1515: 1501 00000e19 * L377:
1516: 1502 00000e19 * 6379636C653A2000 .ascii "cycle: \0"
1517: 1503 00000e21 * .text
1518: 1504 000284C8 dd 8f00000e19 pushl $L377
1519: 1505 000284CE fe 08 effffff473 callf $8,_writes
1520: 1506 000284D5 # writed( cycle );
1521: 1507 000284D5 dd effffff46d pushl _cycle
1522: 1508 000284DB fe 08 effffff466 callf $8,_writed
1523: 1509 000284E2 # writes(" test ");
1524: 1510 000284E2 .data 1
1525: 1511 00000e21 * L379:
1526: 1512 00000e21 * 20746573742000 .ascii " test \0"
1527: 1513 00000e28 * .text
1528: 1514 000284E2 dd 8f00000e21 pushl $L379
1529: 1515 000284E8 fe 08 effffff459 callf $8,_writes
1530: 1516 000284EF # writed( test_no );
1531: 1517 000284EF dd effffff453 pushl _test_no
1532: 1518 000284F5 fe 08 effffff44c callf $8,_writed
1533: 1519 000284FC # writes(" (Pipe 3), subtest ");
1534: 1520 000284FC .data 1
1535: 1521 00000e28 * L380:
1536: 1522 00000e28 * 202028506970652033292C207 .ascii " (Pipe 3), subtest \0"
1537: 37562746573742000
1538: 1523 00000e3d * .text
1539: 1524 000284FC dd 8f00000e28 pushl $L380
1540: 1525 00028502 fe 08 effffff43f callf $8,_writes
1541: 1526 00028509 # writed( subtest );
1542: 1527 00028509 dd effffff439 pushl _subtest
1543: 1528 0002850F fe 08 effffff432 callf $8,_writed
1544: 1529 00028516 # writes(" error - ");
1545: 1530 00028516 .data 1
1546: 1531 00000e3d * L381:
1547: 1532 00000e3d * 206572726F72202D2000 .ascii " error - \0"
1548: 1533 00000e47 * .text
1549: 1534 00028516 dd 8f00000e3d pushl $L381
1550: 1535 0002851C fe 08 effffff425 callf $8,_writes
1551: 1536 00028523 # writes( msg );
1552: 1537 00028523 dd ad04 pushl 4(fp)
1553: 1538 00028526 fe 08 effffff41b callf $8,_writes
1554: 1539 0002852D # writec('\n');
1555: 1540 0002852D dd 0a pushl $10
1556: 1541 0002852F fe 08 effffff412 callf $8,_writec
1557: 1542 00028536 # writes(" CVLF(op), STF, MULF(1.0), STF\n");
1558: 1543 00028536 .data 1
1559: 1544 00000e47 * L383:
1560: 1545 00000e47 * 2043564C46286F70292C20535 .ascii " CVLF(op), STF, MULF(1.0), STF\12\0"
1561: 4462C204D554C4628312E3029
1562: 2C205354460A00
1563: 1546 00000e67 * .text
1564: 1547 00028536 dd 8f00000e47 pushl $L383
1565: 1548 0002853C fe 08 effffff405 callf $8,_writes
1566: 1549 00028543 # writes("operand = ");
1567: 1550 00028543 .data 1
1568: 1551 00000e67 * L384:
1569: 1552 00000e67 * 6F706572616E64203D2000 .ascii "operand = \0"
1570: 1553 00000e72 * .text
1571: 1554 00028543 dd 8f00000e67 pushl $L384
1572: 1555 00028549 fe 08 effffff3f8 callf $8,_writes
1573: 1556 00028550 # write32h( sgl_value_1 );
1574: 1557 00028550 dd effffff3f2 pushl _sgl_value_1
1575: 1558 00028556 fe 08 effffff3eb callf $8,_write32h
1576: 1559 0002855D # writes(", final Acc = ");
1577: 1560 0002855D .data 1
1578: 1561 00000e72 * L385:
1579: 1562 00000e72 * 2C20202066696E616C2041636 .ascii ", final Acc = \0"
1580: 3203D2000
1581: 1563 00000e83 * .text
1582: 1564 0002855D dd 8f00000e72 pushl $L385
1583: 1565 00028563 fe 08 effffff3de callf $8,_writes
1584: 1566 0002856A # write32h( sgl_st_acc );
1585: 1567 0002856A dd effffff3d8 pushl _sgl_st_acc
1586: 1568 00028570 fe 08 effffff3d1 callf $8,_write32h
1587: 1569 00028577 # writes(", data index = ");
1588: 1570 00028577 .data 1
1589: 1571 00000e83 * L386:
1590: 1572 00000e83 * 2C2020206461746120696E646 .ascii ", data index = \0"
1591: 578203D2000
1592: 1573 00000e95 * .text
1593: 1574 00028577 dd 8f00000e83 pushl $L386
1594: 1575 0002857D fe 08 effffff3c4 callf $8,_writes
1595: 1576 00028584 # writed( index );
1596: 1577 00028584 dd effffff3be pushl _index
1597: 1578 0002858A fe 08 effffff3b7 callf $8,_writed
1598: 1579 00028591 # writec('\n');
1599: 1580 00028591 dd 0a pushl $10
1600: 1581 00028593 fe 08 effffff3ae callf $8,_writec
1601: 1582 0002859A # writes(" expected Acc = ");
1602: 1583 0002859A .data 1
1603: 1584 00000e95 * L387:
1604: 1585 00000e95 * 2020202020202020202020202 .ascii " expected Acc = \0"
1605: 0202020202020657870656374
1606: 656420416363203D2000
1607: 1586 00000eb8 * .text
1608: 1587 0002859A dd 8f00000e95 pushl $L387
1609: 1588 000285A0 fe 08 effffff3a1 callf $8,_writes
1610: 1589 000285A7 # write32h( sgl_expected );
1611: 1590 000285A7 dd effffff39b pushl _sgl_expected
1612: 1591 000285AD fe 08 effffff394 callf $8,_write32h
1613: 1592 000285B4 # writec('\n');
1614: 1593 000285B4 dd 0a pushl $10
1615: 1594 000285B6 fe 08 effffff38b callf $8,_writec
1616: 1595 000285BD # }
1617: 1596 000285BD 40 ret#2
1618: 1597 000285BE .set L372,0x0
1619: 1598 000285BE L374:
1620: 1599 000285BE 13 fefa jbr L375
1621: 1600 000285C1 .data
1622: 1601 00000ce8 * .text
1623: 1602 000285C1 00 .align 1
1624: 1603 000285C2 .globl _pipe3_er_hlt
1625: 1604 000285C2 _pipe3_er_hlt:
1626: 1605 000285C2 0000 .word L388
1627: 1606 000285C4 #
1628: 1607 000285C4 #
1629: 1608 000285C4 #
1630: 1609 000285C4 #
1631: 1610 000285C4 #
1632: 1611 000285C4 # /******************************************************************************
1633: 1612 000285C4 # *
1634: 1613 000285C4 # * HALT ON ERROR ROUTINE
1635: 1614 000285C4 # *
1636: 1615 000285C4 # * halt with the necessary information saved in the registers
1637: 1616 000285C4 # *
1638: 1617 000285C4 # ******************************************************************************/
1639: 1618 000285C4 # pipe3_er_hlt( subtest )
1640: 1619 000285C4 # int subtest;
1641: 1620 000285C4 # {
1642: 1621 000285C4 11 67 jbr L390
1643: 1622 000285C6 L391:
1644: 1623 000285C6 # asm("movl _test_no,r0"); /* r0 = test number */
1645: 1624 000285C6 0d effffff37c 50 movl _test_no,r0
1646: 1625 000285CD # asm("movl _subtest,r1"); /* r1 = subtest number */
1647: 1626 000285CD 0d effffff375 51 movl _subtest,r1
1648: 1627 000285D4 # asm("movl $1,r2"); /* r2 = error code */
1649: 1628 000285D4 0d 01 52 movl $1,r2
1650: 1629 000285D7 # asm("movl _cycle,r3"); /* r3 = cycle count */
1651: 1630 000285D7 0d effffff36b 53 movl _cycle,r3
1652: 1631 000285DE # asm("movl _sgl_value_1,r4"); /* r4 = sgl operand */
1653: 1632 000285DE 0d effffff364 54 movl _sgl_value_1,r4
1654: 1633 000285E5 # asm("movl _sgl_st_acc,r5"); /* r5 = sgl stored */
1655: 1634 000285E5 0d effffff35d 55 movl _sgl_st_acc,r5
1656: 1635 000285EC # asm("movl _sgl_expected,r6"); /* r6 = sgl expected */
1657: 1636 000285EC 0d effffff356 56 movl _sgl_expected,r6
1658: 1637 000285F3 # asm("movl _index,r7"); /* r7 = data index */
1659: 1638 000285F3 0d effffff34f 57 movl _index,r7
1660: 1639 000285FA # asm("movl _sgl_value_2,r8"); /* r8 = floating one */
1661: 1640 000285FA 0d effffff348 58 movl _sgl_value_2,r8
1662: 1641 00028601 # if( subtest == 9 ) {
1663: 1642 00028601 1d ad04 09 cmpl 4(fp),$9
1664: 1643 00028605 21 10 jneq L392
1665: 1644 00028607 # asm("movl _sgl_value_5,r9"); /* r9 = final SP value */
1666: 1645 00028607 0d effffff33b 59 movl _sgl_value_5,r9
1667: 1646 0002860E # asm("movl _sgl_value_4,r10"); /* r10= expected SP value */
1668: 1647 0002860E 0d effffff334 5a movl _sgl_value_4,r10
1669: 1648 00028615 # } else
1670: 1649 00028615 11 14 jbr L393
1671: 1650 00028617 L392:
1672: 1651 00028617 # if( subtest == 10 ) {
1673: 1652 00028617 1d ad04 0a cmpl 4(fp),$10
1674: 1653 0002861B 21 0e jneq L394
1675: 1654 0002861D # asm("movl _sgl_value_5,r9"); /* r9 = final FP value */
1676: 1655 0002861D 0d effffff325 59 movl _sgl_value_5,r9
1677: 1656 00028624 # asm("movl _sgl_value_4,r10"); /* r10= expected FP value */
1678: 1657 00028624 0d effffff31e 5a movl _sgl_value_4,r10
1679: 1658 0002862B # };
1680: 1659 0002862B L394:
1681: 1660 0002862B L393:
1682: 1661 0002862B # asm(".globl _pipe3_1_hlt");
1683: 1662 0002862B .globl _pipe3_1_hlt
1684: 1663 0002862B # asm("_pipe3_1_hlt:"); /* PC after the halt */
1685: 1664 0002862B _pipe3_1_hlt:
1686: 1665 0002862B # asm("halt"); /* HALT ... */
1687: 1666 0002862B 00 halt
1688: 1667 0002862C # } /* end of halt on error */
1689: 1668 0002862C 40 ret#2
1690: 1669 0002862D .set L388,0x0
1691: 1670 0002862D L390:
1692: 1671 0002862D 11 97 jbr L391
1693: 1672 0002862F .data
1694: 1672 0004FF77 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.