|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00000d8c * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _pipe_12
6: 6 00000000 _pipe_12:
7: 7 0002D4FC 0000 .word L215
8: 8 0002D4FE # #include "fpp_defs.h"
9: 9 0002D4FE #
10: 10 0002D4FE #
11: 11 0002D4FE # /*****************************************************************************
12: 12 0002D4FE # *
13: 13 0002D4FE # * DBL PIPELINE TEST #12 MONITOR
14: 14 0002D4FE # *
15: 15 0002D4FE # * This test will do:
16: 16 0002D4FE # *
17: 17 0002D4FE # * LDD(x) SUBD(x) ADDD(0) SUBD(x) ADDD(x) SUBD(0) ADDD(x) STD
18: 18 0002D4FE # *
19: 19 0002D4FE # * where the x's are the LDD data patterns.
20: 20 0002D4FE # *****************************************************************************/
21: 21 0002D4FE # pipe_12()
22: 22 0002D4FE # {
23: 23 0002D4FE 13 00b0 jbr L217
24: 24 0002D501 L218:
25: 25 0002D501 # asm(".globl _pipeline_12_t");
26: 26 0002D501 .globl _pipeline_12_t
27: 27 0002D501 # asm("_pipeline_12_t:"); /* entry address */
28: 28 0002D501 _pipeline_12_t:
29: 29 0002D501 # if( (cycle == 1) && (prt_hdrs) ) /* print headers on 1st cycle */
30: 30 0002D501 1d effffffff5 01 cmpl _cycle,$1
31: 31 0002D508 21 2a jneq L219
32: 32 0002D50A 5d efffffffec tstl _prt_hdrs
33: 33 0002D510 31 22 jeql L219
34: 34 0002D512 # {
35: 35 0002D512 # if( run_all )
36: 36 0002D512 5d efffffffe4 tstl _run_all
37: 37 0002D518 31 0d jeql L220
38: 38 0002D51A # writes("\n");
39: 39 0002D51A .data 1
40: 40 00000d8c * L222:
41: 41 00000d8c * 0A00 .ascii "\12\0"
42: 42 00000d8e * .text
43: 43 0002D51A dd 8f00000d8c pushl $L222
44: 44 0002D520 fe 08 efffffffd5 callf $8,_writes
45: 45 0002D527 # writes(" PIPE_12");
46: 46 0002D527 L220:
47: 47 0002D527 .data 1
48: 48 00000d8e * L223:
49: 49 00000d8e * 20504950455F313200 .ascii " PIPE_12\0"
50: 50 00000d97 * .text
51: 51 0002D527 dd 8f00000d8e pushl $L223
52: 52 0002D52D fe 08 efffffffc8 callf $8,_writes
53: 53 0002D534 # }
54: 54 0002D534 # subtest = 1;
55: 55 0002D534 L219:
56: 56 0002D534 0d 01 efffffffc1 movl $1,_subtest
57: 57 0002D53B # pipe12_1(); /* data in REGs, no NOPs */
58: 58 0002D53B fe 04 ef00000072 callf $4,_pipe12_1
59: 59 0002D542 # subtest++; /* increment subtest num */
60: 60 0002D542 6d efffffffb4 incl _subtest
61: 61 0002D548 # pipe12_2(); /* data in REGs, 1 NOP */
62: 62 0002D548 fe 04 ef00000189 callf $4,_pipe12_2
63: 63 0002D54F # subtest++; /* increment subtest num */
64: 64 0002D54F 6d efffffffa7 incl _subtest
65: 65 0002D555 # pipe12_3(); /* data in REGs, 2 NOPs */
66: 66 0002D555 fe 04 ef000002a8 callf $4,_pipe12_3
67: 67 0002D55C # subtest++; /* increment subtest num */
68: 68 0002D55C 6d efffffff9a incl _subtest
69: 69 0002D562 # pipe12_4(); /* data in REGs, 3 NOPs */
70: 70 0002D562 fe 04 ef000003cd callf $4,_pipe12_4
71: 71 0002D569 # subtest++; /* increment subtest num */
72: 72 0002D569 6d efffffff8d incl _subtest
73: 73 0002D56F # pipe12_5(); /* data in CACHE, no NOPs */
74: 74 0002D56F fe 04 ef000004fa callf $4,_pipe12_5
75: 75 0002D576 # subtest++; /* increment subtest num */
76: 76 0002D576 6d efffffff80 incl _subtest
77: 77 0002D57C # pipe12_6(); /* data in CACHE, 1 NOP */
78: 78 0002D57C fe 04 ef000005f9 callf $4,_pipe12_6
79: 79 0002D583 # subtest++; /* increment subtest num */
80: 80 0002D583 6d efffffff73 incl _subtest
81: 81 0002D589 # pipe12_7(); /* data in CACHE, 2 NOPs */
82: 82 0002D589 fe 04 ef00000700 callf $4,_pipe12_7
83: 83 0002D590 # subtest++; /* increment subtest num */
84: 84 0002D590 6d efffffff66 incl _subtest
85: 85 0002D596 # pipe12_8(); /* data in CACHE, 3 NOPs */
86: 86 0002D596 fe 04 ef0000080d callf $4,_pipe12_8
87: 87 0002D59D # subtest++; /* increment subtest num */
88: 88 0002D59D 6d efffffff59 incl _subtest
89: 89 0002D5A3 # pipe12_9(); /* data via F.P. 0 NOPs */
90: 90 0002D5A3 fe 04 ef00000922 callf $4,_pipe12_9
91: 91 0002D5AA # asm("jmp *return"); /* return to the test monitor */
92: 92 0002D5AA 71 ffffffff4c jmp *return
93: 93 0002D5B0 # }
94: 94 0002D5B0 40 ret#2
95: 95 0002D5B1 .set L215,0x0
96: 96 0002D5B1 L217:
97: 97 0002D5B1 13 ff4d jbr L218
98: 98 0002D5B4 .data
99: 99 00000d8c * .text
100: 100 0002D5B4 .align 1
101: 101 0002D5B4 .globl _pipe12_1
102: 102 0002D5B4 _pipe12_1:
103: 103 0002D5B4 0000 .word L233
104: 104 0002D5B6 #
105: 105 0002D5B6 #
106: 106 0002D5B6 #
107: 107 0002D5B6 #
108: 108 0002D5B6 #
109: 109 0002D5B6 # /************************************************************************
110: 110 0002D5B6 # *
111: 111 0002D5B6 # * SUBTEST 1
112: 112 0002D5B6 # * data in registers, no NO-OPs
113: 113 0002D5B6 # *
114: 114 0002D5B6 # ************************************************************************/
115: 115 0002D5B6 # pipe12_1()
116: 116 0002D5B6 # {
117: 117 0002D5B6 13 011c jbr L235
118: 118 0002D5B9 L236:
119: 119 0002D5B9 # force_loop = FALSE; /* clear the force_loop flg */
120: 120 0002D5B9 4d efffffff3d clrl _force_loop
121: 121 0002D5BF # index = 0;
122: 122 0002D5BF 4d efffffff37 clrl _index
123: 123 0002D5C5 # do
124: 124 0002D5C5 L239:
125: 125 0002D5C5 # {
126: 126 0002D5C5 # sgl_value_1 = ldd_1_data[index].ld.m; /* get the operand's MSW */
127: 127 0002D5C5 0d efffffff31 50 movl _index,r0
128: 128 0002D5CC 48 04 50 50 shll $4,r0,r0
129: 129 0002D5D0 0d e000000000 efffffff21 movl _ldd_1_data(r0),_sgl_value_1
130: 130 0002D5DB # sgl_value_2 = ldd_1_data[index].ld.l; /* get the operand's MSW */
131: 131 0002D5DB 0d efffffff1b 50 movl _index,r0
132: 132 0002D5E2 48 04 50 50 shll $4,r0,r0
133: 133 0002D5E6 0d e000000004 efffffff0b movl _ldd_1_data+4(r0),_sgl_value_2
134: 134 0002D5F1 # dbl_expected = ldd_1_data[index].exp; /* get the expected results */
135: 135 0002D5F1 48 04 efffffff04 50 shll $4,_index,r0
136: 136 0002D5F9 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0
137: 137 0002D600 0d a004 effffffef8 movl 4(r0),_dbl_expected+4
138: 138 0002D608 0d 60 effffffeed movl (r0),_dbl_expected
139: 139 0002D60F # /*
140: 140 0002D60F # * If LOOP ON ERROR is set, this is the loop for this subtest.
141: 141 0002D60F # * The force loop flag is set after the first error.
142: 142 0002D60F # */
143: 143 0002D60F # asm("_pipe12_1_lp1:");
144: 144 0002D60F _pipe12_1_lp1:
145: 145 0002D60F # asm("movl _sgl_value_1,r4"); /* move the data to r4/r5 */
146: 146 0002D60F 0d effffffee7 54 movl _sgl_value_1,r4
147: 147 0002D616 # asm("movl _sgl_value_2,r5");
148: 148 0002D616 0d effffffee0 55 movl _sgl_value_2,r5
149: 149 0002D61D # asm("clrl r2"); /* clear r2 / r3 */
150: 150 0002D61D 4d 52 clrl r2
151: 151 0002D61F # asm("clrl r3");
152: 152 0002D61F 4d 53 clrl r3
153: 153 0002D621 # asm("ldd r4"); /* load the op. ( op ) */
154: 154 0002D621 07 54 ldd r4
155: 155 0002D623 # asm("subd r4"); /* subtract the op. ( 0 ) */
156: 156 0002D623 d7 54 subd r4
157: 157 0002D625 # asm("addd r2"); /* add a '0' ( 0 ) */
158: 158 0002D625 c7 52 addd r2
159: 159 0002D627 # asm("subd r4"); /* subtract the op. (-op ) */
160: 160 0002D627 d7 54 subd r4
161: 161 0002D629 # asm("addd r4"); /* add the op. ( 0 ) */
162: 162 0002D629 c7 54 addd r4
163: 163 0002D62B # asm("subd r2"); /* subtract a '0' ( 0 ) */
164: 164 0002D62B d7 52 subd r2
165: 165 0002D62D # asm("addd r4"); /* add the op. ( op ) */
166: 166 0002D62D c7 54 addd r4
167: 167 0002D62F # asm("std r6"); /* store the result ( op ) */
168: 168 0002D62F 27 56 std r6
169: 169 0002D631 # if( force_loop )
170: 170 0002D631 5d effffffec5 tstl _force_loop
171: 171 0002D637 31 02 jeql L240
172: 172 0002D639 # asm("brb _pipe12_1_lp1");; /* run the loop again */
173: 173 0002D639 11 d4 brb _pipe12_1_lp1
174: 174 0002D63B L240:
175: 175 0002D63B # /*
176: 176 0002D63B # * verify the results
177: 177 0002D63B # */
178: 178 0002D63B # asm("movl r6,_sgl_value_3"); /* get the result */
179: 179 0002D63B 0d 56 effffffeba movl r6,_sgl_value_3
180: 180 0002D642 # asm("movl r7,_sgl_value_4");
181: 181 0002D642 0d 57 effffffeb3 movl r7,_sgl_value_4
182: 182 0002D649 # dbl_st_acc.m = sgl_value_3;
183: 183 0002D649 0d effffffead effffffea8 movl _sgl_value_3,_dbl_st_acc
184: 184 0002D654 # dbl_st_acc.l = sgl_value_4;
185: 185 0002D654 0d effffffea2 effffffea1 movl _sgl_value_4,_dbl_st_acc+4
186: 186 0002D65F # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */
187: 187 0002D65F # (dbl_st_acc.l != dbl_expected.l) )
188: 188 0002D65F 1d effffffe97 effffffe92 cmpl _dbl_st_acc,_dbl_expected
189: 189 0002D66A 21 0d jneq L9999
190: 190 0002D66C 1d effffffe8e effffffe89 cmpl _dbl_st_acc+4,_dbl_expected+4
191: 191 0002D677 31 42 jeql L241
192: 192 0002D679 L9999:
193: 193 0002D679 # {
194: 194 0002D679 # errcnt++; /* bump the error count */
195: 195 0002D679 6d effffffe7d incl _errcnt
196: 196 0002D67F # if ( prt_error )
197: 197 0002D67F 5d effffffe77 tstl _prt_error
198: 198 0002D685 31 0d jeql L242
199: 199 0002D687 # print_pipe12_er("Reg. Data, 0 NO-OPs");
200: 200 0002D687 .data 1
201: 201 00000d97 * L244:
202: 202 00000d97 * 5265672E20446174612C20302 .ascii "Reg. Data, 0 NO-OPs\0"
203: 04E4F2D4F507300
204: 203 00000dab * .text
205: 204 0002D687 dd 8f00000d97 pushl $L244
206: 205 0002D68D fe 08 ef00000a28 callf $8,_print_pipe12_er
207: 206 0002D694 # if ( halt_flg ) /* halt on error? */
208: 207 0002D694 L242:
209: 208 0002D694 5d effffffe62 tstl _halt_flg
210: 209 0002D69A 31 0d jeql L245
211: 210 0002D69C # pipe12_er_hlt( subtest );
212: 211 0002D69C dd effffffe5a pushl _subtest
213: 212 0002D6A2 fe 08 ef00000b61 callf $8,_pipe12_er_hlt
214: 213 0002D6A9 # if ( loop_on_err ) {
215: 214 0002D6A9 L245:
216: 215 0002D6A9 5d effffffe4d tstl _loop_on_err
217: 216 0002D6AF 31 0a jeql L247
218: 217 0002D6B1 # force_loop = TRUE; /* set the force loop flag */
219: 218 0002D6B1 0d 01 effffffe44 movl $1,_force_loop
220: 219 0002D6B8 # asm("brw _pipe12_1_lp1"); /* and loop */
221: 220 0002D6B8 13 ff54 brw _pipe12_1_lp1
222: 221 0002D6BB # }
223: 222 0002D6BB # } /* end of compare error */
224: 223 0002D6BB L247:
225: 224 0002D6BB # } while( index++ < max_ldd_1_index );
226: 225 0002D6BB L241:
227: 226 0002D6BB L238:
228: 227 0002D6BB 0d effffffe3b 50 movl _index,r0
229: 228 0002D6C2 6d effffffe34 incl _index
230: 229 0002D6C8 1d 50 effffffe2d cmpl r0,_max_ldd_1_index
231: 230 0002D6CF 81 03 13 fef1 jlss L239
232: 231 0002D6D4 L237:
233: 232 0002D6D4 # } /* end of subtest 1 */
234: 233 0002D6D4 40 ret#2
235: 234 0002D6D5 .set L233,0x0
236: 235 0002D6D5 L235:
237: 236 0002D6D5 13 fee1 jbr L236
238: 237 0002D6D8 .data
239: 238 00000d8c * .text
240: 239 0002D6D8 .align 1
241: 240 0002D6D8 .globl _pipe12_2
242: 241 0002D6D8 _pipe12_2:
243: 242 0002D6D8 0000 .word L248
244: 243 0002D6DA #
245: 244 0002D6DA #
246: 245 0002D6DA #
247: 246 0002D6DA #
248: 247 0002D6DA #
249: 248 0002D6DA #
250: 249 0002D6DA # /************************************************************************
251: 250 0002D6DA # *
252: 251 0002D6DA # * SUBTEST 2
253: 252 0002D6DA # * data in registers, 1 NO-OP
254: 253 0002D6DA # *
255: 254 0002D6DA # ************************************************************************/
256: 255 0002D6DA # pipe12_2()
257: 256 0002D6DA # {
258: 257 0002D6DA 13 0123 jbr L250
259: 258 0002D6DD L251:
260: 259 0002D6DD # force_loop = FALSE; /* clear the force_loop flg */
261: 260 0002D6DD 4d effffffe19 clrl _force_loop
262: 261 0002D6E3 # index = 0;
263: 262 0002D6E3 4d effffffe13 clrl _index
264: 263 0002D6E9 # do
265: 264 0002D6E9 L254:
266: 265 0002D6E9 # {
267: 266 0002D6E9 # sgl_value_1 = ldd_1_data[index].ld.m; /* get the operand's MSW */
268: 267 0002D6E9 0d effffffe0d 50 movl _index,r0
269: 268 0002D6F0 48 04 50 50 shll $4,r0,r0
270: 269 0002D6F4 0d e000000000 effffffdfd movl _ldd_1_data(r0),_sgl_value_1
271: 270 0002D6FF # sgl_value_2 = ldd_1_data[index].ld.l; /* get the operand's MSW */
272: 271 0002D6FF 0d effffffdf7 50 movl _index,r0
273: 272 0002D706 48 04 50 50 shll $4,r0,r0
274: 273 0002D70A 0d e000000004 effffffde7 movl _ldd_1_data+4(r0),_sgl_value_2
275: 274 0002D715 # dbl_expected = ldd_1_data[index].exp; /* get the expected results */
276: 275 0002D715 48 04 effffffde0 50 shll $4,_index,r0
277: 276 0002D71D 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0
278: 277 0002D724 0d a004 effffffdd4 movl 4(r0),_dbl_expected+4
279: 278 0002D72C 0d 60 effffffdc9 movl (r0),_dbl_expected
280: 279 0002D733 # /*
281: 280 0002D733 # * If LOOP ON ERROR is set, this is the loop for this subtest.
282: 281 0002D733 # * The force loop flag is set after the first error.
283: 282 0002D733 # */
284: 283 0002D733 # asm("_pipe12_2_lp1:");
285: 284 0002D733 _pipe12_2_lp1:
286: 285 0002D733 # asm("movl _sgl_value_1,r4"); /* move the data to r4/r5 */
287: 286 0002D733 0d effffffdc3 54 movl _sgl_value_1,r4
288: 287 0002D73A # asm("movl _sgl_value_2,r5");
289: 288 0002D73A 0d effffffdbc 55 movl _sgl_value_2,r5
290: 289 0002D741 # asm("clrl r2"); /* clear r2 / r3 */
291: 290 0002D741 4d 52 clrl r2
292: 291 0002D743 # asm("clrl r3");
293: 292 0002D743 4d 53 clrl r3
294: 293 0002D745 # asm("ldd r4"); /* load the op. ( op ) */
295: 294 0002D745 07 54 ldd r4
296: 295 0002D747 # asm("nop");
297: 296 0002D747 10 nop
298: 297 0002D748 # asm("subd r4"); /* subtract the op. ( 0 ) */
299: 298 0002D748 d7 54 subd r4
300: 299 0002D74A # asm("nop");
301: 300 0002D74A 10 nop
302: 301 0002D74B # asm("addd r2"); /* add a '0' ( 0 ) */
303: 302 0002D74B c7 52 addd r2
304: 303 0002D74D # asm("nop");
305: 304 0002D74D 10 nop
306: 305 0002D74E # asm("subd r4"); /* subtract the op. (-op ) */
307: 306 0002D74E d7 54 subd r4
308: 307 0002D750 # asm("nop");
309: 308 0002D750 10 nop
310: 309 0002D751 # asm("addd r4"); /* add the op. ( 0 ) */
311: 310 0002D751 c7 54 addd r4
312: 311 0002D753 # asm("nop");
313: 312 0002D753 10 nop
314: 313 0002D754 # asm("subd r2"); /* subtract a '0' ( 0 ) */
315: 314 0002D754 d7 52 subd r2
316: 315 0002D756 # asm("nop");
317: 316 0002D756 10 nop
318: 317 0002D757 # asm("addd r4"); /* add the op. ( op ) */
319: 318 0002D757 c7 54 addd r4
320: 319 0002D759 # asm("nop");
321: 320 0002D759 10 nop
322: 321 0002D75A # asm("std r6"); /* store the result ( op ) */
323: 322 0002D75A 27 56 std r6
324: 323 0002D75C # if( force_loop )
325: 324 0002D75C 5d effffffd9a tstl _force_loop
326: 325 0002D762 31 02 jeql L255
327: 326 0002D764 # asm("brb _pipe12_2_lp1");; /* run the loop again */
328: 327 0002D764 11 cd brb _pipe12_2_lp1
329: 328 0002D766 L255:
330: 329 0002D766 # /*
331: 330 0002D766 # * verify the results
332: 331 0002D766 # */
333: 332 0002D766 # asm("movl r6,_sgl_value_3"); /* get the result */
334: 333 0002D766 0d 56 effffffd8f movl r6,_sgl_value_3
335: 334 0002D76D # asm("movl r7,_sgl_value_4");
336: 335 0002D76D 0d 57 effffffd88 movl r7,_sgl_value_4
337: 336 0002D774 # dbl_st_acc.m = sgl_value_3;
338: 337 0002D774 0d effffffd82 effffffd7d movl _sgl_value_3,_dbl_st_acc
339: 338 0002D77F # dbl_st_acc.l = sgl_value_4;
340: 339 0002D77F 0d effffffd77 effffffd76 movl _sgl_value_4,_dbl_st_acc+4
341: 340 0002D78A # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */
342: 341 0002D78A # (dbl_st_acc.l != dbl_expected.l) )
343: 342 0002D78A 1d effffffd6c effffffd67 cmpl _dbl_st_acc,_dbl_expected
344: 343 0002D795 21 0d jneq L9998
345: 344 0002D797 1d effffffd63 effffffd5e cmpl _dbl_st_acc+4,_dbl_expected+4
346: 345 0002D7A2 31 42 jeql L256
347: 346 0002D7A4 L9998:
348: 347 0002D7A4 # {
349: 348 0002D7A4 # errcnt++; /* bump the error count */
350: 349 0002D7A4 6d effffffd52 incl _errcnt
351: 350 0002D7AA # if ( prt_error )
352: 351 0002D7AA 5d effffffd4c tstl _prt_error
353: 352 0002D7B0 31 0d jeql L257
354: 353 0002D7B2 # print_pipe12_er("Reg. Data, 1 NO-OP");
355: 354 0002D7B2 .data 1
356: 355 00000dab * L258:
357: 356 00000dab * 5265672E20446174612C20312 .ascii "Reg. Data, 1 NO-OP\0"
358: 04E4F2D4F5000
359: 357 00000dbe * .text
360: 358 0002D7B2 dd 8f00000dab pushl $L258
361: 359 0002D7B8 fe 08 ef000008fd callf $8,_print_pipe12_er
362: 360 0002D7BF # if ( halt_flg ) /* halt on error? */
363: 361 0002D7BF L257:
364: 362 0002D7BF 5d effffffd37 tstl _halt_flg
365: 363 0002D7C5 31 0d jeql L259
366: 364 0002D7C7 # pipe12_er_hlt( subtest );
367: 365 0002D7C7 dd effffffd2f pushl _subtest
368: 366 0002D7CD fe 08 ef00000a36 callf $8,_pipe12_er_hlt
369: 367 0002D7D4 # if ( loop_on_err ) {
370: 368 0002D7D4 L259:
371: 369 0002D7D4 5d effffffd22 tstl _loop_on_err
372: 370 0002D7DA 31 0a jeql L260
373: 371 0002D7DC # force_loop = TRUE; /* set the force loop flag */
374: 372 0002D7DC 0d 01 effffffd19 movl $1,_force_loop
375: 373 0002D7E3 # asm("brw _pipe12_2_lp1"); /* and loop */
376: 374 0002D7E3 13 ff4d brw _pipe12_2_lp1
377: 375 0002D7E6 # }
378: 376 0002D7E6 # } /* end of compare error */
379: 377 0002D7E6 L260:
380: 378 0002D7E6 # } while( index++ < max_ldd_1_index );
381: 379 0002D7E6 L256:
382: 380 0002D7E6 L253:
383: 381 0002D7E6 0d effffffd10 50 movl _index,r0
384: 382 0002D7ED 6d effffffd09 incl _index
385: 383 0002D7F3 1d 50 effffffd02 cmpl r0,_max_ldd_1_index
386: 384 0002D7FA 81 03 13 feea jlss L254
387: 385 0002D7FF L252:
388: 386 0002D7FF # } /* end of subtest 2 */
389: 387 0002D7FF 40 ret#2
390: 388 0002D800 .set L248,0x0
391: 389 0002D800 L250:
392: 390 0002D800 13 feda jbr L251
393: 391 0002D803 .data
394: 392 00000d8c * .text
395: 393 0002D803 00 .align 1
396: 394 0002D804 .globl _pipe12_3
397: 395 0002D804 _pipe12_3:
398: 396 0002D804 0000 .word L261
399: 397 0002D806 #
400: 398 0002D806 #
401: 399 0002D806 #
402: 400 0002D806 #
403: 401 0002D806 #
404: 402 0002D806 # /************************************************************************
405: 403 0002D806 # *
406: 404 0002D806 # * SUBTEST 3
407: 405 0002D806 # * data in registers, 2 NO-OPs
408: 406 0002D806 # *
409: 407 0002D806 # ************************************************************************/
410: 408 0002D806 # pipe12_3()
411: 409 0002D806 # {
412: 410 0002D806 13 012a jbr L263
413: 411 0002D809 L264:
414: 412 0002D809 # force_loop = FALSE; /* clear the force_loop flg */
415: 413 0002D809 4d effffffced clrl _force_loop
416: 414 0002D80F # index = 0;
417: 415 0002D80F 4d effffffce7 clrl _index
418: 416 0002D815 # do
419: 417 0002D815 L267:
420: 418 0002D815 # {
421: 419 0002D815 # sgl_value_1 = ldd_1_data[index].ld.m; /* get the operand's MSW */
422: 420 0002D815 0d effffffce1 50 movl _index,r0
423: 421 0002D81C 48 04 50 50 shll $4,r0,r0
424: 422 0002D820 0d e000000000 effffffcd1 movl _ldd_1_data(r0),_sgl_value_1
425: 423 0002D82B # sgl_value_2 = ldd_1_data[index].ld.l; /* get the operand's MSW */
426: 424 0002D82B 0d effffffccb 50 movl _index,r0
427: 425 0002D832 48 04 50 50 shll $4,r0,r0
428: 426 0002D836 0d e000000004 effffffcbb movl _ldd_1_data+4(r0),_sgl_value_2
429: 427 0002D841 # dbl_expected = ldd_1_data[index].exp; /* get the expected results */
430: 428 0002D841 48 04 effffffcb4 50 shll $4,_index,r0
431: 429 0002D849 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0
432: 430 0002D850 0d a004 effffffca8 movl 4(r0),_dbl_expected+4
433: 431 0002D858 0d 60 effffffc9d movl (r0),_dbl_expected
434: 432 0002D85F # /*
435: 433 0002D85F # * If LOOP ON ERROR is set, this is the loop for this subtest.
436: 434 0002D85F # * The force loop flag is set after the first error.
437: 435 0002D85F # */
438: 436 0002D85F # asm("_pipe12_3_lp1:");
439: 437 0002D85F _pipe12_3_lp1:
440: 438 0002D85F # asm("movl _sgl_value_1,r4"); /* move the data to r4/r5 */
441: 439 0002D85F 0d effffffc97 54 movl _sgl_value_1,r4
442: 440 0002D866 # asm("movl _sgl_value_2,r5");
443: 441 0002D866 0d effffffc90 55 movl _sgl_value_2,r5
444: 442 0002D86D # asm("clrl r2"); /* clear r2 / r3 */
445: 443 0002D86D 4d 52 clrl r2
446: 444 0002D86F # asm("clrl r3");
447: 445 0002D86F 4d 53 clrl r3
448: 446 0002D871 # asm("ldd r4"); /* load the op. ( op ) */
449: 447 0002D871 07 54 ldd r4
450: 448 0002D873 # asm("nop");
451: 449 0002D873 10 nop
452: 450 0002D874 # asm("nop");
453: 451 0002D874 10 nop
454: 452 0002D875 # asm("subd r4"); /* subtract the op. ( 0 ) */
455: 453 0002D875 d7 54 subd r4
456: 454 0002D877 # asm("nop");
457: 455 0002D877 10 nop
458: 456 0002D878 # asm("nop");
459: 457 0002D878 10 nop
460: 458 0002D879 # asm("addd r2"); /* add a '0' ( 0 ) */
461: 459 0002D879 c7 52 addd r2
462: 460 0002D87B # asm("nop");
463: 461 0002D87B 10 nop
464: 462 0002D87C # asm("nop");
465: 463 0002D87C 10 nop
466: 464 0002D87D # asm("subd r4"); /* subtract the op. (-op ) */
467: 465 0002D87D d7 54 subd r4
468: 466 0002D87F # asm("nop");
469: 467 0002D87F 10 nop
470: 468 0002D880 # asm("nop");
471: 469 0002D880 10 nop
472: 470 0002D881 # asm("addd r4"); /* add the op. ( 0 ) */
473: 471 0002D881 c7 54 addd r4
474: 472 0002D883 # asm("nop");
475: 473 0002D883 10 nop
476: 474 0002D884 # asm("nop");
477: 475 0002D884 10 nop
478: 476 0002D885 # asm("subd r2"); /* subtract a '0' ( 0 ) */
479: 477 0002D885 d7 52 subd r2
480: 478 0002D887 # asm("nop");
481: 479 0002D887 10 nop
482: 480 0002D888 # asm("nop");
483: 481 0002D888 10 nop
484: 482 0002D889 # asm("addd r4"); /* add the op. ( op ) */
485: 483 0002D889 c7 54 addd r4
486: 484 0002D88B # asm("nop");
487: 485 0002D88B 10 nop
488: 486 0002D88C # asm("nop");
489: 487 0002D88C 10 nop
490: 488 0002D88D # asm("std r6"); /* store the result ( op ) */
491: 489 0002D88D 27 56 std r6
492: 490 0002D88F # if( force_loop )
493: 491 0002D88F 5d effffffc67 tstl _force_loop
494: 492 0002D895 31 02 jeql L268
495: 493 0002D897 # asm("brb _pipe12_3_lp1");; /* run the loop again */
496: 494 0002D897 11 c6 brb _pipe12_3_lp1
497: 495 0002D899 L268:
498: 496 0002D899 # /*
499: 497 0002D899 # * verify the results
500: 498 0002D899 # */
501: 499 0002D899 # asm("movl r6,_sgl_value_3"); /* get the result */
502: 500 0002D899 0d 56 effffffc5c movl r6,_sgl_value_3
503: 501 0002D8A0 # asm("movl r7,_sgl_value_4");
504: 502 0002D8A0 0d 57 effffffc55 movl r7,_sgl_value_4
505: 503 0002D8A7 # dbl_st_acc.m = sgl_value_3;
506: 504 0002D8A7 0d effffffc4f effffffc4a movl _sgl_value_3,_dbl_st_acc
507: 505 0002D8B2 # dbl_st_acc.l = sgl_value_4;
508: 506 0002D8B2 0d effffffc44 effffffc43 movl _sgl_value_4,_dbl_st_acc+4
509: 507 0002D8BD # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */
510: 508 0002D8BD # (dbl_st_acc.l != dbl_expected.l) )
511: 509 0002D8BD 1d effffffc39 effffffc34 cmpl _dbl_st_acc,_dbl_expected
512: 510 0002D8C8 21 0d jneq L9997
513: 511 0002D8CA 1d effffffc30 effffffc2b cmpl _dbl_st_acc+4,_dbl_expected+4
514: 512 0002D8D5 31 42 jeql L269
515: 513 0002D8D7 L9997:
516: 514 0002D8D7 # {
517: 515 0002D8D7 # errcnt++; /* bump the error count */
518: 516 0002D8D7 6d effffffc1f incl _errcnt
519: 517 0002D8DD # if ( prt_error )
520: 518 0002D8DD 5d effffffc19 tstl _prt_error
521: 519 0002D8E3 31 0d jeql L270
522: 520 0002D8E5 # print_pipe12_er("Reg. Data, 2 NO-OPs");
523: 521 0002D8E5 .data 1
524: 522 00000dbe * L271:
525: 523 00000dbe * 5265672E20446174612C20322 .ascii "Reg. Data, 2 NO-OPs\0"
526: 04E4F2D4F507300
527: 524 00000dd2 * .text
528: 525 0002D8E5 dd 8f00000dbe pushl $L271
529: 526 0002D8EB fe 08 ef000007ca callf $8,_print_pipe12_er
530: 527 0002D8F2 # if ( halt_flg ) /* halt on error? */
531: 528 0002D8F2 L270:
532: 529 0002D8F2 5d effffffc04 tstl _halt_flg
533: 530 0002D8F8 31 0d jeql L272
534: 531 0002D8FA # pipe12_er_hlt( subtest );
535: 532 0002D8FA dd effffffbfc pushl _subtest
536: 533 0002D900 fe 08 ef00000903 callf $8,_pipe12_er_hlt
537: 534 0002D907 # if ( loop_on_err ) {
538: 535 0002D907 L272:
539: 536 0002D907 5d effffffbef tstl _loop_on_err
540: 537 0002D90D 31 0a jeql L273
541: 538 0002D90F # force_loop = TRUE; /* set the force loop flag */
542: 539 0002D90F 0d 01 effffffbe6 movl $1,_force_loop
543: 540 0002D916 # asm("brw _pipe12_3_lp1"); /* and loop */
544: 541 0002D916 13 ff46 brw _pipe12_3_lp1
545: 542 0002D919 # }
546: 543 0002D919 # } /* end of compare error */
547: 544 0002D919 L273:
548: 545 0002D919 # } while( index++ < max_ldd_1_index );
549: 546 0002D919 L269:
550: 547 0002D919 L266:
551: 548 0002D919 0d effffffbdd 50 movl _index,r0
552: 549 0002D920 6d effffffbd6 incl _index
553: 550 0002D926 1d 50 effffffbcf cmpl r0,_max_ldd_1_index
554: 551 0002D92D 81 03 13 fee3 jlss L267
555: 552 0002D932 L265:
556: 553 0002D932 # } /* end of subtest 3 */
557: 554 0002D932 40 ret#2
558: 555 0002D933 .set L261,0x0
559: 556 0002D933 L263:
560: 557 0002D933 13 fed3 jbr L264
561: 558 0002D936 .data
562: 559 00000d8c * .text
563: 560 0002D936 .align 1
564: 561 0002D936 .globl _pipe12_4
565: 562 0002D936 _pipe12_4:
566: 563 0002D936 0000 .word L274
567: 564 0002D938 #
568: 565 0002D938 #
569: 566 0002D938 #
570: 567 0002D938 #
571: 568 0002D938 #
572: 569 0002D938 # /************************************************************************
573: 570 0002D938 # *
574: 571 0002D938 # * SUBTEST 4
575: 572 0002D938 # * data in registers, 3 NO-OPs
576: 573 0002D938 # *
577: 574 0002D938 # ************************************************************************/
578: 575 0002D938 # pipe12_4()
579: 576 0002D938 # {
580: 577 0002D938 13 0131 jbr L276
581: 578 0002D93B L277:
582: 579 0002D93B # force_loop = FALSE; /* clear the force_loop flg */
583: 580 0002D93B 4d effffffbbb clrl _force_loop
584: 581 0002D941 # index = 0;
585: 582 0002D941 4d effffffbb5 clrl _index
586: 583 0002D947 # do
587: 584 0002D947 L280:
588: 585 0002D947 # {
589: 586 0002D947 # sgl_value_1 = ldd_1_data[index].ld.m; /* get the operand's MSW */
590: 587 0002D947 0d effffffbaf 50 movl _index,r0
591: 588 0002D94E 48 04 50 50 shll $4,r0,r0
592: 589 0002D952 0d e000000000 effffffb9f movl _ldd_1_data(r0),_sgl_value_1
593: 590 0002D95D # sgl_value_2 = ldd_1_data[index].ld.l; /* get the operand's MSW */
594: 591 0002D95D 0d effffffb99 50 movl _index,r0
595: 592 0002D964 48 04 50 50 shll $4,r0,r0
596: 593 0002D968 0d e000000004 effffffb89 movl _ldd_1_data+4(r0),_sgl_value_2
597: 594 0002D973 # dbl_expected = ldd_1_data[index].exp; /* get the expected results */
598: 595 0002D973 48 04 effffffb82 50 shll $4,_index,r0
599: 596 0002D97B 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0
600: 597 0002D982 0d a004 effffffb76 movl 4(r0),_dbl_expected+4
601: 598 0002D98A 0d 60 effffffb6b movl (r0),_dbl_expected
602: 599 0002D991 # /*
603: 600 0002D991 # * If LOOP ON ERROR is set, this is the loop for this subtest.
604: 601 0002D991 # * The force loop flag is set after the first error.
605: 602 0002D991 # */
606: 603 0002D991 # asm("_pipe12_4_lp1:");
607: 604 0002D991 _pipe12_4_lp1:
608: 605 0002D991 # asm("movl _sgl_value_1,r4"); /* move the data to r4/r5 */
609: 606 0002D991 0d effffffb65 54 movl _sgl_value_1,r4
610: 607 0002D998 # asm("movl _sgl_value_2,r5");
611: 608 0002D998 0d effffffb5e 55 movl _sgl_value_2,r5
612: 609 0002D99F # asm("clrl r2"); /* clear r2 / r3 */
613: 610 0002D99F 4d 52 clrl r2
614: 611 0002D9A1 # asm("clrl r3");
615: 612 0002D9A1 4d 53 clrl r3
616: 613 0002D9A3 # asm("ldd r4"); /* load the op. ( op ) */
617: 614 0002D9A3 07 54 ldd r4
618: 615 0002D9A5 # asm("nop");
619: 616 0002D9A5 10 nop
620: 617 0002D9A6 # asm("nop");
621: 618 0002D9A6 10 nop
622: 619 0002D9A7 # asm("nop");
623: 620 0002D9A7 10 nop
624: 621 0002D9A8 # asm("subd r4"); /* subtract the op. ( 0 ) */
625: 622 0002D9A8 d7 54 subd r4
626: 623 0002D9AA # asm("nop");
627: 624 0002D9AA 10 nop
628: 625 0002D9AB # asm("nop");
629: 626 0002D9AB 10 nop
630: 627 0002D9AC # asm("nop");
631: 628 0002D9AC 10 nop
632: 629 0002D9AD # asm("addd r2"); /* add a '0' ( 0 ) */
633: 630 0002D9AD c7 52 addd r2
634: 631 0002D9AF # asm("nop");
635: 632 0002D9AF 10 nop
636: 633 0002D9B0 # asm("nop");
637: 634 0002D9B0 10 nop
638: 635 0002D9B1 # asm("nop");
639: 636 0002D9B1 10 nop
640: 637 0002D9B2 # asm("subd r4"); /* subtract the op. (-op ) */
641: 638 0002D9B2 d7 54 subd r4
642: 639 0002D9B4 # asm("nop");
643: 640 0002D9B4 10 nop
644: 641 0002D9B5 # asm("nop");
645: 642 0002D9B5 10 nop
646: 643 0002D9B6 # asm("nop");
647: 644 0002D9B6 10 nop
648: 645 0002D9B7 # asm("addd r4"); /* add the op. ( 0 ) */
649: 646 0002D9B7 c7 54 addd r4
650: 647 0002D9B9 # asm("nop");
651: 648 0002D9B9 10 nop
652: 649 0002D9BA # asm("nop");
653: 650 0002D9BA 10 nop
654: 651 0002D9BB # asm("nop");
655: 652 0002D9BB 10 nop
656: 653 0002D9BC # asm("subd r2"); /* subtract a '0' ( 0 ) */
657: 654 0002D9BC d7 52 subd r2
658: 655 0002D9BE # asm("nop");
659: 656 0002D9BE 10 nop
660: 657 0002D9BF # asm("nop");
661: 658 0002D9BF 10 nop
662: 659 0002D9C0 # asm("nop");
663: 660 0002D9C0 10 nop
664: 661 0002D9C1 # asm("addd r4"); /* add the op. ( op ) */
665: 662 0002D9C1 c7 54 addd r4
666: 663 0002D9C3 # asm("nop");
667: 664 0002D9C3 10 nop
668: 665 0002D9C4 # asm("nop");
669: 666 0002D9C4 10 nop
670: 667 0002D9C5 # asm("nop");
671: 668 0002D9C5 10 nop
672: 669 0002D9C6 # asm("std r6"); /* store the result ( op ) */
673: 670 0002D9C6 27 56 std r6
674: 671 0002D9C8 # if( force_loop )
675: 672 0002D9C8 5d effffffb2e tstl _force_loop
676: 673 0002D9CE 31 02 jeql L281
677: 674 0002D9D0 # asm("brb _pipe12_4_lp1");; /* run the loop again */
678: 675 0002D9D0 11 bf brb _pipe12_4_lp1
679: 676 0002D9D2 L281:
680: 677 0002D9D2 # /*
681: 678 0002D9D2 # * verify the results
682: 679 0002D9D2 # */
683: 680 0002D9D2 # asm("movl r6,_sgl_value_3"); /* get the result */
684: 681 0002D9D2 0d 56 effffffb23 movl r6,_sgl_value_3
685: 682 0002D9D9 # asm("movl r7,_sgl_value_4");
686: 683 0002D9D9 0d 57 effffffb1c movl r7,_sgl_value_4
687: 684 0002D9E0 # dbl_st_acc.m = sgl_value_3;
688: 685 0002D9E0 0d effffffb16 effffffb11 movl _sgl_value_3,_dbl_st_acc
689: 686 0002D9EB # dbl_st_acc.l = sgl_value_4;
690: 687 0002D9EB 0d effffffb0b effffffb0a movl _sgl_value_4,_dbl_st_acc+4
691: 688 0002D9F6 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */
692: 689 0002D9F6 # (dbl_st_acc.l != dbl_expected.l) )
693: 690 0002D9F6 1d effffffb00 effffffafb cmpl _dbl_st_acc,_dbl_expected
694: 691 0002DA01 21 0d jneq L9996
695: 692 0002DA03 1d effffffaf7 effffffaf2 cmpl _dbl_st_acc+4,_dbl_expected+4
696: 693 0002DA0E 31 42 jeql L282
697: 694 0002DA10 L9996:
698: 695 0002DA10 # {
699: 696 0002DA10 # errcnt++; /* bump the error count */
700: 697 0002DA10 6d effffffae6 incl _errcnt
701: 698 0002DA16 # if ( prt_error )
702: 699 0002DA16 5d effffffae0 tstl _prt_error
703: 700 0002DA1C 31 0d jeql L283
704: 701 0002DA1E # print_pipe12_er("Reg. Data, 3 NO-OPs");
705: 702 0002DA1E .data 1
706: 703 00000dd2 * L284:
707: 704 00000dd2 * 5265672E20446174612C20332 .ascii "Reg. Data, 3 NO-OPs\0"
708: 04E4F2D4F507300
709: 705 00000de6 * .text
710: 706 0002DA1E dd 8f00000dd2 pushl $L284
711: 707 0002DA24 fe 08 ef00000691 callf $8,_print_pipe12_er
712: 708 0002DA2B # if ( halt_flg ) /* halt on error? */
713: 709 0002DA2B L283:
714: 710 0002DA2B 5d effffffacb tstl _halt_flg
715: 711 0002DA31 31 0d jeql L285
716: 712 0002DA33 # pipe12_er_hlt( subtest );
717: 713 0002DA33 dd effffffac3 pushl _subtest
718: 714 0002DA39 fe 08 ef000007ca callf $8,_pipe12_er_hlt
719: 715 0002DA40 # if ( loop_on_err ) {
720: 716 0002DA40 L285:
721: 717 0002DA40 5d effffffab6 tstl _loop_on_err
722: 718 0002DA46 31 0a jeql L286
723: 719 0002DA48 # force_loop = TRUE; /* set the force loop flag */
724: 720 0002DA48 0d 01 effffffaad movl $1,_force_loop
725: 721 0002DA4F # asm("brw _pipe12_4_lp1"); /* and loop */
726: 722 0002DA4F 13 ff3f brw _pipe12_4_lp1
727: 723 0002DA52 # }
728: 724 0002DA52 # } /* end of compare error */
729: 725 0002DA52 L286:
730: 726 0002DA52 # } while( index++ < max_ldd_1_index );
731: 727 0002DA52 L282:
732: 728 0002DA52 L279:
733: 729 0002DA52 0d effffffaa4 50 movl _index,r0
734: 730 0002DA59 6d effffffa9d incl _index
735: 731 0002DA5F 1d 50 effffffa96 cmpl r0,_max_ldd_1_index
736: 732 0002DA66 81 03 13 fedc jlss L280
737: 733 0002DA6B L278:
738: 734 0002DA6B # } /* end of subtest 4 */
739: 735 0002DA6B 40 ret#2
740: 736 0002DA6C .set L274,0x0
741: 737 0002DA6C L276:
742: 738 0002DA6C 13 fecc jbr L277
743: 739 0002DA6F .data
744: 740 00000d8c * .text
745: 741 0002DA6F 00 .align 1
746: 742 0002DA70 .globl _pipe12_5
747: 743 0002DA70 _pipe12_5:
748: 744 0002DA70 0000 .word L287
749: 745 0002DA72 #
750: 746 0002DA72 #
751: 747 0002DA72 #
752: 748 0002DA72 #
753: 749 0002DA72 #
754: 750 0002DA72 #
755: 751 0002DA72 # /************************************************************************
756: 752 0002DA72 # *
757: 753 0002DA72 # * SUBTEST 5
758: 754 0002DA72 # * data in cache, no NO-OPs
759: 755 0002DA72 # *
760: 756 0002DA72 # ************************************************************************/
761: 757 0002DA72 # pipe12_5()
762: 758 0002DA72 # {
763: 759 0002DA72 13 0104 jbr L289
764: 760 0002DA75 L290:
765: 761 0002DA75 # force_loop = FALSE; /* clear the force_loop flg */
766: 762 0002DA75 4d effffffa81 clrl _force_loop
767: 763 0002DA7B # index = 0;
768: 764 0002DA7B 4d effffffa7b clrl _index
769: 765 0002DA81 # do
770: 766 0002DA81 L293:
771: 767 0002DA81 # {
772: 768 0002DA81 # dbl_value_1 = ldd_1_data[index].ld; /* get the operand's MSW */
773: 769 0002DA81 48 04 effffffa74 50 shll $4,_index,r0
774: 770 0002DA89 0c 8f00000000 50 addl2 $_ldd_1_data,r0
775: 771 0002DA90 0d a004 effffffa68 movl 4(r0),_dbl_value_1+4
776: 772 0002DA98 0d 60 effffffa5d movl (r0),_dbl_value_1
777: 773 0002DA9F # dbl_value_2.m = 0; /* clear the '0.0' operand */
778: 774 0002DA9F 4d effffffa57 clrl _dbl_value_2
779: 775 0002DAA5 # dbl_value_2.l = 0;
780: 776 0002DAA5 4d effffffa55 clrl _dbl_value_2+4
781: 777 0002DAAB # dbl_expected = ldd_1_data[index].exp; /* get the expected results */
782: 778 0002DAAB 48 04 effffffa4a 50 shll $4,_index,r0
783: 779 0002DAB3 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0
784: 780 0002DABA 0d a004 effffffa3e movl 4(r0),_dbl_expected+4
785: 781 0002DAC2 0d 60 effffffa33 movl (r0),_dbl_expected
786: 782 0002DAC9 # /*
787: 783 0002DAC9 # * If LOOP ON ERROR is set, this is the loop for this subtest.
788: 784 0002DAC9 # * The force loop flag is set after the first error.
789: 785 0002DAC9 # */
790: 786 0002DAC9 # asm("_pipe12_5_lp1:");
791: 787 0002DAC9 _pipe12_5_lp1:
792: 788 0002DAC9 # asm("ldd _dbl_value_1"); /* load the op. ( op ) */
793: 789 0002DAC9 07 effffffa2d ldd _dbl_value_1
794: 790 0002DACF # asm("subd _dbl_value_1"); /* subtract the op. ( 0 ) */
795: 791 0002DACF d7 effffffa27 subd _dbl_value_1
796: 792 0002DAD5 # asm("addd _dbl_value_2"); /* add a '0' ( 0 ) */
797: 793 0002DAD5 c7 effffffa21 addd _dbl_value_2
798: 794 0002DADB # asm("subd _dbl_value_1"); /* subtract the op. (-op ) */
799: 795 0002DADB d7 effffffa1b subd _dbl_value_1
800: 796 0002DAE1 # asm("addd _dbl_value_1"); /* add the op. ( 0 ) */
801: 797 0002DAE1 c7 effffffa15 addd _dbl_value_1
802: 798 0002DAE7 # asm("subd _dbl_value_2"); /* subtract a '0' ( 0 ) */
803: 799 0002DAE7 d7 effffffa0f subd _dbl_value_2
804: 800 0002DAED # asm("addd _dbl_value_1"); /* add the op. ( op ) */
805: 801 0002DAED c7 effffffa09 addd _dbl_value_1
806: 802 0002DAF3 # asm("std _dbl_st_acc"); /* store the result ( op ) */
807: 803 0002DAF3 27 effffffa03 std _dbl_st_acc
808: 804 0002DAF9 # if( force_loop )
809: 805 0002DAF9 5d effffff9fd tstl _force_loop
810: 806 0002DAFF 31 02 jeql L294
811: 807 0002DB01 # asm("brb _pipe12_5_lp1");; /* run the loop again */
812: 808 0002DB01 11 c6 brb _pipe12_5_lp1
813: 809 0002DB03 L294:
814: 810 0002DB03 # /*
815: 811 0002DB03 # * verify the results
816: 812 0002DB03 # */
817: 813 0002DB03 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */
818: 814 0002DB03 # (dbl_st_acc.l != dbl_expected.l) )
819: 815 0002DB03 1d effffff9f3 effffff9ee cmpl _dbl_st_acc,_dbl_expected
820: 816 0002DB0E 21 0d jneq L9995
821: 817 0002DB10 1d effffff9ea effffff9e5 cmpl _dbl_st_acc+4,_dbl_expected+4
822: 818 0002DB1B 31 42 jeql L295
823: 819 0002DB1D L9995:
824: 820 0002DB1D # {
825: 821 0002DB1D # errcnt++; /* bump the error count */
826: 822 0002DB1D 6d effffff9d9 incl _errcnt
827: 823 0002DB23 # if ( prt_error )
828: 824 0002DB23 5d effffff9d3 tstl _prt_error
829: 825 0002DB29 31 0d jeql L296
830: 826 0002DB2B # print_pipe12_er("Cache Data, 0 NO-OPs");
831: 827 0002DB2B .data 1
832: 828 00000de6 * L297:
833: 829 00000de6 * 436163686520446174612C203 .ascii "Cache Data, 0 NO-OPs\0"
834: 0204E4F2D4F507300
835: 830 00000dfb * .text
836: 831 0002DB2B dd 8f00000de6 pushl $L297
837: 832 0002DB31 fe 08 ef00000584 callf $8,_print_pipe12_er
838: 833 0002DB38 # if ( halt_flg ) /* halt on error? */
839: 834 0002DB38 L296:
840: 835 0002DB38 5d effffff9be tstl _halt_flg
841: 836 0002DB3E 31 0d jeql L298
842: 837 0002DB40 # pipe12_er_hlt( subtest );
843: 838 0002DB40 dd effffff9b6 pushl _subtest
844: 839 0002DB46 fe 08 ef000006bd callf $8,_pipe12_er_hlt
845: 840 0002DB4D # if ( loop_on_err ) {
846: 841 0002DB4D L298:
847: 842 0002DB4D 5d effffff9a9 tstl _loop_on_err
848: 843 0002DB53 31 0a jeql L299
849: 844 0002DB55 # force_loop = TRUE; /* set the force loop flag */
850: 845 0002DB55 0d 01 effffff9a0 movl $1,_force_loop
851: 846 0002DB5C # asm("brw _pipe12_5_lp1"); /* and loop */
852: 847 0002DB5C 13 ff6a brw _pipe12_5_lp1
853: 848 0002DB5F # }
854: 849 0002DB5F # } /* end of compare error */
855: 850 0002DB5F L299:
856: 851 0002DB5F # } while( index++ < max_ldd_1_index );
857: 852 0002DB5F L295:
858: 853 0002DB5F L292:
859: 854 0002DB5F 0d effffff997 50 movl _index,r0
860: 855 0002DB66 6d effffff990 incl _index
861: 856 0002DB6C 1d 50 effffff989 cmpl r0,_max_ldd_1_index
862: 857 0002DB73 81 03 13 ff09 jlss L293
863: 858 0002DB78 L291:
864: 859 0002DB78 # } /* end of subtest 5 */
865: 860 0002DB78 40 ret#2
866: 861 0002DB79 .set L287,0x0
867: 862 0002DB79 L289:
868: 863 0002DB79 13 fef9 jbr L290
869: 864 0002DB7C .data
870: 865 00000d8c * .text
871: 866 0002DB7C .align 1
872: 867 0002DB7C .globl _pipe12_6
873: 868 0002DB7C _pipe12_6:
874: 869 0002DB7C 0000 .word L300
875: 870 0002DB7E #
876: 871 0002DB7E #
877: 872 0002DB7E #
878: 873 0002DB7E #
879: 874 0002DB7E #
880: 875 0002DB7E #
881: 876 0002DB7E #
882: 877 0002DB7E # /************************************************************************
883: 878 0002DB7E # *
884: 879 0002DB7E # * SUBTEST 6
885: 880 0002DB7E # * data in cache, 1 NO-OP
886: 881 0002DB7E # *
887: 882 0002DB7E # ************************************************************************/
888: 883 0002DB7E # pipe12_6()
889: 884 0002DB7E # {
890: 885 0002DB7E 13 010b jbr L302
891: 886 0002DB81 L303:
892: 887 0002DB81 # force_loop = FALSE; /* clear the force_loop flg */
893: 888 0002DB81 4d effffff975 clrl _force_loop
894: 889 0002DB87 # index = 0;
895: 890 0002DB87 4d effffff96f clrl _index
896: 891 0002DB8D # do
897: 892 0002DB8D L306:
898: 893 0002DB8D # {
899: 894 0002DB8D # dbl_value_1 = ldd_1_data[index].ld; /* get the operand's MSW */
900: 895 0002DB8D 48 04 effffff968 50 shll $4,_index,r0
901: 896 0002DB95 0c 8f00000000 50 addl2 $_ldd_1_data,r0
902: 897 0002DB9C 0d a004 effffff95c movl 4(r0),_dbl_value_1+4
903: 898 0002DBA4 0d 60 effffff951 movl (r0),_dbl_value_1
904: 899 0002DBAB # dbl_value_2.m = 0; /* clear the '0.0' operand */
905: 900 0002DBAB 4d effffff94b clrl _dbl_value_2
906: 901 0002DBB1 # dbl_value_2.l = 0;
907: 902 0002DBB1 4d effffff949 clrl _dbl_value_2+4
908: 903 0002DBB7 # dbl_expected = ldd_1_data[index].exp; /* get the expected results */
909: 904 0002DBB7 48 04 effffff93e 50 shll $4,_index,r0
910: 905 0002DBBF 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0
911: 906 0002DBC6 0d a004 effffff932 movl 4(r0),_dbl_expected+4
912: 907 0002DBCE 0d 60 effffff927 movl (r0),_dbl_expected
913: 908 0002DBD5 # /*
914: 909 0002DBD5 # * If LOOP ON ERROR is set, this is the loop for this subtest.
915: 910 0002DBD5 # * The force loop flag is set after the first error.
916: 911 0002DBD5 # */
917: 912 0002DBD5 # asm("_pipe12_6_lp1:");
918: 913 0002DBD5 _pipe12_6_lp1:
919: 914 0002DBD5 # asm("ldd _dbl_value_1"); /* load the op. ( op ) */
920: 915 0002DBD5 07 effffff921 ldd _dbl_value_1
921: 916 0002DBDB # asm("nop");
922: 917 0002DBDB 10 nop
923: 918 0002DBDC # asm("subd _dbl_value_1"); /* subtract the op. ( 0 ) */
924: 919 0002DBDC d7 effffff91a subd _dbl_value_1
925: 920 0002DBE2 # asm("nop");
926: 921 0002DBE2 10 nop
927: 922 0002DBE3 # asm("addd _dbl_value_2"); /* add a '0' ( 0 ) */
928: 923 0002DBE3 c7 effffff913 addd _dbl_value_2
929: 924 0002DBE9 # asm("nop");
930: 925 0002DBE9 10 nop
931: 926 0002DBEA # asm("subd _dbl_value_1"); /* subtract the op. (-op ) */
932: 927 0002DBEA d7 effffff90c subd _dbl_value_1
933: 928 0002DBF0 # asm("nop");
934: 929 0002DBF0 10 nop
935: 930 0002DBF1 # asm("addd _dbl_value_1"); /* add the op. ( 0 ) */
936: 931 0002DBF1 c7 effffff905 addd _dbl_value_1
937: 932 0002DBF7 # asm("nop");
938: 933 0002DBF7 10 nop
939: 934 0002DBF8 # asm("subd _dbl_value_2"); /* subtract a '0' ( 0 ) */
940: 935 0002DBF8 d7 effffff8fe subd _dbl_value_2
941: 936 0002DBFE # asm("nop");
942: 937 0002DBFE 10 nop
943: 938 0002DBFF # asm("addd _dbl_value_1"); /* add the op. ( op ) */
944: 939 0002DBFF c7 effffff8f7 addd _dbl_value_1
945: 940 0002DC05 # asm("nop");
946: 941 0002DC05 10 nop
947: 942 0002DC06 # asm("std _dbl_st_acc"); /* store the result ( op ) */
948: 943 0002DC06 27 effffff8f0 std _dbl_st_acc
949: 944 0002DC0C # if( force_loop )
950: 945 0002DC0C 5d effffff8ea tstl _force_loop
951: 946 0002DC12 31 02 jeql L307
952: 947 0002DC14 # asm("brb _pipe12_6_lp1");; /* run the loop again */
953: 948 0002DC14 11 bf brb _pipe12_6_lp1
954: 949 0002DC16 L307:
955: 950 0002DC16 # /*
956: 951 0002DC16 # * verify the results
957: 952 0002DC16 # */
958: 953 0002DC16 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */
959: 954 0002DC16 # (dbl_st_acc.l != dbl_expected.l) )
960: 955 0002DC16 1d effffff8e0 effffff8db cmpl _dbl_st_acc,_dbl_expected
961: 956 0002DC21 21 0d jneq L9994
962: 957 0002DC23 1d effffff8d7 effffff8d2 cmpl _dbl_st_acc+4,_dbl_expected+4
963: 958 0002DC2E 31 42 jeql L308
964: 959 0002DC30 L9994:
965: 960 0002DC30 # {
966: 961 0002DC30 # errcnt++; /* bump the error count */
967: 962 0002DC30 6d effffff8c6 incl _errcnt
968: 963 0002DC36 # if ( prt_error )
969: 964 0002DC36 5d effffff8c0 tstl _prt_error
970: 965 0002DC3C 31 0d jeql L309
971: 966 0002DC3E # print_pipe12_er("Cache Data, 1 NO-OP");
972: 967 0002DC3E .data 1
973: 968 00000dfb * L310:
974: 969 00000dfb * 436163686520446174612C203 .ascii "Cache Data, 1 NO-OP\0"
975: 1204E4F2D4F5000
976: 970 00000e0f * .text
977: 971 0002DC3E dd 8f00000dfb pushl $L310
978: 972 0002DC44 fe 08 ef00000471 callf $8,_print_pipe12_er
979: 973 0002DC4B # if ( halt_flg ) /* halt on error? */
980: 974 0002DC4B L309:
981: 975 0002DC4B 5d effffff8ab tstl _halt_flg
982: 976 0002DC51 31 0d jeql L311
983: 977 0002DC53 # pipe12_er_hlt( subtest );
984: 978 0002DC53 dd effffff8a3 pushl _subtest
985: 979 0002DC59 fe 08 ef000005aa callf $8,_pipe12_er_hlt
986: 980 0002DC60 # if ( loop_on_err ) {
987: 981 0002DC60 L311:
988: 982 0002DC60 5d effffff896 tstl _loop_on_err
989: 983 0002DC66 31 0a jeql L312
990: 984 0002DC68 # force_loop = TRUE; /* set the force loop flag */
991: 985 0002DC68 0d 01 effffff88d movl $1,_force_loop
992: 986 0002DC6F # asm("brw _pipe12_6_lp1"); /* and loop */
993: 987 0002DC6F 13 ff63 brw _pipe12_6_lp1
994: 988 0002DC72 # }
995: 989 0002DC72 # } /* end of compare error */
996: 990 0002DC72 L312:
997: 991 0002DC72 # } while( index++ < max_ldd_1_index );
998: 992 0002DC72 L308:
999: 993 0002DC72 L305:
1000: 994 0002DC72 0d effffff884 50 movl _index,r0
1001: 995 0002DC79 6d effffff87d incl _index
1002: 996 0002DC7F 1d 50 effffff876 cmpl r0,_max_ldd_1_index
1003: 997 0002DC86 81 03 13 ff02 jlss L306
1004: 998 0002DC8B L304:
1005: 999 0002DC8B # } /* end of subtest 6 */
1006: 1000 0002DC8B 40 ret#2
1007: 1001 0002DC8C .set L300,0x0
1008: 1002 0002DC8C L302:
1009: 1003 0002DC8C 13 fef2 jbr L303
1010: 1004 0002DC8F .data
1011: 1005 00000d8c * .text
1012: 1006 0002DC8F 00 .align 1
1013: 1007 0002DC90 .globl _pipe12_7
1014: 1008 0002DC90 _pipe12_7:
1015: 1009 0002DC90 0000 .word L313
1016: 1010 0002DC92 #
1017: 1011 0002DC92 #
1018: 1012 0002DC92 #
1019: 1013 0002DC92 #
1020: 1014 0002DC92 #
1021: 1015 0002DC92 #
1022: 1016 0002DC92 #
1023: 1017 0002DC92 # /************************************************************************
1024: 1018 0002DC92 # *
1025: 1019 0002DC92 # * SUBTEST 7
1026: 1020 0002DC92 # * data in cache, 2 NO-OPs
1027: 1021 0002DC92 # *
1028: 1022 0002DC92 # ************************************************************************/
1029: 1023 0002DC92 # pipe12_7()
1030: 1024 0002DC92 # {
1031: 1025 0002DC92 13 0112 jbr L315
1032: 1026 0002DC95 L316:
1033: 1027 0002DC95 # force_loop = FALSE; /* clear the force_loop flg */
1034: 1028 0002DC95 4d effffff861 clrl _force_loop
1035: 1029 0002DC9B # index = 0;
1036: 1030 0002DC9B 4d effffff85b clrl _index
1037: 1031 0002DCA1 # do
1038: 1032 0002DCA1 L319:
1039: 1033 0002DCA1 # {
1040: 1034 0002DCA1 # dbl_value_1 = ldd_1_data[index].ld; /* get the operand's MSW */
1041: 1035 0002DCA1 48 04 effffff854 50 shll $4,_index,r0
1042: 1036 0002DCA9 0c 8f00000000 50 addl2 $_ldd_1_data,r0
1043: 1037 0002DCB0 0d a004 effffff848 movl 4(r0),_dbl_value_1+4
1044: 1038 0002DCB8 0d 60 effffff83d movl (r0),_dbl_value_1
1045: 1039 0002DCBF # dbl_value_2.m = 0; /* clear the '0.0' operand */
1046: 1040 0002DCBF 4d effffff837 clrl _dbl_value_2
1047: 1041 0002DCC5 # dbl_value_2.l = 0;
1048: 1042 0002DCC5 4d effffff835 clrl _dbl_value_2+4
1049: 1043 0002DCCB # dbl_expected = ldd_1_data[index].exp; /* get the expected results */
1050: 1044 0002DCCB 48 04 effffff82a 50 shll $4,_index,r0
1051: 1045 0002DCD3 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0
1052: 1046 0002DCDA 0d a004 effffff81e movl 4(r0),_dbl_expected+4
1053: 1047 0002DCE2 0d 60 effffff813 movl (r0),_dbl_expected
1054: 1048 0002DCE9 # /*
1055: 1049 0002DCE9 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1056: 1050 0002DCE9 # * The force loop flag is set after the first error.
1057: 1051 0002DCE9 # */
1058: 1052 0002DCE9 # asm("_pipe12_7_lp1:");
1059: 1053 0002DCE9 _pipe12_7_lp1:
1060: 1054 0002DCE9 # asm("ldd _dbl_value_1"); /* load the op. ( op ) */
1061: 1055 0002DCE9 07 effffff80d ldd _dbl_value_1
1062: 1056 0002DCEF # asm("nop");
1063: 1057 0002DCEF 10 nop
1064: 1058 0002DCF0 # asm("nop");
1065: 1059 0002DCF0 10 nop
1066: 1060 0002DCF1 # asm("subd _dbl_value_1"); /* subtract the op. ( 0 ) */
1067: 1061 0002DCF1 d7 effffff805 subd _dbl_value_1
1068: 1062 0002DCF7 # asm("nop");
1069: 1063 0002DCF7 10 nop
1070: 1064 0002DCF8 # asm("nop");
1071: 1065 0002DCF8 10 nop
1072: 1066 0002DCF9 # asm("addd _dbl_value_2"); /* add a '0' ( 0 ) */
1073: 1067 0002DCF9 c7 effffff7fd addd _dbl_value_2
1074: 1068 0002DCFF # asm("nop");
1075: 1069 0002DCFF 10 nop
1076: 1070 0002DD00 # asm("nop");
1077: 1071 0002DD00 10 nop
1078: 1072 0002DD01 # asm("subd _dbl_value_1"); /* subtract the op. (-op ) */
1079: 1073 0002DD01 d7 effffff7f5 subd _dbl_value_1
1080: 1074 0002DD07 # asm("nop");
1081: 1075 0002DD07 10 nop
1082: 1076 0002DD08 # asm("nop");
1083: 1077 0002DD08 10 nop
1084: 1078 0002DD09 # asm("addd _dbl_value_1"); /* add the op. ( 0 ) */
1085: 1079 0002DD09 c7 effffff7ed addd _dbl_value_1
1086: 1080 0002DD0F # asm("nop");
1087: 1081 0002DD0F 10 nop
1088: 1082 0002DD10 # asm("nop");
1089: 1083 0002DD10 10 nop
1090: 1084 0002DD11 # asm("subd _dbl_value_2"); /* subtract a '0' ( 0 ) */
1091: 1085 0002DD11 d7 effffff7e5 subd _dbl_value_2
1092: 1086 0002DD17 # asm("nop");
1093: 1087 0002DD17 10 nop
1094: 1088 0002DD18 # asm("nop");
1095: 1089 0002DD18 10 nop
1096: 1090 0002DD19 # asm("addd _dbl_value_1"); /* add the op. ( op ) */
1097: 1091 0002DD19 c7 effffff7dd addd _dbl_value_1
1098: 1092 0002DD1F # asm("nop");
1099: 1093 0002DD1F 10 nop
1100: 1094 0002DD20 # asm("nop");
1101: 1095 0002DD20 10 nop
1102: 1096 0002DD21 # asm("std _dbl_st_acc"); /* store the result ( op ) */
1103: 1097 0002DD21 27 effffff7d5 std _dbl_st_acc
1104: 1098 0002DD27 # if( force_loop )
1105: 1099 0002DD27 5d effffff7cf tstl _force_loop
1106: 1100 0002DD2D 31 02 jeql L320
1107: 1101 0002DD2F # asm("brb _pipe12_7_lp1");; /* run the loop again */
1108: 1102 0002DD2F 11 b8 brb _pipe12_7_lp1
1109: 1103 0002DD31 L320:
1110: 1104 0002DD31 # /*
1111: 1105 0002DD31 # * verify the results
1112: 1106 0002DD31 # */
1113: 1107 0002DD31 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */
1114: 1108 0002DD31 # (dbl_st_acc.l != dbl_expected.l) )
1115: 1109 0002DD31 1d effffff7c5 effffff7c0 cmpl _dbl_st_acc,_dbl_expected
1116: 1110 0002DD3C 21 0d jneq L9993
1117: 1111 0002DD3E 1d effffff7bc effffff7b7 cmpl _dbl_st_acc+4,_dbl_expected+4
1118: 1112 0002DD49 31 42 jeql L321
1119: 1113 0002DD4B L9993:
1120: 1114 0002DD4B # {
1121: 1115 0002DD4B # errcnt++; /* bump the error count */
1122: 1116 0002DD4B 6d effffff7ab incl _errcnt
1123: 1117 0002DD51 # if ( prt_error )
1124: 1118 0002DD51 5d effffff7a5 tstl _prt_error
1125: 1119 0002DD57 31 0d jeql L322
1126: 1120 0002DD59 # print_pipe12_er("Cache Data, 2 NO-OPs");
1127: 1121 0002DD59 .data 1
1128: 1122 00000e0f * L323:
1129: 1123 00000e0f * 436163686520446174612C203 .ascii "Cache Data, 2 NO-OPs\0"
1130: 2204E4F2D4F507300
1131: 1124 00000e24 * .text
1132: 1125 0002DD59 dd 8f00000e0f pushl $L323
1133: 1126 0002DD5F fe 08 ef00000356 callf $8,_print_pipe12_er
1134: 1127 0002DD66 # if ( halt_flg ) /* halt on error? */
1135: 1128 0002DD66 L322:
1136: 1129 0002DD66 5d effffff790 tstl _halt_flg
1137: 1130 0002DD6C 31 0d jeql L324
1138: 1131 0002DD6E # pipe12_er_hlt( subtest );
1139: 1132 0002DD6E dd effffff788 pushl _subtest
1140: 1133 0002DD74 fe 08 ef0000048f callf $8,_pipe12_er_hlt
1141: 1134 0002DD7B # if ( loop_on_err ) {
1142: 1135 0002DD7B L324:
1143: 1136 0002DD7B 5d effffff77b tstl _loop_on_err
1144: 1137 0002DD81 31 0a jeql L325
1145: 1138 0002DD83 # force_loop = TRUE; /* set the force loop flag */
1146: 1139 0002DD83 0d 01 effffff772 movl $1,_force_loop
1147: 1140 0002DD8A # asm("brw _pipe12_7_lp1"); /* and loop */
1148: 1141 0002DD8A 13 ff5c brw _pipe12_7_lp1
1149: 1142 0002DD8D # }
1150: 1143 0002DD8D # } /* end of compare error */
1151: 1144 0002DD8D L325:
1152: 1145 0002DD8D # } while( index++ < max_ldd_1_index );
1153: 1146 0002DD8D L321:
1154: 1147 0002DD8D L318:
1155: 1148 0002DD8D 0d effffff769 50 movl _index,r0
1156: 1149 0002DD94 6d effffff762 incl _index
1157: 1150 0002DD9A 1d 50 effffff75b cmpl r0,_max_ldd_1_index
1158: 1151 0002DDA1 81 03 13 fefb jlss L319
1159: 1152 0002DDA6 L317:
1160: 1153 0002DDA6 # } /* end of subtest 7 */
1161: 1154 0002DDA6 40 ret#2
1162: 1155 0002DDA7 .set L313,0x0
1163: 1156 0002DDA7 L315:
1164: 1157 0002DDA7 13 feeb jbr L316
1165: 1158 0002DDAA .data
1166: 1159 00000d8c * .text
1167: 1160 0002DDAA .align 1
1168: 1161 0002DDAA .globl _pipe12_8
1169: 1162 0002DDAA _pipe12_8:
1170: 1163 0002DDAA 0000 .word L326
1171: 1164 0002DDAC #
1172: 1165 0002DDAC #
1173: 1166 0002DDAC #
1174: 1167 0002DDAC #
1175: 1168 0002DDAC #
1176: 1169 0002DDAC #
1177: 1170 0002DDAC #
1178: 1171 0002DDAC # /************************************************************************
1179: 1172 0002DDAC # *
1180: 1173 0002DDAC # * SUBTEST 8
1181: 1174 0002DDAC # * data in cache, 3 NO-OPs
1182: 1175 0002DDAC # *
1183: 1176 0002DDAC # ************************************************************************/
1184: 1177 0002DDAC # pipe12_8()
1185: 1178 0002DDAC # {
1186: 1179 0002DDAC 13 0119 jbr L328
1187: 1180 0002DDAF L329:
1188: 1181 0002DDAF # force_loop = FALSE; /* clear the force_loop flg */
1189: 1182 0002DDAF 4d effffff747 clrl _force_loop
1190: 1183 0002DDB5 # index = 0;
1191: 1184 0002DDB5 4d effffff741 clrl _index
1192: 1185 0002DDBB # do
1193: 1186 0002DDBB L332:
1194: 1187 0002DDBB # {
1195: 1188 0002DDBB # dbl_value_1 = ldd_1_data[index].ld; /* get the operand's MSW */
1196: 1189 0002DDBB 48 04 effffff73a 50 shll $4,_index,r0
1197: 1190 0002DDC3 0c 8f00000000 50 addl2 $_ldd_1_data,r0
1198: 1191 0002DDCA 0d a004 effffff72e movl 4(r0),_dbl_value_1+4
1199: 1192 0002DDD2 0d 60 effffff723 movl (r0),_dbl_value_1
1200: 1193 0002DDD9 # dbl_value_2.m = 0; /* clear the '0.0' operand */
1201: 1194 0002DDD9 4d effffff71d clrl _dbl_value_2
1202: 1195 0002DDDF # dbl_value_2.l = 0;
1203: 1196 0002DDDF 4d effffff71b clrl _dbl_value_2+4
1204: 1197 0002DDE5 # dbl_expected = ldd_1_data[index].exp; /* get the expected results */
1205: 1198 0002DDE5 48 04 effffff710 50 shll $4,_index,r0
1206: 1199 0002DDED 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0
1207: 1200 0002DDF4 0d a004 effffff704 movl 4(r0),_dbl_expected+4
1208: 1201 0002DDFC 0d 60 effffff6f9 movl (r0),_dbl_expected
1209: 1202 0002DE03 # /*
1210: 1203 0002DE03 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1211: 1204 0002DE03 # * The force loop flag is set after the first error.
1212: 1205 0002DE03 # */
1213: 1206 0002DE03 # asm("_pipe12_8_lp1:");
1214: 1207 0002DE03 _pipe12_8_lp1:
1215: 1208 0002DE03 # asm("ldd _dbl_value_1"); /* load the op. ( op ) */
1216: 1209 0002DE03 07 effffff6f3 ldd _dbl_value_1
1217: 1210 0002DE09 # asm("nop");
1218: 1211 0002DE09 10 nop
1219: 1212 0002DE0A # asm("nop");
1220: 1213 0002DE0A 10 nop
1221: 1214 0002DE0B # asm("nop");
1222: 1215 0002DE0B 10 nop
1223: 1216 0002DE0C # asm("subd _dbl_value_1"); /* subtract the op. ( 0 ) */
1224: 1217 0002DE0C d7 effffff6ea subd _dbl_value_1
1225: 1218 0002DE12 # asm("nop");
1226: 1219 0002DE12 10 nop
1227: 1220 0002DE13 # asm("nop");
1228: 1221 0002DE13 10 nop
1229: 1222 0002DE14 # asm("nop");
1230: 1223 0002DE14 10 nop
1231: 1224 0002DE15 # asm("addd _dbl_value_2"); /* add a '0' ( 0 ) */
1232: 1225 0002DE15 c7 effffff6e1 addd _dbl_value_2
1233: 1226 0002DE1B # asm("nop");
1234: 1227 0002DE1B 10 nop
1235: 1228 0002DE1C # asm("nop");
1236: 1229 0002DE1C 10 nop
1237: 1230 0002DE1D # asm("nop");
1238: 1231 0002DE1D 10 nop
1239: 1232 0002DE1E # asm("subd _dbl_value_1"); /* subtract the op. (-op ) */
1240: 1233 0002DE1E d7 effffff6d8 subd _dbl_value_1
1241: 1234 0002DE24 # asm("nop");
1242: 1235 0002DE24 10 nop
1243: 1236 0002DE25 # asm("nop");
1244: 1237 0002DE25 10 nop
1245: 1238 0002DE26 # asm("nop");
1246: 1239 0002DE26 10 nop
1247: 1240 0002DE27 # asm("addd _dbl_value_1"); /* add the op. ( 0 ) */
1248: 1241 0002DE27 c7 effffff6cf addd _dbl_value_1
1249: 1242 0002DE2D # asm("nop");
1250: 1243 0002DE2D 10 nop
1251: 1244 0002DE2E # asm("nop");
1252: 1245 0002DE2E 10 nop
1253: 1246 0002DE2F # asm("nop");
1254: 1247 0002DE2F 10 nop
1255: 1248 0002DE30 # asm("subd _dbl_value_2"); /* subtract a '0' ( 0 ) */
1256: 1249 0002DE30 d7 effffff6c6 subd _dbl_value_2
1257: 1250 0002DE36 # asm("nop");
1258: 1251 0002DE36 10 nop
1259: 1252 0002DE37 # asm("nop");
1260: 1253 0002DE37 10 nop
1261: 1254 0002DE38 # asm("nop");
1262: 1255 0002DE38 10 nop
1263: 1256 0002DE39 # asm("addd _dbl_value_1"); /* add the op. ( op ) */
1264: 1257 0002DE39 c7 effffff6bd addd _dbl_value_1
1265: 1258 0002DE3F # asm("nop");
1266: 1259 0002DE3F 10 nop
1267: 1260 0002DE40 # asm("nop");
1268: 1261 0002DE40 10 nop
1269: 1262 0002DE41 # asm("nop");
1270: 1263 0002DE41 10 nop
1271: 1264 0002DE42 # asm("std _dbl_st_acc"); /* store the result ( op ) */
1272: 1265 0002DE42 27 effffff6b4 std _dbl_st_acc
1273: 1266 0002DE48 # if( force_loop )
1274: 1267 0002DE48 5d effffff6ae tstl _force_loop
1275: 1268 0002DE4E 31 02 jeql L333
1276: 1269 0002DE50 # asm("brb _pipe12_8_lp1");; /* run the loop again */
1277: 1270 0002DE50 11 b1 brb _pipe12_8_lp1
1278: 1271 0002DE52 L333:
1279: 1272 0002DE52 # /*
1280: 1273 0002DE52 # * verify the results
1281: 1274 0002DE52 # */
1282: 1275 0002DE52 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */
1283: 1276 0002DE52 # (dbl_st_acc.l != dbl_expected.l) )
1284: 1277 0002DE52 1d effffff6a4 effffff69f cmpl _dbl_st_acc,_dbl_expected
1285: 1278 0002DE5D 21 0d jneq L9992
1286: 1279 0002DE5F 1d effffff69b effffff696 cmpl _dbl_st_acc+4,_dbl_expected+4
1287: 1280 0002DE6A 31 42 jeql L334
1288: 1281 0002DE6C L9992:
1289: 1282 0002DE6C # {
1290: 1283 0002DE6C # errcnt++; /* bump the error count */
1291: 1284 0002DE6C 6d effffff68a incl _errcnt
1292: 1285 0002DE72 # if ( prt_error )
1293: 1286 0002DE72 5d effffff684 tstl _prt_error
1294: 1287 0002DE78 31 0d jeql L335
1295: 1288 0002DE7A # print_pipe12_er("Cache Data, 3 NO-OPs");
1296: 1289 0002DE7A .data 1
1297: 1290 00000e24 * L336:
1298: 1291 00000e24 * 436163686520446174612C203 .ascii "Cache Data, 3 NO-OPs\0"
1299: 3204E4F2D4F507300
1300: 1292 00000e39 * .text
1301: 1293 0002DE7A dd 8f00000e24 pushl $L336
1302: 1294 0002DE80 fe 08 ef00000235 callf $8,_print_pipe12_er
1303: 1295 0002DE87 # if ( halt_flg ) /* halt on error? */
1304: 1296 0002DE87 L335:
1305: 1297 0002DE87 5d effffff66f tstl _halt_flg
1306: 1298 0002DE8D 31 0d jeql L337
1307: 1299 0002DE8F # pipe12_er_hlt( subtest );
1308: 1300 0002DE8F dd effffff667 pushl _subtest
1309: 1301 0002DE95 fe 08 ef0000036e callf $8,_pipe12_er_hlt
1310: 1302 0002DE9C # if ( loop_on_err ) {
1311: 1303 0002DE9C L337:
1312: 1304 0002DE9C 5d effffff65a tstl _loop_on_err
1313: 1305 0002DEA2 31 0a jeql L338
1314: 1306 0002DEA4 # force_loop = TRUE; /* set the force loop flag */
1315: 1307 0002DEA4 0d 01 effffff651 movl $1,_force_loop
1316: 1308 0002DEAB # asm("brw _pipe12_8_lp1"); /* and loop */
1317: 1309 0002DEAB 13 ff55 brw _pipe12_8_lp1
1318: 1310 0002DEAE # }
1319: 1311 0002DEAE # } /* end of compare error */
1320: 1312 0002DEAE L338:
1321: 1313 0002DEAE # } while( index++ < max_ldd_1_index );
1322: 1314 0002DEAE L334:
1323: 1315 0002DEAE L331:
1324: 1316 0002DEAE 0d effffff648 50 movl _index,r0
1325: 1317 0002DEB5 6d effffff641 incl _index
1326: 1318 0002DEBB 1d 50 effffff63a cmpl r0,_max_ldd_1_index
1327: 1319 0002DEC2 81 03 13 fef4 jlss L332
1328: 1320 0002DEC7 L330:
1329: 1321 0002DEC7 # } /* end of subtest 8 */
1330: 1322 0002DEC7 40 ret#2
1331: 1323 0002DEC8 .set L326,0x0
1332: 1324 0002DEC8 L328:
1333: 1325 0002DEC8 13 fee4 jbr L329
1334: 1326 0002DECB .data
1335: 1327 00000d8c * .text
1336: 1328 0002DECB 00 .align 1
1337: 1329 0002DECC .globl _pipe12_9
1338: 1330 0002DECC _pipe12_9:
1339: 1331 0002DECC 0000 .word L339
1340: 1332 0002DECE #
1341: 1333 0002DECE #
1342: 1334 0002DECE #
1343: 1335 0002DECE #
1344: 1336 0002DECE #
1345: 1337 0002DECE #
1346: 1338 0002DECE #
1347: 1339 0002DECE #
1348: 1340 0002DECE # /******************************************************************************
1349: 1341 0002DECE # *
1350: 1342 0002DECE # * SUBTEST 9
1351: 1343 0002DECE # *
1352: 1344 0002DECE # * Get the data via the FRAME POINTER ( quad word indexed )
1353: 1345 0002DECE # *
1354: 1346 0002DECE # * ADDRESSES OF DATA OPERANDS INDEX DATA
1355: 1347 0002DECE # * pointer_data,-4 ( FP+24 ) 3 the STF result goes here
1356: 1348 0002DECE # * pointer_data-8,-12 ( FP+16 ) 2 <operand data>
1357: 1349 0002DECE # * pointer_data-16,-20 ( FP+8 ) 1 < '0.0' data>
1358: 1350 0002DECE # * pointer_data-24,-28 ( FP ) 0 point the frame pointer here
1359: 1351 0002DECE # *
1360: 1352 0002DECE # * NOTE: The double precision instructions are using Quad Word indexing.
1361: 1353 0002DECE # ******************************************************************************/
1362: 1354 0002DECE # pipe12_9()
1363: 1355 0002DECE # {
1364: 1356 0002DECE 13 01e7 jbr L341
1365: 1357 0002DED1 L342:
1366: 1358 0002DED1 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */
1367: 1359 0002DED1 ed 6d effffff624 moval (r13),_pre_event_fp
1368: 1360 0002DED8 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */
1369: 1361 0002DED8 ed 6e effffff61d moval (r14),_pre_event_sp
1370: 1362 0002DEDF # force_loop = FALSE; /* clear force_loop flag */
1371: 1363 0002DEDF 4d effffff617 clrl _force_loop
1372: 1364 0002DEE5 # index = 0;
1373: 1365 0002DEE5 4d effffff611 clrl _index
1374: 1366 0002DEEB # do
1375: 1367 0002DEEB L345:
1376: 1368 0002DEEB # {
1377: 1369 0002DEEB # sgl_value_1 = ldd_1_data[index].ld.m; /* get operand 1's MSW */
1378: 1370 0002DEEB 0d effffff60b 50 movl _index,r0
1379: 1371 0002DEF2 48 04 50 50 shll $4,r0,r0
1380: 1372 0002DEF6 0d e000000000 effffff5fb movl _ldd_1_data(r0),_sgl_value_1
1381: 1373 0002DF01 # sgl_value_2 = ldd_1_data[index].ld.l; /* get operand 1's LSW */
1382: 1374 0002DF01 0d effffff5f5 50 movl _index,r0
1383: 1375 0002DF08 48 04 50 50 shll $4,r0,r0
1384: 1376 0002DF0C 0d e000000004 effffff5e5 movl _ldd_1_data+4(r0),_sgl_value_2
1385: 1377 0002DF17 # dbl_expected = ldd_1_data[index].exp; /* get expected results */
1386: 1378 0002DF17 48 04 effffff5de 50 shll $4,_index,r0
1387: 1379 0002DF1F 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0
1388: 1380 0002DF26 0d a004 effffff5d2 movl 4(r0),_dbl_expected+4
1389: 1381 0002DF2E 0d 60 effffff5c7 movl (r0),_dbl_expected
1390: 1382 0002DF35 # /*
1391: 1383 0002DF35 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1392: 1384 0002DF35 # * The force loop flag is set after the first error.
1393: 1385 0002DF35 # */
1394: 1386 0002DF35 # asm("_pipe12_9_lp1:");
1395: 1387 0002DF35 _pipe12_9_lp1:
1396: 1388 0002DF35 # asm("moval _pointer_data,_sgl_value_9");/* get store data's addr */
1397: 1389 0002DF35 ed effffff5c1 effffff5bc moval _pointer_data,_sgl_value_9
1398: 1390 0002DF40 # sgl_value_9 -= 8;
1399: 1391 0002DF40 2c 08 effffff5b5 subl2 $8,_sgl_value_9
1400: 1392 0002DF47 # asm("movl _sgl_value_2,*_sgl_value_9");/* set the operand's LSW */
1401: 1393 0002DF47 0d effffff5af fffffff5aa movl _sgl_value_2,*_sgl_value_9
1402: 1394 0002DF52 # sgl_value_9 -= 4;
1403: 1395 0002DF52 2c 04 effffff5a3 subl2 $4,_sgl_value_9
1404: 1396 0002DF59 # asm("movl _sgl_value_1,*_sgl_value_9");/* set the operand's MSW */
1405: 1397 0002DF59 0d effffff59d fffffff598 movl _sgl_value_1,*_sgl_value_9
1406: 1398 0002DF64 # sgl_value_9 -= 4;
1407: 1399 0002DF64 2c 04 effffff591 subl2 $4,_sgl_value_9
1408: 1400 0002DF6B # asm("clrl *_sgl_value_9"); /* set the '0' data's LSW */
1409: 1401 0002DF6B 4d fffffff58b clrl *_sgl_value_9
1410: 1402 0002DF71 # sgl_value_9 -= 4;
1411: 1403 0002DF71 2c 04 effffff584 subl2 $4,_sgl_value_9
1412: 1404 0002DF78 # asm("clrl *_sgl_value_9"); /* set the '0' data's MSW */
1413: 1405 0002DF78 4d fffffff57e clrl *_sgl_value_9
1414: 1406 0002DF7E # sgl_value_9 -= 8; /* get the FP addr to use */
1415: 1407 0002DF7E 2c 08 effffff577 subl2 $8,_sgl_value_9
1416: 1408 0002DF85 # asm("movl _sgl_value_9,r13"); /* set the FRAME POINTER */
1417: 1409 0002DF85 0d effffff571 5d movl _sgl_value_9,r13
1418: 1410 0002DF8C # asm("movl $1,r5"); /* r5 index = 1 quadwords */
1419: 1411 0002DF8C 0d 01 55 movl $1,r5
1420: 1412 0002DF8F # asm("movl $2,r6"); /* r6 index = 2 quadwords */
1421: 1413 0002DF8F 0d 02 56 movl $2,r6
1422: 1414 0002DF92 # asm("movl $3,r7"); /* r7 index = 3 quadwords */
1423: 1415 0002DF92 0d 03 57 movl $3,r7
1424: 1416 0002DF95 # asm("ldd (r13)[r6]"); /* load the operand ( op ) */
1425: 1417 0002DF95 07 466d ldd (r13)[r6]
1426: 1418 0002DF98 # asm("subd (r13)[r6]"); /* subtract the op. ( 0 ) */
1427: 1419 0002DF98 d7 466d subd (r13)[r6]
1428: 1420 0002DF9B # asm("addd (r13)[r5]"); /* add a '0' ( 0 ) */
1429: 1421 0002DF9B c7 456d addd (r13)[r5]
1430: 1422 0002DF9E # asm("subd (r13)[r6]"); /* subtract the op. (-op ) */
1431: 1423 0002DF9E d7 466d subd (r13)[r6]
1432: 1424 0002DFA1 # asm("addd (r13)[r6]"); /* add the op. ( 0 ) */
1433: 1425 0002DFA1 c7 466d addd (r13)[r6]
1434: 1426 0002DFA4 # asm("subd (r13)[r5]"); /* subtract a '0' ( 0 ) */
1435: 1427 0002DFA4 d7 456d subd (r13)[r5]
1436: 1428 0002DFA7 # asm("addd (r13)[r6]"); /* add the op. ( op ) */
1437: 1429 0002DFA7 c7 466d addd (r13)[r6]
1438: 1430 0002DFAA # asm("std (r13)[r7]"); /* store the result ( op ) */
1439: 1431 0002DFAA 27 476d std (r13)[r7]
1440: 1432 0002DFAD # if( force_loop )
1441: 1433 0002DFAD 5d effffff549 tstl _force_loop
1442: 1434 0002DFB3 31 03 jeql L346
1443: 1435 0002DFB5 # asm("brw _pipe12_9_lp1");; /* run the loop again */
1444: 1436 0002DFB5 13 ff7d brw _pipe12_9_lp1
1445: 1437 0002DFB8 L346:
1446: 1438 0002DFB8 # /*
1447: 1439 0002DFB8 # * verify the results
1448: 1440 0002DFB8 # */
1449: 1441 0002DFB8 # asm("moval (r13),_sgl_value_10"); /* save the frame pointer */
1450: 1442 0002DFB8 ed 6d effffff53d moval (r13),_sgl_value_10
1451: 1443 0002DFBF # asm("movl _pointer_data,_sgl_value_4"); /* save the LSW stored */
1452: 1444 0002DFBF 0d effffff537 effffff532 movl _pointer_data,_sgl_value_4
1453: 1445 0002DFCA # asm("movl _pointer_data-4,_sgl_value_3"); /* and the MSW */
1454: 1446 0002DFCA 0d effffff528 effffff527 movl _pointer_data-4,_sgl_value_3
1455: 1447 0002DFD5 # if( (sgl_value_3 != dbl_expected.m) || /* verify the result... */
1456: 1448 0002DFD5 # (sgl_value_4 != dbl_expected.l) || /* verify the result... */
1457: 1449 0002DFD5 # (sgl_value_10 != sgl_value_9) ) /* ... and the final FP */
1458: 1450 0002DFD5 1d effffff521 effffff51c cmpl _sgl_value_3,_dbl_expected
1459: 1451 0002DFE0 21 1d jneq L9991
1460: 1452 0002DFE2 1d effffff514 effffff513 cmpl _sgl_value_4,_dbl_expected+4
1461: 1453 0002DFED 21 10 jneq L9991
1462: 1454 0002DFEF 1d effffff507 effffff502 cmpl _sgl_value_10,_sgl_value_9
1463: 1455 0002DFFA 21 03 13 0091 jeql L347
1464: 1456 0002DFFF L9991:
1465: 1457 0002DFFF # {
1466: 1458 0002DFFF # asm("movl _pre_event_fp,r13"); /* restore frame pointer */
1467: 1459 0002DFFF 0d effffff4f7 5d movl _pre_event_fp,r13
1468: 1460 0002E006 # asm("movl _pre_event_sp,r14"); /* restore stack pointer */
1469: 1461 0002E006 0d effffff4f0 5e movl _pre_event_sp,r14
1470: 1462 0002E00D # errcnt++; /* bump the error count */
1471: 1463 0002E00D 6d effffff4e9 incl _errcnt
1472: 1464 0002E013 # if ( prt_error ) {
1473: 1465 0002E013 5d effffff4e3 tstl _prt_error
1474: 1466 0002E019 31 4e jeql L348
1475: 1467 0002E01B # print_pipe12_er("indexed FP addressing");
1476: 1468 0002E01B .data 1
1477: 1469 00000e39 * L349:
1478: 1470 00000e39 * 696E646578656420465020616 .ascii "indexed FP addressing\0"
1479: 46472657373696E6700
1480: 1471 00000e4f * .text
1481: 1472 0002E01B dd 8f00000e39 pushl $L349
1482: 1473 0002E021 fe 08 ef00000094 callf $8,_print_pipe12_er
1483: 1474 0002E028 # writes("final Frame Pointer = ");
1484: 1475 0002E028 .data 1
1485: 1476 00000e4f * L350:
1486: 1477 00000e4f * 66696E616C204672616D65205 .ascii "final Frame Pointer = \0"
1487: 06F696E746572203D2000
1488: 1478 00000e66 * .text
1489: 1479 0002E028 dd 8f00000e4f pushl $L350
1490: 1480 0002E02E fe 08 effffff4c7 callf $8,_writes
1491: 1481 0002E035 # write32h( sgl_value_10 );
1492: 1482 0002E035 dd effffff4c1 pushl _sgl_value_10
1493: 1483 0002E03B fe 08 effffff4ba callf $8,_write32h
1494: 1484 0002E042 # writes(", expected FP = ");
1495: 1485 0002E042 .data 1
1496: 1486 00000e66 * L352:
1497: 1487 00000e66 * 2C20206578706563746564204 .ascii ", expected FP = \0"
1498: 650203D2000
1499: 1488 00000e78 * .text
1500: 1489 0002E042 dd 8f00000e66 pushl $L352
1501: 1490 0002E048 fe 08 effffff4ad callf $8,_writes
1502: 1491 0002E04F # write32h( sgl_value_9 );
1503: 1492 0002E04F dd effffff4a7 pushl _sgl_value_9
1504: 1493 0002E055 fe 08 effffff4a0 callf $8,_write32h
1505: 1494 0002E05C # writes(" \n");
1506: 1495 0002E05C .data 1
1507: 1496 00000e78 * L353:
1508: 1497 00000e78 * 200A00 .ascii " \12\0"
1509: 1498 00000e7b * .text
1510: 1499 0002E05C dd 8f00000e78 pushl $L353
1511: 1500 0002E062 fe 08 effffff493 callf $8,_writes
1512: 1501 0002E069 # }
1513: 1502 0002E069 # if ( halt_flg ) /* halt on error? */
1514: 1503 0002E069 L348:
1515: 1504 0002E069 5d effffff48d tstl _halt_flg
1516: 1505 0002E06F 31 0d jeql L354
1517: 1506 0002E071 # pipe12_er_hlt( subtest );
1518: 1507 0002E071 dd effffff485 pushl _subtest
1519: 1508 0002E077 fe 08 ef0000018c callf $8,_pipe12_er_hlt
1520: 1509 0002E07E # if ( loop_on_err ) {
1521: 1510 0002E07E L354:
1522: 1511 0002E07E 5d effffff478 tstl _loop_on_err
1523: 1512 0002E084 31 0a jeql L355
1524: 1513 0002E086 # force_loop = TRUE; /* set the force loop flag */
1525: 1514 0002E086 0d 01 effffff46f movl $1,_force_loop
1526: 1515 0002E08D # asm("brw _pipe12_9_lp1"); /* and loop */
1527: 1516 0002E08D 13 fea5 brw _pipe12_9_lp1
1528: 1517 0002E090 # }
1529: 1518 0002E090 # } /* end of compare error */
1530: 1519 0002E090 L355:
1531: 1520 0002E090 # } while( index++ < max_ldd_1_index );
1532: 1521 0002E090 L347:
1533: 1522 0002E090 L344:
1534: 1523 0002E090 0d effffff466 50 movl _index,r0
1535: 1524 0002E097 6d effffff45f incl _index
1536: 1525 0002E09D 1d 50 effffff458 cmpl r0,_max_ldd_1_index
1537: 1526 0002E0A4 81 03 13 fe42 jlss L345
1538: 1527 0002E0A9 L343:
1539: 1528 0002E0A9 # asm("movl _pre_event_fp,r13"); /* restore the frame pointer */
1540: 1529 0002E0A9 0d effffff44d 5d movl _pre_event_fp,r13
1541: 1530 0002E0B0 # asm("movl _pre_event_sp,r14"); /* restore the stack pointer */
1542: 1531 0002E0B0 0d effffff446 5e movl _pre_event_sp,r14
1543: 1532 0002E0B7 # } /* end of subtest 9 */
1544: 1533 0002E0B7 40 ret#2
1545: 1534 0002E0B8 .set L339,0x0
1546: 1535 0002E0B8 L341:
1547: 1536 0002E0B8 13 fe16 jbr L342
1548: 1537 0002E0BB .data
1549: 1538 00000d8c * .text
1550: 1539 0002E0BB 00 .align 1
1551: 1540 0002E0BC .globl _print_pipe12_er
1552: 1541 0002E0BC _print_pipe12_er:
1553: 1542 0002E0BC 0000 .word L356
1554: 1543 0002E0BE #
1555: 1544 0002E0BE #
1556: 1545 0002E0BE # /******************************************************************************
1557: 1546 0002E0BE # *
1558: 1547 0002E0BE # * ERROR ROUTINE
1559: 1548 0002E0BE # *
1560: 1549 0002E0BE # * print an error in the following form
1561: 1550 0002E0BE # *
1562: 1551 0002E0BE # *operand = xxxxxxxx xxxxxxxx, final Acc = xxxxxxxx xxxxxxxx, data index = dd
1563: 1552 0002E0BE # * expected Acc = xxxxxxxx xxxxxxxx
1564: 1553 0002E0BE # *
1565: 1554 0002E0BE # ******************************************************************************/
1566: 1555 0002E0BE # print_pipe12_er(msg)
1567: 1556 0002E0BE # char *msg;
1568: 1557 0002E0BE # {
1569: 1558 0002E0BE 13 0145 jbr L358
1570: 1559 0002E0C1 L359:
1571: 1560 0002E0C1 # writes(" \n"); /* start a new print line */
1572: 1561 0002E0C1 .data 1
1573: 1562 00000e7b * L360:
1574: 1563 00000e7b * 200A00 .ascii " \12\0"
1575: 1564 00000e7e * .text
1576: 1565 0002E0C1 dd 8f00000e7b pushl $L360
1577: 1566 0002E0C7 fe 08 effffff42e callf $8,_writes
1578: 1567 0002E0CE # writes("cycle: ");
1579: 1568 0002E0CE .data 1
1580: 1569 00000e7e * L361:
1581: 1570 00000e7e * 6379636C653A2000 .ascii "cycle: \0"
1582: 1571 00000e86 * .text
1583: 1572 0002E0CE dd 8f00000e7e pushl $L361
1584: 1573 0002E0D4 fe 08 effffff421 callf $8,_writes
1585: 1574 0002E0DB # writed( cycle );
1586: 1575 0002E0DB dd effffff41b pushl _cycle
1587: 1576 0002E0E1 fe 08 effffff414 callf $8,_writed
1588: 1577 0002E0E8 # writes(" test ");
1589: 1578 0002E0E8 .data 1
1590: 1579 00000e86 * L363:
1591: 1580 00000e86 * 20746573742000 .ascii " test \0"
1592: 1581 00000e8d * .text
1593: 1582 0002E0E8 dd 8f00000e86 pushl $L363
1594: 1583 0002E0EE fe 08 effffff407 callf $8,_writes
1595: 1584 0002E0F5 # writed( test_no );
1596: 1585 0002E0F5 dd effffff401 pushl _test_no
1597: 1586 0002E0FB fe 08 effffff3fa callf $8,_writed
1598: 1587 0002E102 # writes(" (Pipe 12), subtest ");
1599: 1588 0002E102 .data 1
1600: 1589 00000e8d * L364:
1601: 1590 00000e8d * 20202850697065203132292C2 .ascii " (Pipe 12), subtest \0"
1602: 0737562746573742000
1603: 1591 00000ea3 * .text
1604: 1592 0002E102 dd 8f00000e8d pushl $L364
1605: 1593 0002E108 fe 08 effffff3ed callf $8,_writes
1606: 1594 0002E10F # writed( subtest );
1607: 1595 0002E10F dd effffff3e7 pushl _subtest
1608: 1596 0002E115 fe 08 effffff3e0 callf $8,_writed
1609: 1597 0002E11C # writes(" error - ");
1610: 1598 0002E11C .data 1
1611: 1599 00000ea3 * L365:
1612: 1600 00000ea3 * 206572726F72202D2000 .ascii " error - \0"
1613: 1601 00000ead * .text
1614: 1602 0002E11C dd 8f00000ea3 pushl $L365
1615: 1603 0002E122 fe 08 effffff3d3 callf $8,_writes
1616: 1604 0002E129 # writes( msg );
1617: 1605 0002E129 dd ad04 pushl 4(fp)
1618: 1606 0002E12C fe 08 effffff3c9 callf $8,_writes
1619: 1607 0002E133 # writec('\n');
1620: 1608 0002E133 dd 0a pushl $10
1621: 1609 0002E135 fe 08 effffff3c0 callf $8,_writec
1622: 1610 0002E13C # writes(
1623: 1611 0002E13C # " LDD(op), SUBD(op), ADDD(0.0), SUBD(op), ADDD(op), SUBD(0.0), ADD(op), STD\n");
1624: 1612 0002E13C .data 1
1625: 1613 00000ead * L367:
1626: 1614 00000ead * 204C4444286F70292C2053554 .ascii " LDD(op), SUBD(op), ADDD(0.0), SUBD(op), ADDD(op), SUBD(0.0), AD"
1627: 244286F70292C204144444428
1628: 302E30292C2053554244286F7
1629: 0292C2041444444286F70292C
1630: 205355424428302E30292C204
1631: 144
1632: 1615 00000eed * 44286F70292C205354440A00 .ascii "D(op), STD\12\0"
1633: 1616 00000ef9 * .text
1634: 1617 0002E13C dd 8f00000ead pushl $L367
1635: 1618 0002E142 fe 08 effffff3b3 callf $8,_writes
1636: 1619 0002E149 # writes("operand = ");
1637: 1620 0002E149 .data 1
1638: 1621 00000ef9 * L368:
1639: 1622 00000ef9 * 6F706572616E64203D2000 .ascii "operand = \0"
1640: 1623 00000f04 * .text
1641: 1624 0002E149 dd 8f00000ef9 pushl $L368
1642: 1625 0002E14F fe 08 effffff3a6 callf $8,_writes
1643: 1626 0002E156 # write32h( dbl_ld_acc.m );
1644: 1627 0002E156 dd effffff3a0 pushl _dbl_ld_acc
1645: 1628 0002E15C fe 08 effffff399 callf $8,_write32h
1646: 1629 0002E163 # writec(' ');
1647: 1630 0002E163 dd 20 pushl $32
1648: 1631 0002E165 fe 08 effffff390 callf $8,_writec
1649: 1632 0002E16C # write32h( dbl_ld_acc.l );
1650: 1633 0002E16C dd effffff38e pushl _dbl_ld_acc+4
1651: 1634 0002E172 fe 08 effffff383 callf $8,_write32h
1652: 1635 0002E179 # writes(", final Acc = ");
1653: 1636 0002E179 .data 1
1654: 1637 00000f04 * L369:
1655: 1638 00000f04 * 2C20202066696E616C2041636 .ascii ", final Acc = \0"
1656: 3203D2000
1657: 1639 00000f15 * .text
1658: 1640 0002E179 dd 8f00000f04 pushl $L369
1659: 1641 0002E17F fe 08 effffff376 callf $8,_writes
1660: 1642 0002E186 # write32h( dbl_st_acc.m );
1661: 1643 0002E186 dd effffff370 pushl _dbl_st_acc
1662: 1644 0002E18C fe 08 effffff369 callf $8,_write32h
1663: 1645 0002E193 # writec(' ');
1664: 1646 0002E193 dd 20 pushl $32
1665: 1647 0002E195 fe 08 effffff360 callf $8,_writec
1666: 1648 0002E19C # write32h( dbl_st_acc.l );
1667: 1649 0002E19C dd effffff35e pushl _dbl_st_acc+4
1668: 1650 0002E1A2 fe 08 effffff353 callf $8,_write32h
1669: 1651 0002E1A9 # writes(", data index = ");
1670: 1652 0002E1A9 .data 1
1671: 1653 00000f15 * L370:
1672: 1654 00000f15 * 2C2020206461746120696E646 .ascii ", data index = \0"
1673: 578203D2000
1674: 1655 00000f27 * .text
1675: 1656 0002E1A9 dd 8f00000f15 pushl $L370
1676: 1657 0002E1AF fe 08 effffff346 callf $8,_writes
1677: 1658 0002E1B6 # writed( index );
1678: 1659 0002E1B6 dd effffff340 pushl _index
1679: 1660 0002E1BC fe 08 effffff339 callf $8,_writed
1680: 1661 0002E1C3 # writec('\n');
1681: 1662 0002E1C3 dd 0a pushl $10
1682: 1663 0002E1C5 fe 08 effffff330 callf $8,_writec
1683: 1664 0002E1CC # writes(" expected Acc = ");
1684: 1665 0002E1CC .data 1
1685: 1666 00000f27 * L371:
1686: 1667 00000f27 * 2020202020202020202020202 .ascii " expected Acc = \0"
1687: 0202020202020202020202020
1688: 2020206578706563746564204
1689: 16363203D2000
1690: 1668 00000f53 * .text
1691: 1669 0002E1CC dd 8f00000f27 pushl $L371
1692: 1670 0002E1D2 fe 08 effffff323 callf $8,_writes
1693: 1671 0002E1D9 # write32h( dbl_expected.m );
1694: 1672 0002E1D9 dd effffff31d pushl _dbl_expected
1695: 1673 0002E1DF fe 08 effffff316 callf $8,_write32h
1696: 1674 0002E1E6 # writec(' ');
1697: 1675 0002E1E6 dd 20 pushl $32
1698: 1676 0002E1E8 fe 08 effffff30d callf $8,_writec
1699: 1677 0002E1EF # write32h( dbl_expected.l );
1700: 1678 0002E1EF dd effffff30b pushl _dbl_expected+4
1701: 1679 0002E1F5 fe 08 effffff300 callf $8,_write32h
1702: 1680 0002E1FC # writec('\n');
1703: 1681 0002E1FC dd 0a pushl $10
1704: 1682 0002E1FE fe 08 effffff2f7 callf $8,_writec
1705: 1683 0002E205 # }
1706: 1684 0002E205 40 ret#2
1707: 1685 0002E206 .set L356,0x0
1708: 1686 0002E206 L358:
1709: 1687 0002E206 13 feb8 jbr L359
1710: 1688 0002E209 .data
1711: 1689 00000d8c * .text
1712: 1690 0002E209 00 .align 1
1713: 1691 0002E20A .globl _pipe12_er_hlt
1714: 1692 0002E20A _pipe12_er_hlt:
1715: 1693 0002E20A 0000 .word L372
1716: 1694 0002E20C #
1717: 1695 0002E20C #
1718: 1696 0002E20C #
1719: 1697 0002E20C #
1720: 1698 0002E20C #
1721: 1699 0002E20C # /******************************************************************************
1722: 1700 0002E20C # *
1723: 1701 0002E20C # * HALT ON ERROR ROUTINE
1724: 1702 0002E20C # *
1725: 1703 0002E20C # * halt with the necessary information saved in the registers
1726: 1704 0002E20C # *
1727: 1705 0002E20C # ******************************************************************************/
1728: 1706 0002E20C # pipe12_er_hlt( subtest )
1729: 1707 0002E20C # int subtest;
1730: 1708 0002E20C # {
1731: 1709 0002E20C 11 75 jbr L374
1732: 1710 0002E20E L375:
1733: 1711 0002E20E # sgl_value_3 = dbl_st_acc.m;
1734: 1712 0002E20E 0d effffff2e8 effffff2e3 movl _dbl_st_acc,_sgl_value_3
1735: 1713 0002E219 # sgl_value_4 = dbl_st_acc.l;
1736: 1714 0002E219 0d effffff2e1 effffff2d8 movl _dbl_st_acc+4,_sgl_value_4
1737: 1715 0002E224 # asm("movl _test_no,r0"); /* r0 = test number */
1738: 1716 0002E224 0d effffff2d2 50 movl _test_no,r0
1739: 1717 0002E22B # asm("movl _subtest,r1"); /* r1 = subtest number */
1740: 1718 0002E22B 0d effffff2cb 51 movl _subtest,r1
1741: 1719 0002E232 # asm("movl $1,r2"); /* r2 = error code */
1742: 1720 0002E232 0d 01 52 movl $1,r2
1743: 1721 0002E235 # asm("movl _cycle,r3"); /* r3 = cycle count */
1744: 1722 0002E235 0d effffff2c1 53 movl _cycle,r3
1745: 1723 0002E23C # asm("movl _sgl_value_1,r4"); /* r4 = MSW operand loaded */
1746: 1724 0002E23C 0d effffff2ba 54 movl _sgl_value_1,r4
1747: 1725 0002E243 # asm("movl _sgl_value_2,r5"); /* r5 = LSW operand loaded */
1748: 1726 0002E243 0d effffff2b3 55 movl _sgl_value_2,r5
1749: 1727 0002E24A # asm("movl _sgl_value_3,r6"); /* r6 = MSW operand stored */
1750: 1728 0002E24A 0d effffff2ac 56 movl _sgl_value_3,r6
1751: 1729 0002E251 # asm("movl _sgl_value_4,r7"); /* r7 = LSW operand stored */
1752: 1730 0002E251 0d effffff2a5 57 movl _sgl_value_4,r7
1753: 1731 0002E258 # asm("movl _sgl_value_5,r8"); /* r8 = MSW operand expect */
1754: 1732 0002E258 0d effffff29e 58 movl _sgl_value_5,r8
1755: 1733 0002E25F # asm("movl _sgl_value_6,r9"); /* r9 = LSW operand expect */
1756: 1734 0002E25F 0d effffff297 59 movl _sgl_value_6,r9
1757: 1735 0002E266 # asm("movl _index,r10"); /* r10 = data index */
1758: 1736 0002E266 0d effffff290 5a movl _index,r10
1759: 1737 0002E26D # if( subtest == 9 ) {
1760: 1738 0002E26D 1d ad04 09 cmpl 4(fp),$9
1761: 1739 0002E271 21 0e jneq L376
1762: 1740 0002E273 # asm("movl _sgl_value_10,r11"); /* r11 = final FP value */
1763: 1741 0002E273 0d effffff283 5b movl _sgl_value_10,r11
1764: 1742 0002E27A # asm("movl _sgl_value_9,r12"); /* r12 = expected FP value */
1765: 1743 0002E27A 0d effffff27c 5c movl _sgl_value_9,r12
1766: 1744 0002E281 # };
1767: 1745 0002E281 L376:
1768: 1746 0002E281 # asm(".globl _pipe12_1_hlt");
1769: 1747 0002E281 .globl _pipe12_1_hlt
1770: 1748 0002E281 # asm("_pipe12_1_hlt:"); /* PC after the halt */
1771: 1749 0002E281 _pipe12_1_hlt:
1772: 1750 0002E281 # asm("halt"); /* HALT ... */
1773: 1751 0002E281 00 halt
1774: 1752 0002E282 # } /* end of halt on error */
1775: 1753 0002E282 40 ret#2
1776: 1754 0002E283 .set L372,0x0
1777: 1755 0002E283 L374:
1778: 1756 0002E283 11 89 jbr L375
1779: 1757 0002E285 .data
1780: 1757 0005B781 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.