|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00001010 * .text
4: 4 00000000 .align 1
5: 5 00000000 .globl _pipe_15
6: 6 00000000 _pipe_15:
7: 7 00030020 0000 .word L215
8: 8 00030022 # #include "fpp_defs.h"
9: 9 00030022 #
10: 10 00030022 #
11: 11 00030022 # /*****************************************************************************
12: 12 00030022 # *
13: 13 00030022 # * DBL PIPELINE TEST #15 MONITOR
14: 14 00030022 # *
15: 15 00030022 # * This test will do:
16: 16 00030022 # *
17: 17 00030022 # * LDD(1) MULD(op1) DIVD(op2) DIVD(1) ADDD(0) STD
18: 18 00030022 # *
19: 19 00030022 # * where 'op1' and 'op2' are the DIVD data patterns.
20: 20 00030022 # *****************************************************************************/
21: 21 00030022 # pipe_15()
22: 22 00030022 # {
23: 23 00030022 13 009b jbr L217
24: 24 00030025 L218:
25: 25 00030025 # asm(".globl _pipeline_15_t");
26: 26 00030025 .globl _pipeline_15_t
27: 27 00030025 # asm("_pipeline_15_t:"); /* entry address */
28: 28 00030025 _pipeline_15_t:
29: 29 00030025 # if( (cycle == 1) && (prt_hdrs) ) /* print headers on 1st cycle */
30: 30 00030025 1d effffffff5 01 cmpl _cycle,$1
31: 31 0003002C 21 15 jneq L219
32: 32 0003002E 5d efffffffec tstl _prt_hdrs
33: 33 00030034 31 0d jeql L219
34: 34 00030036 # {
35: 35 00030036 # writes("\n PIPE_15");
36: 36 00030036 .data 1
37: 37 00001010 * L221:
38: 38 00001010 * 0A20504950455F313500 .ascii "\12 PIPE_15\0"
39: 39 0000101a * .text
40: 40 00030036 dd 8f00001010 pushl $L221
41: 41 0003003C fe 08 efffffffdd callf $8,_writes
42: 42 00030043 # }
43: 43 00030043 # subtest = 1;
44: 44 00030043 L219:
45: 45 00030043 0d 01 efffffffd6 movl $1,_subtest
46: 46 0003004A # pipe15_1(); /* data in REGs, no NOPs */
47: 47 0003004A fe 04 ef00000073 callf $4,_pipe15_1
48: 48 00030051 # subtest++; /* increment subtest num */
49: 49 00030051 6d efffffffc9 incl _subtest
50: 50 00030057 # pipe15_2(); /* data in REGs, 1 NOP */
51: 51 00030057 fe 04 ef000001de callf $4,_pipe15_2
52: 52 0003005E # subtest++; /* increment subtest num */
53: 53 0003005E 6d efffffffbc incl _subtest
54: 54 00030064 # pipe15_3(); /* data in REGs, 2 NOPs */
55: 55 00030064 fe 04 ef0000034d callf $4,_pipe15_3
56: 56 0003006B # subtest++; /* increment subtest num */
57: 57 0003006B 6d efffffffaf incl _subtest
58: 58 00030071 # pipe15_4(); /* data in REGs, 3 NOPs */
59: 59 00030071 fe 04 ef000004c2 callf $4,_pipe15_4
60: 60 00030078 # subtest++; /* increment subtest num */
61: 61 00030078 6d efffffffa2 incl _subtest
62: 62 0003007E # pipe15_5(); /* data in CACHE, no NOPs */
63: 63 0003007E fe 04 ef0000063b callf $4,_pipe15_5
64: 64 00030085 # subtest++; /* increment subtest num */
65: 65 00030085 6d efffffff95 incl _subtest
66: 66 0003008B # pipe15_6(); /* data in CACHE, 1 NOP */
67: 67 0003008B fe 04 ef0000075e callf $4,_pipe15_6
68: 68 00030092 # subtest++; /* increment subtest num */
69: 69 00030092 6d efffffff88 incl _subtest
70: 70 00030098 # pipe15_7(); /* data in CACHE, 2 NOPs */
71: 71 00030098 fe 04 ef00000885 callf $4,_pipe15_7
72: 72 0003009F # subtest++; /* increment subtest num */
73: 73 0003009F 6d efffffff7b incl _subtest
74: 74 000300A5 # pipe15_8(); /* data in CACHE, 3 NOPs */
75: 75 000300A5 fe 04 ef000009b2 callf $4,_pipe15_8
76: 76 000300AC # subtest++; /* increment subtest num */
77: 77 000300AC 6d efffffff6e incl _subtest
78: 78 000300B2 # pipe15_9(); /* data via F.P. 0 NOPs */
79: 79 000300B2 fe 04 ef00000ae3 callf $4,_pipe15_9
80: 80 000300B9 # asm("jmp *return"); /* return to the test monitor */
81: 81 000300B9 71 ffffffff61 jmp *return
82: 82 000300BF # }
83: 83 000300BF 40 ret#2
84: 84 000300C0 .set L215,0x0
85: 85 000300C0 L217:
86: 86 000300C0 13 ff62 jbr L218
87: 87 000300C3 .data
88: 88 00001010 * .text
89: 89 000300C3 00 .align 1
90: 90 000300C4 .globl _pipe15_1
91: 91 000300C4 _pipe15_1:
92: 92 000300C4 0000 .word L231
93: 93 000300C6 #
94: 94 000300C6 #
95: 95 000300C6 #
96: 96 000300C6 #
97: 97 000300C6 #
98: 98 000300C6 #
99: 99 000300C6 #
100: 100 000300C6 #
101: 101 000300C6 # /************************************************************************
102: 102 000300C6 # *
103: 103 000300C6 # * SUBTEST 1
104: 104 000300C6 # * data in registers, no NO-OPs
105: 105 000300C6 # *
106: 106 000300C6 # ************************************************************************/
107: 107 000300C6 # pipe15_1()
108: 108 000300C6 # {
109: 109 000300C6 13 016f jbr L233
110: 110 000300C9 L234:
111: 111 000300C9 # force_loop = FALSE; /* clear the force_loop flg */
112: 112 000300C9 4d efffffff51 clrl _force_loop
113: 113 000300CF # index = 0;
114: 114 000300CF 4d efffffff4b clrl _index
115: 115 000300D5 # do
116: 116 000300D5 L237:
117: 117 000300D5 # {
118: 118 000300D5 # sgl_value_1 = divd_1_data[index].op_1.m; /* get op_1's MSW */
119: 119 000300D5 5c 18 efffffff44 50 mull3 $24,_index,r0
120: 120 000300DD 0d e000000000 efffffff38 movl _divd_1_data(r0),_sgl_value_1
121: 121 000300E8 # sgl_value_2 = divd_1_data[index].op_1.l; /* get op_1's LSW */
122: 122 000300E8 5c 18 efffffff31 50 mull3 $24,_index,r0
123: 123 000300F0 0d e000000004 efffffff25 movl _divd_1_data+4(r0),_sgl_value_2
124: 124 000300FB # sgl_value_3 = divd_1_data[index].op_2.m; /* get op_2's MSW */
125: 125 000300FB 5c 18 efffffff1e 50 mull3 $24,_index,r0
126: 126 00030103 0d e000000008 efffffff12 movl _divd_1_data+8(r0),_sgl_value_3
127: 127 0003010E # sgl_value_4 = divd_1_data[index].op_2.l; /* get op_2's LSW */
128: 128 0003010E 5c 18 efffffff0b 50 mull3 $24,_index,r0
129: 129 00030116 0d e00000000c effffffeff movl _divd_1_data+12(r0),_sgl_value_4
130: 130 00030121 # sgl_value_7 = 0x40800000; /* get dbl precision 1.0 */
131: 131 00030121 0d 8f40800000 effffffef4 movl $1082130432,_sgl_value_7
132: 132 0003012C # sgl_value_8 = 0;
133: 133 0003012C 4d effffffeee clrl _sgl_value_8
134: 134 00030132 # dbl_expected = divd_1_data[index].exp; /* get expected results */
135: 135 00030132 5c 18 effffffee7 50 mull3 $24,_index,r0
136: 136 0003013A 0c 8f00000010 50 addl2 $_divd_1_data+16,r0
137: 137 00030141 0d a004 effffffedb movl 4(r0),_dbl_expected+4
138: 138 00030149 0d 60 effffffed0 movl (r0),_dbl_expected
139: 139 00030150 # /*
140: 140 00030150 # * If LOOP ON ERROR is set, this is the loop for this subtest.
141: 141 00030150 # * The force loop flag is set after the first error.
142: 142 00030150 # */
143: 143 00030150 # asm("_pipe15_1_lp1:");
144: 144 00030150 _pipe15_1_lp1:
145: 145 00030150 # asm("movl _sgl_value_1,r0"); /* move operand 1 to r0/r1 */
146: 146 00030150 0d effffffeca 50 movl _sgl_value_1,r0
147: 147 00030157 # asm("movl _sgl_value_2,r1");
148: 148 00030157 0d effffffec3 51 movl _sgl_value_2,r1
149: 149 0003015E # asm("movl _sgl_value_3,r2"); /* move operand 2 to r2/r3 */
150: 150 0003015E 0d effffffebc 52 movl _sgl_value_3,r2
151: 151 00030165 # asm("movl _sgl_value_4,r3");
152: 152 00030165 0d effffffeb5 53 movl _sgl_value_4,r3
153: 153 0003016C # asm("movl _sgl_value_7,r4"); /* move a '1.0' to r4/r5 */
154: 154 0003016C 0d effffffeae 54 movl _sgl_value_7,r4
155: 155 00030173 # asm("movl _sgl_value_8,r5");
156: 156 00030173 0d effffffea7 55 movl _sgl_value_8,r5
157: 157 0003017A # asm("movl _sgl_value_8,r8"); /* move a '0.0' to r8/r9 */
158: 158 0003017A 0d effffffea0 58 movl _sgl_value_8,r8
159: 159 00030181 # asm("movl _sgl_value_8,r9");
160: 160 00030181 0d effffffe99 59 movl _sgl_value_8,r9
161: 161 00030188 # asm("ldd r4"); /* load a '1.0' ( 1 ) */
162: 162 00030188 07 54 ldd r4
163: 163 0003018A # asm("muld r0"); /* mult by op. 1 ( op1 ) */
164: 164 0003018A e7 50 muld r0
165: 165 0003018C # asm("divd r2"); /* div by operand 2 ( exp ) */
166: 166 0003018C f7 52 divd r2
167: 167 0003018E # asm("divd r4"); /* divide by '1.0' ( exp ) */
168: 168 0003018E f7 54 divd r4
169: 169 00030190 # asm("addd r8"); /* add '0.0' ( exp ) */
170: 170 00030190 c7 58 addd r8
171: 171 00030192 # asm("std r6"); /* store the result ( exp ) */
172: 172 00030192 27 56 std r6
173: 173 00030194 # if( force_loop )
174: 174 00030194 5d effffffe86 tstl _force_loop
175: 175 0003019A 31 02 jeql L238
176: 176 0003019C # asm("brb _pipe15_1_lp1");; /* run the loop again */
177: 177 0003019C 11 b2 brb _pipe15_1_lp1
178: 178 0003019E L238:
179: 179 0003019E # /*
180: 180 0003019E # * verify the results
181: 181 0003019E # */
182: 182 0003019E # asm("movl r6,_sgl_value_5"); /* get the result */
183: 183 0003019E 0d 56 effffffe7b movl r6,_sgl_value_5
184: 184 000301A5 # asm("movl r7,_sgl_value_6");
185: 185 000301A5 0d 57 effffffe74 movl r7,_sgl_value_6
186: 186 000301AC # dbl_st_acc.m = sgl_value_5;
187: 187 000301AC 0d effffffe6e effffffe69 movl _sgl_value_5,_dbl_st_acc
188: 188 000301B7 # dbl_st_acc.l = sgl_value_6;
189: 189 000301B7 0d effffffe63 effffffe62 movl _sgl_value_6,_dbl_st_acc+4
190: 190 000301C2 # if( (dbl_st_acc.m != dbl_expected.m) ||/* compare the results */
191: 191 000301C2 # (dbl_st_acc.l != dbl_expected.l) )
192: 192 000301C2 1d effffffe58 effffffe53 cmpl _dbl_st_acc,_dbl_expected
193: 193 000301CD 21 0d jneq L9999
194: 194 000301CF 1d effffffe4f effffffe4a cmpl _dbl_st_acc+4,_dbl_expected+4
195: 195 000301DA 31 42 jeql L239
196: 196 000301DC L9999:
197: 197 000301DC # {
198: 198 000301DC # errcnt++; /* bump the error count */
199: 199 000301DC 6d effffffe3e incl _errcnt
200: 200 000301E2 # if ( prt_error )
201: 201 000301E2 5d effffffe38 tstl _prt_error
202: 202 000301E8 31 0d jeql L240
203: 203 000301EA # print_pipe15_er("Reg. Data, no NO-OPs");
204: 204 000301EA .data 1
205: 205 0000101a * L242:
206: 206 0000101a * 5265672E20446174612C206E6 .ascii "Reg. Data, no NO-OPs\0"
207: F204E4F2D4F507300
208: 207 0000102f * .text
209: 208 000301EA dd 8f0000101a pushl $L242
210: 209 000301F0 fe 08 ef00000c17 callf $8,_print_pipe15_er
211: 210 000301F7 # if ( halt_flg ) /* halt on error? */
212: 211 000301F7 L240:
213: 212 000301F7 5d effffffe23 tstl _halt_flg
214: 213 000301FD 31 0d jeql L243
215: 214 000301FF # pipe15_er_hlt( subtest );
216: 215 000301FF dd effffffe1b pushl _subtest
217: 216 00030205 fe 08 ef00000d80 callf $8,_pipe15_er_hlt
218: 217 0003020C # if ( loop_on_err ) {
219: 218 0003020C L243:
220: 219 0003020C 5d effffffe0e tstl _loop_on_err
221: 220 00030212 31 0a jeql L245
222: 221 00030214 # force_loop = TRUE; /* set the force loop flag */
223: 222 00030214 0d 01 effffffe05 movl $1,_force_loop
224: 223 0003021B # asm("brw _pipe15_1_lp1"); /* and loop */
225: 224 0003021B 13 ff32 brw _pipe15_1_lp1
226: 225 0003021E # }
227: 226 0003021E # } /* end of compare error */
228: 227 0003021E L245:
229: 228 0003021E # } while( index++ < max_divd_1_index );
230: 229 0003021E L239:
231: 230 0003021E L236:
232: 231 0003021E 0d effffffdfc 50 movl _index,r0
233: 232 00030225 6d effffffdf5 incl _index
234: 233 0003022B 1d 50 effffffdee cmpl r0,_max_divd_1_index
235: 234 00030232 81 03 13 fe9e jlss L237
236: 235 00030237 L235:
237: 236 00030237 # } /* end of subtest 1 */
238: 237 00030237 40 ret#2
239: 238 00030238 .set L231,0x0
240: 239 00030238 L233:
241: 240 00030238 13 fe8e jbr L234
242: 241 0003023B .data
243: 242 00001010 * .text
244: 243 0003023B 00 .align 1
245: 244 0003023C .globl _pipe15_2
246: 245 0003023C _pipe15_2:
247: 246 0003023C 0000 .word L246
248: 247 0003023E #
249: 248 0003023E #
250: 249 0003023E #
251: 250 0003023E #
252: 251 0003023E #
253: 252 0003023E #
254: 253 0003023E # /************************************************************************
255: 254 0003023E # *
256: 255 0003023E # * SUBTEST 2
257: 256 0003023E # * data in registers, 1 NO-OP
258: 257 0003023E # *
259: 258 0003023E # ************************************************************************/
260: 259 0003023E # pipe15_2()
261: 260 0003023E # {
262: 261 0003023E 13 0174 jbr L248
263: 262 00030241 L249:
264: 263 00030241 # force_loop = FALSE; /* clear the force_loop flg */
265: 264 00030241 4d effffffdd9 clrl _force_loop
266: 265 00030247 # index = 0;
267: 266 00030247 4d effffffdd3 clrl _index
268: 267 0003024D # do
269: 268 0003024D L252:
270: 269 0003024D # {
271: 270 0003024D # sgl_value_1 = divd_1_data[index].op_1.m; /* get op_1's MSW */
272: 271 0003024D 5c 18 effffffdcc 50 mull3 $24,_index,r0
273: 272 00030255 0d e000000000 effffffdc0 movl _divd_1_data(r0),_sgl_value_1
274: 273 00030260 # sgl_value_2 = divd_1_data[index].op_1.l; /* get op_1's LSW */
275: 274 00030260 5c 18 effffffdb9 50 mull3 $24,_index,r0
276: 275 00030268 0d e000000004 effffffdad movl _divd_1_data+4(r0),_sgl_value_2
277: 276 00030273 # sgl_value_3 = divd_1_data[index].op_2.m; /* get op_2's MSW */
278: 277 00030273 5c 18 effffffda6 50 mull3 $24,_index,r0
279: 278 0003027B 0d e000000008 effffffd9a movl _divd_1_data+8(r0),_sgl_value_3
280: 279 00030286 # sgl_value_4 = divd_1_data[index].op_2.l; /* get op_2's LSW */
281: 280 00030286 5c 18 effffffd93 50 mull3 $24,_index,r0
282: 281 0003028E 0d e00000000c effffffd87 movl _divd_1_data+12(r0),_sgl_value_4
283: 282 00030299 # sgl_value_7 = 0x40800000; /* get dbl precision 1.0 */
284: 283 00030299 0d 8f40800000 effffffd7c movl $1082130432,_sgl_value_7
285: 284 000302A4 # sgl_value_8 = 0;
286: 285 000302A4 4d effffffd76 clrl _sgl_value_8
287: 286 000302AA # dbl_expected = divd_1_data[index].exp; /* get expected results */
288: 287 000302AA 5c 18 effffffd6f 50 mull3 $24,_index,r0
289: 288 000302B2 0c 8f00000010 50 addl2 $_divd_1_data+16,r0
290: 289 000302B9 0d a004 effffffd63 movl 4(r0),_dbl_expected+4
291: 290 000302C1 0d 60 effffffd58 movl (r0),_dbl_expected
292: 291 000302C8 # /*
293: 292 000302C8 # * If LOOP ON ERROR is set, this is the loop for this subtest.
294: 293 000302C8 # * The force loop flag is set after the first error.
295: 294 000302C8 # */
296: 295 000302C8 # asm("_pipe15_2_lp1:");
297: 296 000302C8 _pipe15_2_lp1:
298: 297 000302C8 # asm("movl _sgl_value_1,r0"); /* move operand 1 to r0/r1 */
299: 298 000302C8 0d effffffd52 50 movl _sgl_value_1,r0
300: 299 000302CF # asm("movl _sgl_value_2,r1");
301: 300 000302CF 0d effffffd4b 51 movl _sgl_value_2,r1
302: 301 000302D6 # asm("movl _sgl_value_3,r2"); /* move operand 2 to r2/r3 */
303: 302 000302D6 0d effffffd44 52 movl _sgl_value_3,r2
304: 303 000302DD # asm("movl _sgl_value_4,r3");
305: 304 000302DD 0d effffffd3d 53 movl _sgl_value_4,r3
306: 305 000302E4 # asm("movl _sgl_value_7,r4"); /* move a '1.0' to r4/r5 */
307: 306 000302E4 0d effffffd36 54 movl _sgl_value_7,r4
308: 307 000302EB # asm("movl _sgl_value_8,r5");
309: 308 000302EB 0d effffffd2f 55 movl _sgl_value_8,r5
310: 309 000302F2 # asm("movl _sgl_value_8,r8"); /* move a '0.0' to r8/r9 */
311: 310 000302F2 0d effffffd28 58 movl _sgl_value_8,r8
312: 311 000302F9 # asm("movl _sgl_value_8,r9");
313: 312 000302F9 0d effffffd21 59 movl _sgl_value_8,r9
314: 313 00030300 # asm("ldd r4"); /* load a '1.0' ( 1 ) */
315: 314 00030300 07 54 ldd r4
316: 315 00030302 # asm("nop");
317: 316 00030302 10 nop
318: 317 00030303 # asm("muld r0"); /* mult by op. 1 ( op1 ) */
319: 318 00030303 e7 50 muld r0
320: 319 00030305 # asm("nop");
321: 320 00030305 10 nop
322: 321 00030306 # asm("divd r2"); /* div by operand 2 ( exp ) */
323: 322 00030306 f7 52 divd r2
324: 323 00030308 # asm("nop");
325: 324 00030308 10 nop
326: 325 00030309 # asm("divd r4"); /* divide by '1.0' ( exp ) */
327: 326 00030309 f7 54 divd r4
328: 327 0003030B # asm("nop");
329: 328 0003030B 10 nop
330: 329 0003030C # asm("addd r8"); /* add '0.0' ( exp ) */
331: 330 0003030C c7 58 addd r8
332: 331 0003030E # asm("nop");
333: 332 0003030E 10 nop
334: 333 0003030F # asm("std r6"); /* store the result ( exp ) */
335: 334 0003030F 27 56 std r6
336: 335 00030311 # if( force_loop )
337: 336 00030311 5d effffffd09 tstl _force_loop
338: 337 00030317 31 02 jeql L253
339: 338 00030319 # asm("brb _pipe15_2_lp1");; /* run the loop again */
340: 339 00030319 11 ad brb _pipe15_2_lp1
341: 340 0003031B L253:
342: 341 0003031B # /*
343: 342 0003031B # * verify the results
344: 343 0003031B # */
345: 344 0003031B # asm("movl r6,_sgl_value_5"); /* get the result */
346: 345 0003031B 0d 56 effffffcfe movl r6,_sgl_value_5
347: 346 00030322 # asm("movl r7,_sgl_value_6");
348: 347 00030322 0d 57 effffffcf7 movl r7,_sgl_value_6
349: 348 00030329 # dbl_st_acc.m = sgl_value_5;
350: 349 00030329 0d effffffcf1 effffffcec movl _sgl_value_5,_dbl_st_acc
351: 350 00030334 # dbl_st_acc.l = sgl_value_6;
352: 351 00030334 0d effffffce6 effffffce5 movl _sgl_value_6,_dbl_st_acc+4
353: 352 0003033F # if( (dbl_st_acc.m != dbl_expected.m) ||/* compare the results */
354: 353 0003033F # (dbl_st_acc.l != dbl_expected.l) )
355: 354 0003033F 1d effffffcdb effffffcd6 cmpl _dbl_st_acc,_dbl_expected
356: 355 0003034A 21 0d jneq L9998
357: 356 0003034C 1d effffffcd2 effffffccd cmpl _dbl_st_acc+4,_dbl_expected+4
358: 357 00030357 31 42 jeql L254
359: 358 00030359 L9998:
360: 359 00030359 # {
361: 360 00030359 # errcnt++; /* bump the error count */
362: 361 00030359 6d effffffcc1 incl _errcnt
363: 362 0003035F # if ( prt_error )
364: 363 0003035F 5d effffffcbb tstl _prt_error
365: 364 00030365 31 0d jeql L255
366: 365 00030367 # print_pipe15_er("Reg. Data, 1 NO-OP");
367: 366 00030367 .data 1
368: 367 0000102f * L256:
369: 368 0000102f * 5265672E20446174612C20312 .ascii "Reg. Data, 1 NO-OP\0"
370: 04E4F2D4F5000
371: 369 00001042 * .text
372: 370 00030367 dd 8f0000102f pushl $L256
373: 371 0003036D fe 08 ef00000a9a callf $8,_print_pipe15_er
374: 372 00030374 # if ( halt_flg ) /* halt on error? */
375: 373 00030374 L255:
376: 374 00030374 5d effffffca6 tstl _halt_flg
377: 375 0003037A 31 0d jeql L257
378: 376 0003037C # pipe15_er_hlt( subtest );
379: 377 0003037C dd effffffc9e pushl _subtest
380: 378 00030382 fe 08 ef00000c03 callf $8,_pipe15_er_hlt
381: 379 00030389 # if ( loop_on_err ) {
382: 380 00030389 L257:
383: 381 00030389 5d effffffc91 tstl _loop_on_err
384: 382 0003038F 31 0a jeql L258
385: 383 00030391 # force_loop = TRUE; /* set the force loop flag */
386: 384 00030391 0d 01 effffffc88 movl $1,_force_loop
387: 385 00030398 # asm("brw _pipe15_2_lp1"); /* and loop */
388: 386 00030398 13 ff2d brw _pipe15_2_lp1
389: 387 0003039B # }
390: 388 0003039B # } /* end of compare error */
391: 389 0003039B L258:
392: 390 0003039B # } while( index++ < max_divd_1_index );
393: 391 0003039B L254:
394: 392 0003039B L251:
395: 393 0003039B 0d effffffc7f 50 movl _index,r0
396: 394 000303A2 6d effffffc78 incl _index
397: 395 000303A8 1d 50 effffffc71 cmpl r0,_max_divd_1_index
398: 396 000303AF 81 03 13 fe99 jlss L252
399: 397 000303B4 L250:
400: 398 000303B4 # } /* end of subtest 2 */
401: 399 000303B4 40 ret#2
402: 400 000303B5 .set L246,0x0
403: 401 000303B5 L248:
404: 402 000303B5 13 fe89 jbr L249
405: 403 000303B8 .data
406: 404 00001010 * .text
407: 405 000303B8 .align 1
408: 406 000303B8 .globl _pipe15_3
409: 407 000303B8 _pipe15_3:
410: 408 000303B8 0000 .word L259
411: 409 000303BA #
412: 410 000303BA #
413: 411 000303BA #
414: 412 000303BA #
415: 413 000303BA #
416: 414 000303BA #
417: 415 000303BA #
418: 416 000303BA #
419: 417 000303BA # /************************************************************************
420: 418 000303BA # *
421: 419 000303BA # * SUBTEST 3
422: 420 000303BA # * data in registers, 2 NO-OPs
423: 421 000303BA # *
424: 422 000303BA # ************************************************************************/
425: 423 000303BA # pipe15_3()
426: 424 000303BA # {
427: 425 000303BA 13 0179 jbr L261
428: 426 000303BD L262:
429: 427 000303BD # force_loop = FALSE; /* clear the force_loop flg */
430: 428 000303BD 4d effffffc5d clrl _force_loop
431: 429 000303C3 # index = 0;
432: 430 000303C3 4d effffffc57 clrl _index
433: 431 000303C9 # do
434: 432 000303C9 L265:
435: 433 000303C9 # {
436: 434 000303C9 # sgl_value_1 = divd_1_data[index].op_1.m; /* get op_1's MSW */
437: 435 000303C9 5c 18 effffffc50 50 mull3 $24,_index,r0
438: 436 000303D1 0d e000000000 effffffc44 movl _divd_1_data(r0),_sgl_value_1
439: 437 000303DC # sgl_value_2 = divd_1_data[index].op_1.l; /* get op_1's LSW */
440: 438 000303DC 5c 18 effffffc3d 50 mull3 $24,_index,r0
441: 439 000303E4 0d e000000004 effffffc31 movl _divd_1_data+4(r0),_sgl_value_2
442: 440 000303EF # sgl_value_3 = divd_1_data[index].op_2.m; /* get op_2's MSW */
443: 441 000303EF 5c 18 effffffc2a 50 mull3 $24,_index,r0
444: 442 000303F7 0d e000000008 effffffc1e movl _divd_1_data+8(r0),_sgl_value_3
445: 443 00030402 # sgl_value_4 = divd_1_data[index].op_2.l; /* get op_2's LSW */
446: 444 00030402 5c 18 effffffc17 50 mull3 $24,_index,r0
447: 445 0003040A 0d e00000000c effffffc0b movl _divd_1_data+12(r0),_sgl_value_4
448: 446 00030415 # sgl_value_7 = 0x40800000; /* get dbl precision 1.0 */
449: 447 00030415 0d 8f40800000 effffffc00 movl $1082130432,_sgl_value_7
450: 448 00030420 # sgl_value_8 = 0;
451: 449 00030420 4d effffffbfa clrl _sgl_value_8
452: 450 00030426 # dbl_expected = divd_1_data[index].exp; /* get expected results */
453: 451 00030426 5c 18 effffffbf3 50 mull3 $24,_index,r0
454: 452 0003042E 0c 8f00000010 50 addl2 $_divd_1_data+16,r0
455: 453 00030435 0d a004 effffffbe7 movl 4(r0),_dbl_expected+4
456: 454 0003043D 0d 60 effffffbdc movl (r0),_dbl_expected
457: 455 00030444 # /*
458: 456 00030444 # * If LOOP ON ERROR is set, this is the loop for this subtest.
459: 457 00030444 # * The force loop flag is set after the first error.
460: 458 00030444 # */
461: 459 00030444 # asm("_pipe15_3_lp1:");
462: 460 00030444 _pipe15_3_lp1:
463: 461 00030444 # asm("movl _sgl_value_1,r0"); /* move operand 1 to r0/r1 */
464: 462 00030444 0d effffffbd6 50 movl _sgl_value_1,r0
465: 463 0003044B # asm("movl _sgl_value_2,r1");
466: 464 0003044B 0d effffffbcf 51 movl _sgl_value_2,r1
467: 465 00030452 # asm("movl _sgl_value_3,r2"); /* move operand 2 to r2/r3 */
468: 466 00030452 0d effffffbc8 52 movl _sgl_value_3,r2
469: 467 00030459 # asm("movl _sgl_value_4,r3");
470: 468 00030459 0d effffffbc1 53 movl _sgl_value_4,r3
471: 469 00030460 # asm("movl _sgl_value_7,r4"); /* move a '1.0' to r4/r5 */
472: 470 00030460 0d effffffbba 54 movl _sgl_value_7,r4
473: 471 00030467 # asm("movl _sgl_value_8,r5");
474: 472 00030467 0d effffffbb3 55 movl _sgl_value_8,r5
475: 473 0003046E # asm("movl _sgl_value_8,r8"); /* move a '0.0' to r8/r9 */
476: 474 0003046E 0d effffffbac 58 movl _sgl_value_8,r8
477: 475 00030475 # asm("movl _sgl_value_8,r9");
478: 476 00030475 0d effffffba5 59 movl _sgl_value_8,r9
479: 477 0003047C # asm("ldd r4"); /* load a '1.0' ( 1 ) */
480: 478 0003047C 07 54 ldd r4
481: 479 0003047E # asm("nop");
482: 480 0003047E 10 nop
483: 481 0003047F # asm("nop");
484: 482 0003047F 10 nop
485: 483 00030480 # asm("muld r0"); /* mult by op. 1 ( op1 ) */
486: 484 00030480 e7 50 muld r0
487: 485 00030482 # asm("nop");
488: 486 00030482 10 nop
489: 487 00030483 # asm("nop");
490: 488 00030483 10 nop
491: 489 00030484 # asm("divd r2"); /* div by operand 2 ( exp ) */
492: 490 00030484 f7 52 divd r2
493: 491 00030486 # asm("nop");
494: 492 00030486 10 nop
495: 493 00030487 # asm("nop");
496: 494 00030487 10 nop
497: 495 00030488 # asm("divd r4"); /* divide by '1.0' ( exp ) */
498: 496 00030488 f7 54 divd r4
499: 497 0003048A # asm("nop");
500: 498 0003048A 10 nop
501: 499 0003048B # asm("nop");
502: 500 0003048B 10 nop
503: 501 0003048C # asm("addd r8"); /* add '0.0' ( exp ) */
504: 502 0003048C c7 58 addd r8
505: 503 0003048E # asm("nop");
506: 504 0003048E 10 nop
507: 505 0003048F # asm("nop");
508: 506 0003048F 10 nop
509: 507 00030490 # asm("std r6"); /* store the result ( exp ) */
510: 508 00030490 27 56 std r6
511: 509 00030492 # if( force_loop )
512: 510 00030492 5d effffffb88 tstl _force_loop
513: 511 00030498 31 02 jeql L266
514: 512 0003049A # asm("brb _pipe15_3_lp1");; /* run the loop again */
515: 513 0003049A 11 a8 brb _pipe15_3_lp1
516: 514 0003049C L266:
517: 515 0003049C # /*
518: 516 0003049C # * verify the results
519: 517 0003049C # */
520: 518 0003049C # asm("movl r6,_sgl_value_5"); /* get the result */
521: 519 0003049C 0d 56 effffffb7d movl r6,_sgl_value_5
522: 520 000304A3 # asm("movl r7,_sgl_value_6");
523: 521 000304A3 0d 57 effffffb76 movl r7,_sgl_value_6
524: 522 000304AA # dbl_st_acc.m = sgl_value_5;
525: 523 000304AA 0d effffffb70 effffffb6b movl _sgl_value_5,_dbl_st_acc
526: 524 000304B5 # dbl_st_acc.l = sgl_value_6;
527: 525 000304B5 0d effffffb65 effffffb64 movl _sgl_value_6,_dbl_st_acc+4
528: 526 000304C0 # if( (dbl_st_acc.m != dbl_expected.m) ||/* compare the results */
529: 527 000304C0 # (dbl_st_acc.l != dbl_expected.l) )
530: 528 000304C0 1d effffffb5a effffffb55 cmpl _dbl_st_acc,_dbl_expected
531: 529 000304CB 21 0d jneq L9997
532: 530 000304CD 1d effffffb51 effffffb4c cmpl _dbl_st_acc+4,_dbl_expected+4
533: 531 000304D8 31 42 jeql L267
534: 532 000304DA L9997:
535: 533 000304DA # {
536: 534 000304DA # errcnt++; /* bump the error count */
537: 535 000304DA 6d effffffb40 incl _errcnt
538: 536 000304E0 # if ( prt_error )
539: 537 000304E0 5d effffffb3a tstl _prt_error
540: 538 000304E6 31 0d jeql L268
541: 539 000304E8 # print_pipe15_er("Reg. Data, 2 NO-OPs");
542: 540 000304E8 .data 1
543: 541 00001042 * L269:
544: 542 00001042 * 5265672E20446174612C20322 .ascii "Reg. Data, 2 NO-OPs\0"
545: 04E4F2D4F507300
546: 543 00001056 * .text
547: 544 000304E8 dd 8f00001042 pushl $L269
548: 545 000304EE fe 08 ef00000919 callf $8,_print_pipe15_er
549: 546 000304F5 # if ( halt_flg ) /* halt on error? */
550: 547 000304F5 L268:
551: 548 000304F5 5d effffffb25 tstl _halt_flg
552: 549 000304FB 31 0d jeql L270
553: 550 000304FD # pipe15_er_hlt( subtest );
554: 551 000304FD dd effffffb1d pushl _subtest
555: 552 00030503 fe 08 ef00000a82 callf $8,_pipe15_er_hlt
556: 553 0003050A # if ( loop_on_err ) {
557: 554 0003050A L270:
558: 555 0003050A 5d effffffb10 tstl _loop_on_err
559: 556 00030510 31 0a jeql L271
560: 557 00030512 # force_loop = TRUE; /* set the force loop flag */
561: 558 00030512 0d 01 effffffb07 movl $1,_force_loop
562: 559 00030519 # asm("brw _pipe15_3_lp1"); /* and loop */
563: 560 00030519 13 ff28 brw _pipe15_3_lp1
564: 561 0003051C # }
565: 562 0003051C # } /* end of compare error */
566: 563 0003051C L271:
567: 564 0003051C # } while( index++ < max_divd_1_index );
568: 565 0003051C L267:
569: 566 0003051C L264:
570: 567 0003051C 0d effffffafe 50 movl _index,r0
571: 568 00030523 6d effffffaf7 incl _index
572: 569 00030529 1d 50 effffffaf0 cmpl r0,_max_divd_1_index
573: 570 00030530 81 03 13 fe94 jlss L265
574: 571 00030535 L263:
575: 572 00030535 # } /* end of subtest 3 */
576: 573 00030535 40 ret#2
577: 574 00030536 .set L259,0x0
578: 575 00030536 L261:
579: 576 00030536 13 fe84 jbr L262
580: 577 00030539 .data
581: 578 00001010 * .text
582: 579 00030539 00 .align 1
583: 580 0003053A .globl _pipe15_4
584: 581 0003053A _pipe15_4:
585: 582 0003053A 0000 .word L272
586: 583 0003053C #
587: 584 0003053C #
588: 585 0003053C #
589: 586 0003053C #
590: 587 0003053C #
591: 588 0003053C #
592: 589 0003053C #
593: 590 0003053C # /************************************************************************
594: 591 0003053C # *
595: 592 0003053C # * SUBTEST 4
596: 593 0003053C # * data in registers, 3 NO-OPs
597: 594 0003053C # *
598: 595 0003053C # ************************************************************************/
599: 596 0003053C # pipe15_4()
600: 597 0003053C # {
601: 598 0003053C 13 017e jbr L274
602: 599 0003053F L275:
603: 600 0003053F # force_loop = FALSE; /* clear the force_loop flg */
604: 601 0003053F 4d effffffadb clrl _force_loop
605: 602 00030545 # index = 0;
606: 603 00030545 4d effffffad5 clrl _index
607: 604 0003054B # do
608: 605 0003054B L278:
609: 606 0003054B # {
610: 607 0003054B # sgl_value_1 = divd_1_data[index].op_1.m; /* get op_1's MSW */
611: 608 0003054B 5c 18 efffffface 50 mull3 $24,_index,r0
612: 609 00030553 0d e000000000 effffffac2 movl _divd_1_data(r0),_sgl_value_1
613: 610 0003055E # sgl_value_2 = divd_1_data[index].op_1.l; /* get op_1's LSW */
614: 611 0003055E 5c 18 effffffabb 50 mull3 $24,_index,r0
615: 612 00030566 0d e000000004 effffffaaf movl _divd_1_data+4(r0),_sgl_value_2
616: 613 00030571 # sgl_value_3 = divd_1_data[index].op_2.m; /* get op_2's MSW */
617: 614 00030571 5c 18 effffffaa8 50 mull3 $24,_index,r0
618: 615 00030579 0d e000000008 effffffa9c movl _divd_1_data+8(r0),_sgl_value_3
619: 616 00030584 # sgl_value_4 = divd_1_data[index].op_2.l; /* get op_2's LSW */
620: 617 00030584 5c 18 effffffa95 50 mull3 $24,_index,r0
621: 618 0003058C 0d e00000000c effffffa89 movl _divd_1_data+12(r0),_sgl_value_4
622: 619 00030597 # sgl_value_7 = 0x40800000; /* get dbl precision 1.0 */
623: 620 00030597 0d 8f40800000 effffffa7e movl $1082130432,_sgl_value_7
624: 621 000305A2 # sgl_value_8 = 0;
625: 622 000305A2 4d effffffa78 clrl _sgl_value_8
626: 623 000305A8 # dbl_expected = divd_1_data[index].exp; /* get expected results */
627: 624 000305A8 5c 18 effffffa71 50 mull3 $24,_index,r0
628: 625 000305B0 0c 8f00000010 50 addl2 $_divd_1_data+16,r0
629: 626 000305B7 0d a004 effffffa65 movl 4(r0),_dbl_expected+4
630: 627 000305BF 0d 60 effffffa5a movl (r0),_dbl_expected
631: 628 000305C6 # /*
632: 629 000305C6 # * If LOOP ON ERROR is set, this is the loop for this subtest.
633: 630 000305C6 # * The force loop flag is set after the first error.
634: 631 000305C6 # */
635: 632 000305C6 # asm("_pipe15_4_lp1:");
636: 633 000305C6 _pipe15_4_lp1:
637: 634 000305C6 # asm("movl _sgl_value_1,r0"); /* move operand 1 to r0/r1 */
638: 635 000305C6 0d effffffa54 50 movl _sgl_value_1,r0
639: 636 000305CD # asm("movl _sgl_value_2,r1");
640: 637 000305CD 0d effffffa4d 51 movl _sgl_value_2,r1
641: 638 000305D4 # asm("movl _sgl_value_3,r2"); /* move operand 2 to r2/r3 */
642: 639 000305D4 0d effffffa46 52 movl _sgl_value_3,r2
643: 640 000305DB # asm("movl _sgl_value_4,r3");
644: 641 000305DB 0d effffffa3f 53 movl _sgl_value_4,r3
645: 642 000305E2 # asm("movl _sgl_value_7,r4"); /* move a '1.0' to r4/r5 */
646: 643 000305E2 0d effffffa38 54 movl _sgl_value_7,r4
647: 644 000305E9 # asm("movl _sgl_value_8,r5");
648: 645 000305E9 0d effffffa31 55 movl _sgl_value_8,r5
649: 646 000305F0 # asm("movl _sgl_value_8,r8"); /* move a '0.0' to r8/r9 */
650: 647 000305F0 0d effffffa2a 58 movl _sgl_value_8,r8
651: 648 000305F7 # asm("movl _sgl_value_8,r9");
652: 649 000305F7 0d effffffa23 59 movl _sgl_value_8,r9
653: 650 000305FE # asm("ldd r4"); /* load a '1.0' ( 1 ) */
654: 651 000305FE 07 54 ldd r4
655: 652 00030600 # asm("nop");
656: 653 00030600 10 nop
657: 654 00030601 # asm("nop");
658: 655 00030601 10 nop
659: 656 00030602 # asm("nop");
660: 657 00030602 10 nop
661: 658 00030603 # asm("muld r0"); /* mult by op. 1 ( op1 ) */
662: 659 00030603 e7 50 muld r0
663: 660 00030605 # asm("nop");
664: 661 00030605 10 nop
665: 662 00030606 # asm("nop");
666: 663 00030606 10 nop
667: 664 00030607 # asm("nop");
668: 665 00030607 10 nop
669: 666 00030608 # asm("divd r2"); /* div by operand 2 ( exp ) */
670: 667 00030608 f7 52 divd r2
671: 668 0003060A # asm("nop");
672: 669 0003060A 10 nop
673: 670 0003060B # asm("nop");
674: 671 0003060B 10 nop
675: 672 0003060C # asm("nop");
676: 673 0003060C 10 nop
677: 674 0003060D # asm("divd r4"); /* divide by '1.0' ( exp ) */
678: 675 0003060D f7 54 divd r4
679: 676 0003060F # asm("nop");
680: 677 0003060F 10 nop
681: 678 00030610 # asm("nop");
682: 679 00030610 10 nop
683: 680 00030611 # asm("nop");
684: 681 00030611 10 nop
685: 682 00030612 # asm("addd r8"); /* add '0.0' ( exp ) */
686: 683 00030612 c7 58 addd r8
687: 684 00030614 # asm("nop");
688: 685 00030614 10 nop
689: 686 00030615 # asm("nop");
690: 687 00030615 10 nop
691: 688 00030616 # asm("nop");
692: 689 00030616 10 nop
693: 690 00030617 # asm("std r6"); /* store the result ( exp ) */
694: 691 00030617 27 56 std r6
695: 692 00030619 # if( force_loop )
696: 693 00030619 5d effffffa01 tstl _force_loop
697: 694 0003061F 31 02 jeql L279
698: 695 00030621 # asm("brb _pipe15_4_lp1");; /* run the loop again */
699: 696 00030621 11 a3 brb _pipe15_4_lp1
700: 697 00030623 L279:
701: 698 00030623 # /*
702: 699 00030623 # * verify the results
703: 700 00030623 # */
704: 701 00030623 # asm("movl r6,_sgl_value_5"); /* get the result */
705: 702 00030623 0d 56 effffff9f6 movl r6,_sgl_value_5
706: 703 0003062A # asm("movl r7,_sgl_value_6");
707: 704 0003062A 0d 57 effffff9ef movl r7,_sgl_value_6
708: 705 00030631 # dbl_st_acc.m = sgl_value_5;
709: 706 00030631 0d effffff9e9 effffff9e4 movl _sgl_value_5,_dbl_st_acc
710: 707 0003063C # dbl_st_acc.l = sgl_value_6;
711: 708 0003063C 0d effffff9de effffff9dd movl _sgl_value_6,_dbl_st_acc+4
712: 709 00030647 # if( (dbl_st_acc.m != dbl_expected.m) ||/* compare the results */
713: 710 00030647 # (dbl_st_acc.l != dbl_expected.l) )
714: 711 00030647 1d effffff9d3 effffff9ce cmpl _dbl_st_acc,_dbl_expected
715: 712 00030652 21 0d jneq L9996
716: 713 00030654 1d effffff9ca effffff9c5 cmpl _dbl_st_acc+4,_dbl_expected+4
717: 714 0003065F 31 42 jeql L280
718: 715 00030661 L9996:
719: 716 00030661 # {
720: 717 00030661 # errcnt++; /* bump the error count */
721: 718 00030661 6d effffff9b9 incl _errcnt
722: 719 00030667 # if ( prt_error )
723: 720 00030667 5d effffff9b3 tstl _prt_error
724: 721 0003066D 31 0d jeql L281
725: 722 0003066F # print_pipe15_er("Reg. Data, 3 NO-OPs");
726: 723 0003066F .data 1
727: 724 00001056 * L282:
728: 725 00001056 * 5265672E20446174612C20332 .ascii "Reg. Data, 3 NO-OPs\0"
729: 04E4F2D4F507300
730: 726 0000106a * .text
731: 727 0003066F dd 8f00001056 pushl $L282
732: 728 00030675 fe 08 ef00000792 callf $8,_print_pipe15_er
733: 729 0003067C # if ( halt_flg ) /* halt on error? */
734: 730 0003067C L281:
735: 731 0003067C 5d effffff99e tstl _halt_flg
736: 732 00030682 31 0d jeql L283
737: 733 00030684 # pipe15_er_hlt( subtest );
738: 734 00030684 dd effffff996 pushl _subtest
739: 735 0003068A fe 08 ef000008fb callf $8,_pipe15_er_hlt
740: 736 00030691 # if ( loop_on_err ) {
741: 737 00030691 L283:
742: 738 00030691 5d effffff989 tstl _loop_on_err
743: 739 00030697 31 0a jeql L284
744: 740 00030699 # force_loop = TRUE; /* set the force loop flag */
745: 741 00030699 0d 01 effffff980 movl $1,_force_loop
746: 742 000306A0 # asm("brw _pipe15_4_lp1"); /* and loop */
747: 743 000306A0 13 ff23 brw _pipe15_4_lp1
748: 744 000306A3 # }
749: 745 000306A3 # } /* end of compare error */
750: 746 000306A3 L284:
751: 747 000306A3 # } while( index++ < max_divd_1_index );
752: 748 000306A3 L280:
753: 749 000306A3 L277:
754: 750 000306A3 0d effffff977 50 movl _index,r0
755: 751 000306AA 6d effffff970 incl _index
756: 752 000306B0 1d 50 effffff969 cmpl r0,_max_divd_1_index
757: 753 000306B7 81 03 13 fe8f jlss L278
758: 754 000306BC L276:
759: 755 000306BC # } /* end of subtest 4 */
760: 756 000306BC 40 ret#2
761: 757 000306BD .set L272,0x0
762: 758 000306BD L274:
763: 759 000306BD 13 fe7f jbr L275
764: 760 000306C0 .data
765: 761 00001010 * .text
766: 762 000306C0 .align 1
767: 763 000306C0 .globl _pipe15_5
768: 764 000306C0 _pipe15_5:
769: 765 000306C0 0000 .word L285
770: 766 000306C2 #
771: 767 000306C2 #
772: 768 000306C2 #
773: 769 000306C2 #
774: 770 000306C2 #
775: 771 000306C2 #
776: 772 000306C2 #
777: 773 000306C2 #
778: 774 000306C2 # /************************************************************************
779: 775 000306C2 # *
780: 776 000306C2 # * SUBTEST 5
781: 777 000306C2 # * data in cache, no NO-OPs
782: 778 000306C2 # *
783: 779 000306C2 # ************************************************************************/
784: 780 000306C2 # pipe15_5()
785: 781 000306C2 # {
786: 782 000306C2 13 0127 jbr L287
787: 783 000306C5 L288:
788: 784 000306C5 # force_loop = FALSE; /* clear the force_loop flg */
789: 785 000306C5 4d effffff955 clrl _force_loop
790: 786 000306CB # index = 0;
791: 787 000306CB 4d effffff94f clrl _index
792: 788 000306D1 # do
793: 789 000306D1 L291:
794: 790 000306D1 # {
795: 791 000306D1 # dbl_value_1 = divd_1_data[index].op_1; /* get dbl operand # 1 */
796: 792 000306D1 5c 18 effffff948 50 mull3 $24,_index,r0
797: 793 000306D9 0c 8f00000000 50 addl2 $_divd_1_data,r0
798: 794 000306E0 0d a004 effffff93c movl 4(r0),_dbl_value_1+4
799: 795 000306E8 0d 60 effffff931 movl (r0),_dbl_value_1
800: 796 000306EF # dbl_value_2 = divd_1_data[index].op_2; /* get dbl operand # 2 */
801: 797 000306EF 5c 18 effffff92a 50 mull3 $24,_index,r0
802: 798 000306F7 0c 8f00000008 50 addl2 $_divd_1_data+8,r0
803: 799 000306FE 0d a004 effffff91e movl 4(r0),_dbl_value_2+4
804: 800 00030706 0d 60 effffff913 movl (r0),_dbl_value_2
805: 801 0003070D # dbl_expected = divd_1_data[index].exp; /* get expected results */
806: 802 0003070D 5c 18 effffff90c 50 mull3 $24,_index,r0
807: 803 00030715 0c 8f00000010 50 addl2 $_divd_1_data+16,r0
808: 804 0003071C 0d a004 effffff900 movl 4(r0),_dbl_expected+4
809: 805 00030724 0d 60 effffff8f5 movl (r0),_dbl_expected
810: 806 0003072B # dbl_dummy1.m = 0x40800000; /* get dbl precision 1.0 */
811: 807 0003072B 0d 8f40800000 effffff8ea movl $1082130432,_dbl_dummy1
812: 808 00030736 # dbl_dummy1.l = 0;
813: 809 00030736 4d effffff8e8 clrl _dbl_dummy1+4
814: 810 0003073C # dbl_dummy2.m = 0; /* get dbl precision 0.0 */
815: 811 0003073C 4d effffff8de clrl _dbl_dummy2
816: 812 00030742 # dbl_dummy2.l = 0;
817: 813 00030742 4d effffff8dc clrl _dbl_dummy2+4
818: 814 00030748 # /*
819: 815 00030748 # * If LOOP ON ERROR is set, this is the loop for this subtest.
820: 816 00030748 # * The force loop flag is set after the first error.
821: 817 00030748 # */
822: 818 00030748 # asm("_pipe15_5_lp1:");
823: 819 00030748 _pipe15_5_lp1:
824: 820 00030748 # asm("ldd _dbl_dummy1"); /* load a '1.0' ( 1 ) */
825: 821 00030748 07 effffff8d2 ldd _dbl_dummy1
826: 822 0003074E # asm("muld _dbl_value_1"); /* mult by op. 1 ( op1 ) */
827: 823 0003074E e7 effffff8cc muld _dbl_value_1
828: 824 00030754 # asm("divd _dbl_value_2"); /* div by operand 2 ( exp ) */
829: 825 00030754 f7 effffff8c6 divd _dbl_value_2
830: 826 0003075A # asm("divd _dbl_dummy1"); /* divide by '1.0' ( exp ) */
831: 827 0003075A f7 effffff8c0 divd _dbl_dummy1
832: 828 00030760 # asm("addd _dbl_dummy2"); /* add a '0.0' ( exp ) */
833: 829 00030760 c7 effffff8ba addd _dbl_dummy2
834: 830 00030766 # asm("std _dbl_st_acc"); /* store the result ( exp ) */
835: 831 00030766 27 effffff8b4 std _dbl_st_acc
836: 832 0003076C # if( force_loop )
837: 833 0003076C 5d effffff8ae tstl _force_loop
838: 834 00030772 31 02 jeql L292
839: 835 00030774 # asm("brb _pipe15_5_lp1");; /* run the loop again */
840: 836 00030774 11 d2 brb _pipe15_5_lp1
841: 837 00030776 L292:
842: 838 00030776 # /*
843: 839 00030776 # * verify the results
844: 840 00030776 # */
845: 841 00030776 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */
846: 842 00030776 # (dbl_st_acc.l != dbl_expected.l) )
847: 843 00030776 1d effffff8a4 effffff89f cmpl _dbl_st_acc,_dbl_expected
848: 844 00030781 21 0d jneq L9995
849: 845 00030783 1d effffff89b effffff896 cmpl _dbl_st_acc+4,_dbl_expected+4
850: 846 0003078E 31 42 jeql L293
851: 847 00030790 L9995:
852: 848 00030790 # {
853: 849 00030790 # errcnt++; /* bump the error count */
854: 850 00030790 6d effffff88a incl _errcnt
855: 851 00030796 # if ( prt_error )
856: 852 00030796 5d effffff884 tstl _prt_error
857: 853 0003079C 31 0d jeql L294
858: 854 0003079E # print_pipe15_er("Cache Data, no NO-OPs");
859: 855 0003079E .data 1
860: 856 0000106a * L295:
861: 857 0000106a * 436163686520446174612C206 .ascii "Cache Data, no NO-OPs\0"
862: E6F204E4F2D4F507300
863: 858 00001080 * .text
864: 859 0003079E dd 8f0000106a pushl $L295
865: 860 000307A4 fe 08 ef00000663 callf $8,_print_pipe15_er
866: 861 000307AB # if ( halt_flg ) /* halt on error? */
867: 862 000307AB L294:
868: 863 000307AB 5d effffff86f tstl _halt_flg
869: 864 000307B1 31 0d jeql L296
870: 865 000307B3 # pipe15_er_hlt( subtest );
871: 866 000307B3 dd effffff867 pushl _subtest
872: 867 000307B9 fe 08 ef000007cc callf $8,_pipe15_er_hlt
873: 868 000307C0 # if ( loop_on_err ) {
874: 869 000307C0 L296:
875: 870 000307C0 5d effffff85a tstl _loop_on_err
876: 871 000307C6 31 0a jeql L297
877: 872 000307C8 # force_loop = TRUE; /* set the force loop flag */
878: 873 000307C8 0d 01 effffff851 movl $1,_force_loop
879: 874 000307CF # asm("brw _pipe15_5_lp1"); /* and loop */
880: 875 000307CF 13 ff76 brw _pipe15_5_lp1
881: 876 000307D2 # }
882: 877 000307D2 # } /* end of compare error */
883: 878 000307D2 L297:
884: 879 000307D2 # } while( index++ < max_divd_1_index );
885: 880 000307D2 L293:
886: 881 000307D2 L290:
887: 882 000307D2 0d effffff848 50 movl _index,r0
888: 883 000307D9 6d effffff841 incl _index
889: 884 000307DF 1d 50 effffff83a cmpl r0,_max_divd_1_index
890: 885 000307E6 81 03 13 fee6 jlss L291
891: 886 000307EB L289:
892: 887 000307EB # } /* end of subtest 5 */
893: 888 000307EB 40 ret#2
894: 889 000307EC .set L285,0x0
895: 890 000307EC L287:
896: 891 000307EC 13 fed6 jbr L288
897: 892 000307EF .data
898: 893 00001010 * .text
899: 894 000307EF 00 .align 1
900: 895 000307F0 .globl _pipe15_6
901: 896 000307F0 _pipe15_6:
902: 897 000307F0 0000 .word L298
903: 898 000307F2 #
904: 899 000307F2 #
905: 900 000307F2 #
906: 901 000307F2 #
907: 902 000307F2 #
908: 903 000307F2 #
909: 904 000307F2 #
910: 905 000307F2 # /************************************************************************
911: 906 000307F2 # *
912: 907 000307F2 # * SUBTEST 6
913: 908 000307F2 # * data in cache, 1 NO-OP
914: 909 000307F2 # *
915: 910 000307F2 # ************************************************************************/
916: 911 000307F2 # pipe15_6()
917: 912 000307F2 # {
918: 913 000307F2 13 012c jbr L300
919: 914 000307F5 L301:
920: 915 000307F5 # force_loop = FALSE; /* clear the force_loop flg */
921: 916 000307F5 4d effffff825 clrl _force_loop
922: 917 000307FB # index = 0;
923: 918 000307FB 4d effffff81f clrl _index
924: 919 00030801 # do
925: 920 00030801 L304:
926: 921 00030801 # {
927: 922 00030801 # dbl_value_1 = divd_1_data[index].op_1; /* get dbl operand # 1 */
928: 923 00030801 5c 18 effffff818 50 mull3 $24,_index,r0
929: 924 00030809 0c 8f00000000 50 addl2 $_divd_1_data,r0
930: 925 00030810 0d a004 effffff80c movl 4(r0),_dbl_value_1+4
931: 926 00030818 0d 60 effffff801 movl (r0),_dbl_value_1
932: 927 0003081F # dbl_value_2 = divd_1_data[index].op_2; /* get dbl operand # 2 */
933: 928 0003081F 5c 18 effffff7fa 50 mull3 $24,_index,r0
934: 929 00030827 0c 8f00000008 50 addl2 $_divd_1_data+8,r0
935: 930 0003082E 0d a004 effffff7ee movl 4(r0),_dbl_value_2+4
936: 931 00030836 0d 60 effffff7e3 movl (r0),_dbl_value_2
937: 932 0003083D # dbl_expected = divd_1_data[index].exp; /* get expected results */
938: 933 0003083D 5c 18 effffff7dc 50 mull3 $24,_index,r0
939: 934 00030845 0c 8f00000010 50 addl2 $_divd_1_data+16,r0
940: 935 0003084C 0d a004 effffff7d0 movl 4(r0),_dbl_expected+4
941: 936 00030854 0d 60 effffff7c5 movl (r0),_dbl_expected
942: 937 0003085B # dbl_dummy1.m = 0x40800000; /* get dbl precision 1.0 */
943: 938 0003085B 0d 8f40800000 effffff7ba movl $1082130432,_dbl_dummy1
944: 939 00030866 # dbl_dummy1.l = 0;
945: 940 00030866 4d effffff7b8 clrl _dbl_dummy1+4
946: 941 0003086C # dbl_dummy2.m = 0; /* get dbl precision 0.0 */
947: 942 0003086C 4d effffff7ae clrl _dbl_dummy2
948: 943 00030872 # dbl_dummy2.l = 0;
949: 944 00030872 4d effffff7ac clrl _dbl_dummy2+4
950: 945 00030878 # /*
951: 946 00030878 # * If LOOP ON ERROR is set, this is the loop for this subtest.
952: 947 00030878 # * The force loop flag is set after the first error.
953: 948 00030878 # */
954: 949 00030878 # asm("_pipe15_6_lp1:");
955: 950 00030878 _pipe15_6_lp1:
956: 951 00030878 # asm("ldd _dbl_dummy1"); /* load a '1.0' ( 1 ) */
957: 952 00030878 07 effffff7a2 ldd _dbl_dummy1
958: 953 0003087E # asm("nop");
959: 954 0003087E 10 nop
960: 955 0003087F # asm("muld _dbl_value_1"); /* mult by op. 1 ( op1 ) */
961: 956 0003087F e7 effffff79b muld _dbl_value_1
962: 957 00030885 # asm("nop");
963: 958 00030885 10 nop
964: 959 00030886 # asm("divd _dbl_value_2"); /* div by operand 2 ( exp ) */
965: 960 00030886 f7 effffff794 divd _dbl_value_2
966: 961 0003088C # asm("nop");
967: 962 0003088C 10 nop
968: 963 0003088D # asm("divd _dbl_dummy1"); /* divide by '1.0' ( exp ) */
969: 964 0003088D f7 effffff78d divd _dbl_dummy1
970: 965 00030893 # asm("nop");
971: 966 00030893 10 nop
972: 967 00030894 # asm("addd _dbl_dummy2"); /* add a '0.0' ( exp ) */
973: 968 00030894 c7 effffff786 addd _dbl_dummy2
974: 969 0003089A # asm("nop");
975: 970 0003089A 10 nop
976: 971 0003089B # asm("std _dbl_st_acc"); /* store the result ( exp ) */
977: 972 0003089B 27 effffff77f std _dbl_st_acc
978: 973 000308A1 # if( force_loop )
979: 974 000308A1 5d effffff779 tstl _force_loop
980: 975 000308A7 31 02 jeql L305
981: 976 000308A9 # asm("brb _pipe15_6_lp1");; /* run the loop again */
982: 977 000308A9 11 cd brb _pipe15_6_lp1
983: 978 000308AB L305:
984: 979 000308AB # /*
985: 980 000308AB # * verify the results
986: 981 000308AB # */
987: 982 000308AB # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */
988: 983 000308AB # (dbl_st_acc.l != dbl_expected.l) )
989: 984 000308AB 1d effffff76f effffff76a cmpl _dbl_st_acc,_dbl_expected
990: 985 000308B6 21 0d jneq L9994
991: 986 000308B8 1d effffff766 effffff761 cmpl _dbl_st_acc+4,_dbl_expected+4
992: 987 000308C3 31 42 jeql L306
993: 988 000308C5 L9994:
994: 989 000308C5 # {
995: 990 000308C5 # errcnt++; /* bump the error count */
996: 991 000308C5 6d effffff755 incl _errcnt
997: 992 000308CB # if ( prt_error )
998: 993 000308CB 5d effffff74f tstl _prt_error
999: 994 000308D1 31 0d jeql L307
1000: 995 000308D3 # print_pipe15_er("Cache Data, 1 NO-OP");
1001: 996 000308D3 .data 1
1002: 997 00001080 * L308:
1003: 998 00001080 * 436163686520446174612C203 .ascii "Cache Data, 1 NO-OP\0"
1004: 1204E4F2D4F5000
1005: 999 00001094 * .text
1006: 1000 000308D3 dd 8f00001080 pushl $L308
1007: 1001 000308D9 fe 08 ef0000052e callf $8,_print_pipe15_er
1008: 1002 000308E0 # if ( halt_flg ) /* halt on error? */
1009: 1003 000308E0 L307:
1010: 1004 000308E0 5d effffff73a tstl _halt_flg
1011: 1005 000308E6 31 0d jeql L309
1012: 1006 000308E8 # pipe15_er_hlt( subtest );
1013: 1007 000308E8 dd effffff732 pushl _subtest
1014: 1008 000308EE fe 08 ef00000697 callf $8,_pipe15_er_hlt
1015: 1009 000308F5 # if ( loop_on_err ) {
1016: 1010 000308F5 L309:
1017: 1011 000308F5 5d effffff725 tstl _loop_on_err
1018: 1012 000308FB 31 0a jeql L310
1019: 1013 000308FD # force_loop = TRUE; /* set the force loop flag */
1020: 1014 000308FD 0d 01 effffff71c movl $1,_force_loop
1021: 1015 00030904 # asm("brw _pipe15_6_lp1"); /* and loop */
1022: 1016 00030904 13 ff71 brw _pipe15_6_lp1
1023: 1017 00030907 # }
1024: 1018 00030907 # } /* end of compare error */
1025: 1019 00030907 L310:
1026: 1020 00030907 # } while( index++ < max_divd_1_index );
1027: 1021 00030907 L306:
1028: 1022 00030907 L303:
1029: 1023 00030907 0d effffff713 50 movl _index,r0
1030: 1024 0003090E 6d effffff70c incl _index
1031: 1025 00030914 1d 50 effffff705 cmpl r0,_max_divd_1_index
1032: 1026 0003091B 81 03 13 fee1 jlss L304
1033: 1027 00030920 L302:
1034: 1028 00030920 # } /* end of subtest 6 */
1035: 1029 00030920 40 ret#2
1036: 1030 00030921 .set L298,0x0
1037: 1031 00030921 L300:
1038: 1032 00030921 13 fed1 jbr L301
1039: 1033 00030924 .data
1040: 1034 00001010 * .text
1041: 1035 00030924 .align 1
1042: 1036 00030924 .globl _pipe15_7
1043: 1037 00030924 _pipe15_7:
1044: 1038 00030924 0000 .word L311
1045: 1039 00030926 #
1046: 1040 00030926 #
1047: 1041 00030926 #
1048: 1042 00030926 #
1049: 1043 00030926 #
1050: 1044 00030926 #
1051: 1045 00030926 #
1052: 1046 00030926 #
1053: 1047 00030926 # /************************************************************************
1054: 1048 00030926 # *
1055: 1049 00030926 # * SUBTEST 7
1056: 1050 00030926 # * data in cache, 2 NO-OPs
1057: 1051 00030926 # *
1058: 1052 00030926 # ************************************************************************/
1059: 1053 00030926 # pipe15_7()
1060: 1054 00030926 # {
1061: 1055 00030926 13 0131 jbr L313
1062: 1056 00030929 L314:
1063: 1057 00030929 # force_loop = FALSE; /* clear the force_loop flg */
1064: 1058 00030929 4d effffff6f1 clrl _force_loop
1065: 1059 0003092F # index = 0;
1066: 1060 0003092F 4d effffff6eb clrl _index
1067: 1061 00030935 # do
1068: 1062 00030935 L317:
1069: 1063 00030935 # {
1070: 1064 00030935 # dbl_value_1 = divd_1_data[index].op_1; /* get dbl operand # 1 */
1071: 1065 00030935 5c 18 effffff6e4 50 mull3 $24,_index,r0
1072: 1066 0003093D 0c 8f00000000 50 addl2 $_divd_1_data,r0
1073: 1067 00030944 0d a004 effffff6d8 movl 4(r0),_dbl_value_1+4
1074: 1068 0003094C 0d 60 effffff6cd movl (r0),_dbl_value_1
1075: 1069 00030953 # dbl_value_2 = divd_1_data[index].op_2; /* get dbl operand # 2 */
1076: 1070 00030953 5c 18 effffff6c6 50 mull3 $24,_index,r0
1077: 1071 0003095B 0c 8f00000008 50 addl2 $_divd_1_data+8,r0
1078: 1072 00030962 0d a004 effffff6ba movl 4(r0),_dbl_value_2+4
1079: 1073 0003096A 0d 60 effffff6af movl (r0),_dbl_value_2
1080: 1074 00030971 # dbl_expected = divd_1_data[index].exp; /* get expected results */
1081: 1075 00030971 5c 18 effffff6a8 50 mull3 $24,_index,r0
1082: 1076 00030979 0c 8f00000010 50 addl2 $_divd_1_data+16,r0
1083: 1077 00030980 0d a004 effffff69c movl 4(r0),_dbl_expected+4
1084: 1078 00030988 0d 60 effffff691 movl (r0),_dbl_expected
1085: 1079 0003098F # dbl_dummy1.m = 0x40800000; /* get dbl precision 1.0 */
1086: 1080 0003098F 0d 8f40800000 effffff686 movl $1082130432,_dbl_dummy1
1087: 1081 0003099A # dbl_dummy1.l = 0;
1088: 1082 0003099A 4d effffff684 clrl _dbl_dummy1+4
1089: 1083 000309A0 # dbl_dummy2.m = 0; /* get dbl precision 0.0 */
1090: 1084 000309A0 4d effffff67a clrl _dbl_dummy2
1091: 1085 000309A6 # dbl_dummy2.l = 0;
1092: 1086 000309A6 4d effffff678 clrl _dbl_dummy2+4
1093: 1087 000309AC # /*
1094: 1088 000309AC # * If LOOP ON ERROR is set, this is the loop for this subtest.
1095: 1089 000309AC # * The force loop flag is set after the first error.
1096: 1090 000309AC # */
1097: 1091 000309AC # asm("_pipe15_7_lp1:");
1098: 1092 000309AC _pipe15_7_lp1:
1099: 1093 000309AC # asm("ldd _dbl_dummy1"); /* load a '1.0' ( 1 ) */
1100: 1094 000309AC 07 effffff66e ldd _dbl_dummy1
1101: 1095 000309B2 # asm("nop");
1102: 1096 000309B2 10 nop
1103: 1097 000309B3 # asm("nop");
1104: 1098 000309B3 10 nop
1105: 1099 000309B4 # asm("muld _dbl_value_1"); /* mult by op. 1 ( op1 ) */
1106: 1100 000309B4 e7 effffff666 muld _dbl_value_1
1107: 1101 000309BA # asm("nop");
1108: 1102 000309BA 10 nop
1109: 1103 000309BB # asm("nop");
1110: 1104 000309BB 10 nop
1111: 1105 000309BC # asm("divd _dbl_value_2"); /* div by operand 2 ( exp ) */
1112: 1106 000309BC f7 effffff65e divd _dbl_value_2
1113: 1107 000309C2 # asm("nop");
1114: 1108 000309C2 10 nop
1115: 1109 000309C3 # asm("nop");
1116: 1110 000309C3 10 nop
1117: 1111 000309C4 # asm("divd _dbl_dummy1"); /* divide by '1.0' ( exp ) */
1118: 1112 000309C4 f7 effffff656 divd _dbl_dummy1
1119: 1113 000309CA # asm("nop");
1120: 1114 000309CA 10 nop
1121: 1115 000309CB # asm("nop");
1122: 1116 000309CB 10 nop
1123: 1117 000309CC # asm("addd _dbl_dummy2"); /* add a '0.0' ( exp ) */
1124: 1118 000309CC c7 effffff64e addd _dbl_dummy2
1125: 1119 000309D2 # asm("nop");
1126: 1120 000309D2 10 nop
1127: 1121 000309D3 # asm("nop");
1128: 1122 000309D3 10 nop
1129: 1123 000309D4 # asm("std _dbl_st_acc"); /* store the result ( exp ) */
1130: 1124 000309D4 27 effffff646 std _dbl_st_acc
1131: 1125 000309DA # if( force_loop )
1132: 1126 000309DA 5d effffff640 tstl _force_loop
1133: 1127 000309E0 31 02 jeql L318
1134: 1128 000309E2 # asm("brb _pipe15_7_lp1");; /* run the loop again */
1135: 1129 000309E2 11 c8 brb _pipe15_7_lp1
1136: 1130 000309E4 L318:
1137: 1131 000309E4 # /*
1138: 1132 000309E4 # * verify the results
1139: 1133 000309E4 # */
1140: 1134 000309E4 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */
1141: 1135 000309E4 # (dbl_st_acc.l != dbl_expected.l) )
1142: 1136 000309E4 1d effffff636 effffff631 cmpl _dbl_st_acc,_dbl_expected
1143: 1137 000309EF 21 0d jneq L9993
1144: 1138 000309F1 1d effffff62d effffff628 cmpl _dbl_st_acc+4,_dbl_expected+4
1145: 1139 000309FC 31 42 jeql L319
1146: 1140 000309FE L9993:
1147: 1141 000309FE # {
1148: 1142 000309FE # errcnt++; /* bump the error count */
1149: 1143 000309FE 6d effffff61c incl _errcnt
1150: 1144 00030A04 # if ( prt_error )
1151: 1145 00030A04 5d effffff616 tstl _prt_error
1152: 1146 00030A0A 31 0d jeql L320
1153: 1147 00030A0C # print_pipe15_er("Cache Data, 2 NO-OPs");
1154: 1148 00030A0C .data 1
1155: 1149 00001094 * L321:
1156: 1150 00001094 * 436163686520446174612C203 .ascii "Cache Data, 2 NO-OPs\0"
1157: 2204E4F2D4F507300
1158: 1151 000010a9 * .text
1159: 1152 00030A0C dd 8f00001094 pushl $L321
1160: 1153 00030A12 fe 08 ef000003f5 callf $8,_print_pipe15_er
1161: 1154 00030A19 # if ( halt_flg ) /* halt on error? */
1162: 1155 00030A19 L320:
1163: 1156 00030A19 5d effffff601 tstl _halt_flg
1164: 1157 00030A1F 31 0d jeql L322
1165: 1158 00030A21 # pipe15_er_hlt( subtest );
1166: 1159 00030A21 dd effffff5f9 pushl _subtest
1167: 1160 00030A27 fe 08 ef0000055e callf $8,_pipe15_er_hlt
1168: 1161 00030A2E # if ( loop_on_err ) {
1169: 1162 00030A2E L322:
1170: 1163 00030A2E 5d effffff5ec tstl _loop_on_err
1171: 1164 00030A34 31 0a jeql L323
1172: 1165 00030A36 # force_loop = TRUE; /* set the force loop flag */
1173: 1166 00030A36 0d 01 effffff5e3 movl $1,_force_loop
1174: 1167 00030A3D # asm("brw _pipe15_7_lp1"); /* and loop */
1175: 1168 00030A3D 13 ff6c brw _pipe15_7_lp1
1176: 1169 00030A40 # }
1177: 1170 00030A40 # } /* end of compare error */
1178: 1171 00030A40 L323:
1179: 1172 00030A40 # } while( index++ < max_divd_1_index );
1180: 1173 00030A40 L319:
1181: 1174 00030A40 L316:
1182: 1175 00030A40 0d effffff5da 50 movl _index,r0
1183: 1176 00030A47 6d effffff5d3 incl _index
1184: 1177 00030A4D 1d 50 effffff5cc cmpl r0,_max_divd_1_index
1185: 1178 00030A54 81 03 13 fedc jlss L317
1186: 1179 00030A59 L315:
1187: 1180 00030A59 # } /* end of subtest 7 */
1188: 1181 00030A59 40 ret#2
1189: 1182 00030A5A .set L311,0x0
1190: 1183 00030A5A L313:
1191: 1184 00030A5A 13 fecc jbr L314
1192: 1185 00030A5D .data
1193: 1186 00001010 * .text
1194: 1187 00030A5D 00 .align 1
1195: 1188 00030A5E .globl _pipe15_8
1196: 1189 00030A5E _pipe15_8:
1197: 1190 00030A5E 0000 .word L324
1198: 1191 00030A60 #
1199: 1192 00030A60 #
1200: 1193 00030A60 #
1201: 1194 00030A60 #
1202: 1195 00030A60 #
1203: 1196 00030A60 #
1204: 1197 00030A60 #
1205: 1198 00030A60 # /************************************************************************
1206: 1199 00030A60 # *
1207: 1200 00030A60 # * SUBTEST 8
1208: 1201 00030A60 # * data in cache, 3 NO-OPs
1209: 1202 00030A60 # *
1210: 1203 00030A60 # ************************************************************************/
1211: 1204 00030A60 # pipe15_8()
1212: 1205 00030A60 # {
1213: 1206 00030A60 13 0136 jbr L326
1214: 1207 00030A63 L327:
1215: 1208 00030A63 # force_loop = FALSE; /* clear the force_loop flg */
1216: 1209 00030A63 4d effffff5b7 clrl _force_loop
1217: 1210 00030A69 # index = 0;
1218: 1211 00030A69 4d effffff5b1 clrl _index
1219: 1212 00030A6F # do
1220: 1213 00030A6F L330:
1221: 1214 00030A6F # {
1222: 1215 00030A6F # dbl_value_1 = divd_1_data[index].op_1; /* get dbl operand # 1 */
1223: 1216 00030A6F 5c 18 effffff5aa 50 mull3 $24,_index,r0
1224: 1217 00030A77 0c 8f00000000 50 addl2 $_divd_1_data,r0
1225: 1218 00030A7E 0d a004 effffff59e movl 4(r0),_dbl_value_1+4
1226: 1219 00030A86 0d 60 effffff593 movl (r0),_dbl_value_1
1227: 1220 00030A8D # dbl_value_2 = divd_1_data[index].op_2; /* get dbl operand # 2 */
1228: 1221 00030A8D 5c 18 effffff58c 50 mull3 $24,_index,r0
1229: 1222 00030A95 0c 8f00000008 50 addl2 $_divd_1_data+8,r0
1230: 1223 00030A9C 0d a004 effffff580 movl 4(r0),_dbl_value_2+4
1231: 1224 00030AA4 0d 60 effffff575 movl (r0),_dbl_value_2
1232: 1225 00030AAB # dbl_expected = divd_1_data[index].exp; /* get expected results */
1233: 1226 00030AAB 5c 18 effffff56e 50 mull3 $24,_index,r0
1234: 1227 00030AB3 0c 8f00000010 50 addl2 $_divd_1_data+16,r0
1235: 1228 00030ABA 0d a004 effffff562 movl 4(r0),_dbl_expected+4
1236: 1229 00030AC2 0d 60 effffff557 movl (r0),_dbl_expected
1237: 1230 00030AC9 # dbl_dummy1.m = 0x40800000; /* get dbl precision 1.0 */
1238: 1231 00030AC9 0d 8f40800000 effffff54c movl $1082130432,_dbl_dummy1
1239: 1232 00030AD4 # dbl_dummy1.l = 0;
1240: 1233 00030AD4 4d effffff54a clrl _dbl_dummy1+4
1241: 1234 00030ADA # dbl_dummy2.m = 0; /* get dbl precision 0.0 */
1242: 1235 00030ADA 4d effffff540 clrl _dbl_dummy2
1243: 1236 00030AE0 # dbl_dummy2.l = 0;
1244: 1237 00030AE0 4d effffff53e clrl _dbl_dummy2+4
1245: 1238 00030AE6 # /*
1246: 1239 00030AE6 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1247: 1240 00030AE6 # * The force loop flag is set after the first error.
1248: 1241 00030AE6 # */
1249: 1242 00030AE6 # asm("_pipe15_8_lp1:");
1250: 1243 00030AE6 _pipe15_8_lp1:
1251: 1244 00030AE6 # asm("ldd _dbl_dummy1"); /* load a '1.0' ( 1 ) */
1252: 1245 00030AE6 07 effffff534 ldd _dbl_dummy1
1253: 1246 00030AEC # asm("nop");
1254: 1247 00030AEC 10 nop
1255: 1248 00030AED # asm("nop");
1256: 1249 00030AED 10 nop
1257: 1250 00030AEE # asm("nop");
1258: 1251 00030AEE 10 nop
1259: 1252 00030AEF # asm("muld _dbl_value_1"); /* mult by op. 1 ( op1 ) */
1260: 1253 00030AEF e7 effffff52b muld _dbl_value_1
1261: 1254 00030AF5 # asm("nop");
1262: 1255 00030AF5 10 nop
1263: 1256 00030AF6 # asm("nop");
1264: 1257 00030AF6 10 nop
1265: 1258 00030AF7 # asm("nop");
1266: 1259 00030AF7 10 nop
1267: 1260 00030AF8 # asm("divd _dbl_value_2"); /* div by operand 2 ( exp ) */
1268: 1261 00030AF8 f7 effffff522 divd _dbl_value_2
1269: 1262 00030AFE # asm("nop");
1270: 1263 00030AFE 10 nop
1271: 1264 00030AFF # asm("nop");
1272: 1265 00030AFF 10 nop
1273: 1266 00030B00 # asm("nop");
1274: 1267 00030B00 10 nop
1275: 1268 00030B01 # asm("divd _dbl_dummy1"); /* divide by '1.0' ( exp ) */
1276: 1269 00030B01 f7 effffff519 divd _dbl_dummy1
1277: 1270 00030B07 # asm("nop");
1278: 1271 00030B07 10 nop
1279: 1272 00030B08 # asm("nop");
1280: 1273 00030B08 10 nop
1281: 1274 00030B09 # asm("nop");
1282: 1275 00030B09 10 nop
1283: 1276 00030B0A # asm("addd _dbl_dummy2"); /* add a '0.0' ( exp ) */
1284: 1277 00030B0A c7 effffff510 addd _dbl_dummy2
1285: 1278 00030B10 # asm("nop");
1286: 1279 00030B10 10 nop
1287: 1280 00030B11 # asm("nop");
1288: 1281 00030B11 10 nop
1289: 1282 00030B12 # asm("nop");
1290: 1283 00030B12 10 nop
1291: 1284 00030B13 # asm("std _dbl_st_acc"); /* store the result ( exp ) */
1292: 1285 00030B13 27 effffff507 std _dbl_st_acc
1293: 1286 00030B19 # if( force_loop )
1294: 1287 00030B19 5d effffff501 tstl _force_loop
1295: 1288 00030B1F 31 02 jeql L331
1296: 1289 00030B21 # asm("brb _pipe15_8_lp1");; /* run the loop again */
1297: 1290 00030B21 11 c3 brb _pipe15_8_lp1
1298: 1291 00030B23 L331:
1299: 1292 00030B23 # /*
1300: 1293 00030B23 # * verify the results
1301: 1294 00030B23 # */
1302: 1295 00030B23 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */
1303: 1296 00030B23 # (dbl_st_acc.l != dbl_expected.l) )
1304: 1297 00030B23 1d effffff4f7 effffff4f2 cmpl _dbl_st_acc,_dbl_expected
1305: 1298 00030B2E 21 0d jneq L9992
1306: 1299 00030B30 1d effffff4ee effffff4e9 cmpl _dbl_st_acc+4,_dbl_expected+4
1307: 1300 00030B3B 31 42 jeql L332
1308: 1301 00030B3D L9992:
1309: 1302 00030B3D # {
1310: 1303 00030B3D # errcnt++; /* bump the error count */
1311: 1304 00030B3D 6d effffff4dd incl _errcnt
1312: 1305 00030B43 # if ( prt_error )
1313: 1306 00030B43 5d effffff4d7 tstl _prt_error
1314: 1307 00030B49 31 0d jeql L333
1315: 1308 00030B4B # print_pipe15_er("Cache Data, 3 NO-OPs");
1316: 1309 00030B4B .data 1
1317: 1310 000010a9 * L334:
1318: 1311 000010a9 * 436163686520446174612C203 .ascii "Cache Data, 3 NO-OPs\0"
1319: 3204E4F2D4F507300
1320: 1312 000010be * .text
1321: 1313 00030B4B dd 8f000010a9 pushl $L334
1322: 1314 00030B51 fe 08 ef000002b6 callf $8,_print_pipe15_er
1323: 1315 00030B58 # if ( halt_flg ) /* halt on error? */
1324: 1316 00030B58 L333:
1325: 1317 00030B58 5d effffff4c2 tstl _halt_flg
1326: 1318 00030B5E 31 0d jeql L335
1327: 1319 00030B60 # pipe15_er_hlt( subtest );
1328: 1320 00030B60 dd effffff4ba pushl _subtest
1329: 1321 00030B66 fe 08 ef0000041f callf $8,_pipe15_er_hlt
1330: 1322 00030B6D # if ( loop_on_err ) {
1331: 1323 00030B6D L335:
1332: 1324 00030B6D 5d effffff4ad tstl _loop_on_err
1333: 1325 00030B73 31 0a jeql L336
1334: 1326 00030B75 # force_loop = TRUE; /* set the force loop flag */
1335: 1327 00030B75 0d 01 effffff4a4 movl $1,_force_loop
1336: 1328 00030B7C # asm("brw _pipe15_8_lp1"); /* and loop */
1337: 1329 00030B7C 13 ff67 brw _pipe15_8_lp1
1338: 1330 00030B7F # }
1339: 1331 00030B7F # } /* end of compare error */
1340: 1332 00030B7F L336:
1341: 1333 00030B7F # } while( index++ < max_divd_1_index );
1342: 1334 00030B7F L332:
1343: 1335 00030B7F L329:
1344: 1336 00030B7F 0d effffff49b 50 movl _index,r0
1345: 1337 00030B86 6d effffff494 incl _index
1346: 1338 00030B8C 1d 50 effffff48d cmpl r0,_max_divd_1_index
1347: 1339 00030B93 81 03 13 fed7 jlss L330
1348: 1340 00030B98 L328:
1349: 1341 00030B98 # } /* end of subtest 8 */
1350: 1342 00030B98 40 ret#2
1351: 1343 00030B99 .set L324,0x0
1352: 1344 00030B99 L326:
1353: 1345 00030B99 13 fec7 jbr L327
1354: 1346 00030B9C .data
1355: 1347 00001010 * .text
1356: 1348 00030B9C .align 1
1357: 1349 00030B9C .globl _pipe15_9
1358: 1350 00030B9C _pipe15_9:
1359: 1351 00030B9C 0000 .word L337
1360: 1352 00030B9E #
1361: 1353 00030B9E #
1362: 1354 00030B9E #
1363: 1355 00030B9E #
1364: 1356 00030B9E #
1365: 1357 00030B9E #
1366: 1358 00030B9E #
1367: 1359 00030B9E #
1368: 1360 00030B9E # /******************************************************************************
1369: 1361 00030B9E # *
1370: 1362 00030B9E # * SUBTEST 9
1371: 1363 00030B9E # *
1372: 1364 00030B9E # * Get the data via the FRAME POINTER ( quad word indexed )
1373: 1365 00030B9E # *
1374: 1366 00030B9E # * ADDRESSES OF DATA OPERANDS INDEX DATA
1375: 1367 00030B9E # * pointer_data,-4 ( FP+40 ) 5 the STF result goes here
1376: 1368 00030B9E # * pointer_data-8,-12 ( FP+32 ) 4 <operand #1 data>
1377: 1369 00030B9E # * pointer_data-16,-20 ( FP+24 ) 3 <operand #2 data>
1378: 1370 00030B9E # * pointer_data-24,-28 ( FP+16 ) 2 < '1.0' data>
1379: 1371 00030B9E # * pointer_data-32,-36 ( FP+8 ) 1 < '0.0' data>
1380: 1372 00030B9E # * pointer_data-40,-44 ( FP ) 0 point the frame pointer here
1381: 1373 00030B9E # *
1382: 1374 00030B9E # * NOTE: The double precision instructions are using Quad Word indexing.
1383: 1375 00030B9E # ******************************************************************************/
1384: 1376 00030B9E # pipe15_9()
1385: 1377 00030B9E # {
1386: 1378 00030B9E 13 026a jbr L339
1387: 1379 00030BA1 L340:
1388: 1380 00030BA1 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */
1389: 1381 00030BA1 ed 6d effffff478 moval (r13),_pre_event_fp
1390: 1382 00030BA8 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */
1391: 1383 00030BA8 ed 6e effffff471 moval (r14),_pre_event_sp
1392: 1384 00030BAF # force_loop = FALSE; /* clear force_loop flag */
1393: 1385 00030BAF 4d effffff46b clrl _force_loop
1394: 1386 00030BB5 # index = 0;
1395: 1387 00030BB5 4d effffff465 clrl _index
1396: 1388 00030BBB # do
1397: 1389 00030BBB L343:
1398: 1390 00030BBB # {
1399: 1391 00030BBB # sgl_value_1 = divd_1_data[index].op_1.m; /* get op. #1's MSW */
1400: 1392 00030BBB 5c 18 effffff45e 50 mull3 $24,_index,r0
1401: 1393 00030BC3 0d e000000000 effffff452 movl _divd_1_data(r0),_sgl_value_1
1402: 1394 00030BCE # sgl_value_2 = divd_1_data[index].op_1.l; /* get op. #1's LSW */
1403: 1395 00030BCE 5c 18 effffff44b 50 mull3 $24,_index,r0
1404: 1396 00030BD6 0d e000000004 effffff43f movl _divd_1_data+4(r0),_sgl_value_2
1405: 1397 00030BE1 # sgl_value_3 = divd_1_data[index].op_2.m; /* get op. #2's MSW */
1406: 1398 00030BE1 5c 18 effffff438 50 mull3 $24,_index,r0
1407: 1399 00030BE9 0d e000000008 effffff42c movl _divd_1_data+8(r0),_sgl_value_3
1408: 1400 00030BF4 # sgl_value_4 = divd_1_data[index].op_2.l; /* get op. #2's LSW */
1409: 1401 00030BF4 5c 18 effffff425 50 mull3 $24,_index,r0
1410: 1402 00030BFC 0d e00000000c effffff419 movl _divd_1_data+12(r0),_sgl_value_4
1411: 1403 00030C07 # sgl_value_7 = 0x40800000; /* get the '1.0' data */
1412: 1404 00030C07 0d 8f40800000 effffff40e movl $1082130432,_sgl_value_7
1413: 1405 00030C12 # sgl_value_8 = 0;
1414: 1406 00030C12 4d effffff408 clrl _sgl_value_8
1415: 1407 00030C18 # dbl_expected = divd_1_data[index].exp; /* get expected results */
1416: 1408 00030C18 5c 18 effffff401 50 mull3 $24,_index,r0
1417: 1409 00030C20 0c 8f00000010 50 addl2 $_divd_1_data+16,r0
1418: 1410 00030C27 0d a004 effffff3f5 movl 4(r0),_dbl_expected+4
1419: 1411 00030C2F 0d 60 effffff3ea movl (r0),_dbl_expected
1420: 1412 00030C36 # /*
1421: 1413 00030C36 # * If LOOP ON ERROR is set, this is the loop for this subtest.
1422: 1414 00030C36 # * The force loop flag is set after the first error.
1423: 1415 00030C36 # */
1424: 1416 00030C36 # asm("_pipe15_9_lp1:");
1425: 1417 00030C36 _pipe15_9_lp1:
1426: 1418 00030C36 # asm("moval _pointer_data,_sgl_value_9");/* get store data's addr */
1427: 1419 00030C36 ed effffff3e4 effffff3df moval _pointer_data,_sgl_value_9
1428: 1420 00030C41 # sgl_value_9 -= 8;
1429: 1421 00030C41 2c 08 effffff3d8 subl2 $8,_sgl_value_9
1430: 1422 00030C48 # asm("movl _sgl_value_2,*_sgl_value_9"); /* set operand #1's LSW */
1431: 1423 00030C48 0d effffff3d2 fffffff3cd movl _sgl_value_2,*_sgl_value_9
1432: 1424 00030C53 # sgl_value_9 -= 4;
1433: 1425 00030C53 2c 04 effffff3c6 subl2 $4,_sgl_value_9
1434: 1426 00030C5A # asm("movl _sgl_value_1,*_sgl_value_9"); /* set operand #1's MSW */
1435: 1427 00030C5A 0d effffff3c0 fffffff3bb movl _sgl_value_1,*_sgl_value_9
1436: 1428 00030C65 # sgl_value_9 -= 4;
1437: 1429 00030C65 2c 04 effffff3b4 subl2 $4,_sgl_value_9
1438: 1430 00030C6C # asm("movl _sgl_value_4,*_sgl_value_9"); /* set operand #2's LSW */
1439: 1431 00030C6C 0d effffff3ae fffffff3a9 movl _sgl_value_4,*_sgl_value_9
1440: 1432 00030C77 # sgl_value_9 -= 4;
1441: 1433 00030C77 2c 04 effffff3a2 subl2 $4,_sgl_value_9
1442: 1434 00030C7E # asm("movl _sgl_value_3,*_sgl_value_9"); /* set operand #2's MSW */
1443: 1435 00030C7E 0d effffff39c fffffff397 movl _sgl_value_3,*_sgl_value_9
1444: 1436 00030C89 # sgl_value_9 -= 4;
1445: 1437 00030C89 2c 04 effffff390 subl2 $4,_sgl_value_9
1446: 1438 00030C90 # asm("movl _sgl_value_8,*_sgl_value_9"); /* set '1.0' data's LSW */
1447: 1439 00030C90 0d effffff38a fffffff385 movl _sgl_value_8,*_sgl_value_9
1448: 1440 00030C9B # sgl_value_9 -= 4;
1449: 1441 00030C9B 2c 04 effffff37e subl2 $4,_sgl_value_9
1450: 1442 00030CA2 # asm("movl _sgl_value_7,*_sgl_value_9"); /* set '1.0' data's MSW */
1451: 1443 00030CA2 0d effffff378 fffffff373 movl _sgl_value_7,*_sgl_value_9
1452: 1444 00030CAD # sgl_value_9 -= 4;
1453: 1445 00030CAD 2c 04 effffff36c subl2 $4,_sgl_value_9
1454: 1446 00030CB4 # asm("movl _sgl_value_8,*_sgl_value_9"); /* set '0.0' data's LSW */
1455: 1447 00030CB4 0d effffff366 fffffff361 movl _sgl_value_8,*_sgl_value_9
1456: 1448 00030CBF # sgl_value_9 -= 4;
1457: 1449 00030CBF 2c 04 effffff35a subl2 $4,_sgl_value_9
1458: 1450 00030CC6 # asm("movl _sgl_value_8,*_sgl_value_9"); /* set '0.0' data's MSW */
1459: 1451 00030CC6 0d effffff354 fffffff34f movl _sgl_value_8,*_sgl_value_9
1460: 1452 00030CD1 # sgl_value_9 -= 8; /* get FRAME PTR's value */
1461: 1453 00030CD1 2c 08 effffff348 subl2 $8,_sgl_value_9
1462: 1454 00030CD8 # asm("movl _sgl_value_9,r13"); /* set the FRAME POINTER */
1463: 1455 00030CD8 0d effffff342 5d movl _sgl_value_9,r13
1464: 1456 00030CDF # asm("movl $1,r2"); /* r2 index = 1 quadwords */
1465: 1457 00030CDF 0d 01 52 movl $1,r2
1466: 1458 00030CE2 # asm("movl $2,r3"); /* r3 index = 2 quadwords */
1467: 1459 00030CE2 0d 02 53 movl $2,r3
1468: 1460 00030CE5 # asm("movl $3,r4"); /* r4 index = 3 quadwords */
1469: 1461 00030CE5 0d 03 54 movl $3,r4
1470: 1462 00030CE8 # asm("movl $4,r5"); /* r5 index = 4 quadwords */
1471: 1463 00030CE8 0d 04 55 movl $4,r5
1472: 1464 00030CEB # asm("movl $5,r6"); /* r6 index = 5 quadwords */
1473: 1465 00030CEB 0d 05 56 movl $5,r6
1474: 1466 00030CEE # asm("ldd (r13)[r3]"); /* load a '1.0' ( 0 ) */
1475: 1467 00030CEE 07 436d ldd (r13)[r3]
1476: 1468 00030CF1 # asm("muld (r13)[r5]"); /* mult by op. #1 ( op1 ) */
1477: 1469 00030CF1 e7 456d muld (r13)[r5]
1478: 1470 00030CF4 # asm("divd (r13)[r4]"); /* divide by op. #2 ( exp ) */
1479: 1471 00030CF4 f7 446d divd (r13)[r4]
1480: 1472 00030CF7 # asm("divd (r13)[r3]"); /* divide by '1.0' ( exp ) */
1481: 1473 00030CF7 f7 436d divd (r13)[r3]
1482: 1474 00030CFA # asm("addd (r13)[r2]"); /* add '0.0' ( exp ) */
1483: 1475 00030CFA c7 426d addd (r13)[r2]
1484: 1476 00030CFD # asm("std (r13)[r6]"); /* store the result ( exp ) */
1485: 1477 00030CFD 27 466d std (r13)[r6]
1486: 1478 00030D00 # if( force_loop )
1487: 1479 00030D00 5d effffff31a tstl _force_loop
1488: 1480 00030D06 31 03 jeql L344
1489: 1481 00030D08 # asm("brw _pipe15_9_lp1");; /* run the loop again */
1490: 1482 00030D08 13 ff2b brw _pipe15_9_lp1
1491: 1483 00030D0B L344:
1492: 1484 00030D0B # /*
1493: 1485 00030D0B # * verify the results
1494: 1486 00030D0B # */
1495: 1487 00030D0B # asm("moval (r13),_sgl_value_10"); /* save the frame pointer */
1496: 1488 00030D0B ed 6d effffff30e moval (r13),_sgl_value_10
1497: 1489 00030D12 # asm("movl _pointer_data,_sgl_value_6"); /* save the LSW stored */
1498: 1490 00030D12 0d effffff308 effffff303 movl _pointer_data,_sgl_value_6
1499: 1491 00030D1D # asm("movl _pointer_data-4,_sgl_value_5"); /* and the MSW */
1500: 1492 00030D1D 0d effffff2f9 effffff2f8 movl _pointer_data-4,_sgl_value_5
1501: 1493 00030D28 # if( (sgl_value_5 != dbl_expected.m) || /* verify the result... */
1502: 1494 00030D28 # (sgl_value_6 != dbl_expected.l) || /* verify the result... */
1503: 1495 00030D28 # (sgl_value_10 != sgl_value_9) ) /* ... and the final FP */
1504: 1496 00030D28 1d effffff2f2 effffff2ed cmpl _sgl_value_5,_dbl_expected
1505: 1497 00030D33 21 1d jneq L9991
1506: 1498 00030D35 1d effffff2e5 effffff2e4 cmpl _sgl_value_6,_dbl_expected+4
1507: 1499 00030D40 21 10 jneq L9991
1508: 1500 00030D42 1d effffff2d8 effffff2d3 cmpl _sgl_value_10,_sgl_value_9
1509: 1501 00030D4D 21 03 13 0091 jeql L345
1510: 1502 00030D52 L9991:
1511: 1503 00030D52 # {
1512: 1504 00030D52 # asm("movl _pre_event_fp,r13"); /* restore frame pointer */
1513: 1505 00030D52 0d effffff2c8 5d movl _pre_event_fp,r13
1514: 1506 00030D59 # asm("movl _pre_event_sp,r14"); /* restore stack pointer */
1515: 1507 00030D59 0d effffff2c1 5e movl _pre_event_sp,r14
1516: 1508 00030D60 # errcnt++; /* bump the error count */
1517: 1509 00030D60 6d effffff2ba incl _errcnt
1518: 1510 00030D66 # if ( prt_error ) {
1519: 1511 00030D66 5d effffff2b4 tstl _prt_error
1520: 1512 00030D6C 31 4e jeql L346
1521: 1513 00030D6E # print_pipe15_er("indexed FP addressing.\n");
1522: 1514 00030D6E .data 1
1523: 1515 000010be * L347:
1524: 1516 000010be * 696E646578656420465020616 .ascii "indexed FP addressing.\12\0"
1525: 46472657373696E672E0A00
1526: 1517 000010d6 * .text
1527: 1518 00030D6E dd 8f000010be pushl $L347
1528: 1519 00030D74 fe 08 ef00000093 callf $8,_print_pipe15_er
1529: 1520 00030D7B # writes("final Frame Pointer = ");
1530: 1521 00030D7B .data 1
1531: 1522 000010d6 * L348:
1532: 1523 000010d6 * 66696E616C204672616D65205 .ascii "final Frame Pointer = \0"
1533: 06F696E746572203D2000
1534: 1524 000010ed * .text
1535: 1525 00030D7B dd 8f000010d6 pushl $L348
1536: 1526 00030D81 fe 08 effffff298 callf $8,_writes
1537: 1527 00030D88 # write32h( sgl_value_10 );
1538: 1528 00030D88 dd effffff292 pushl _sgl_value_10
1539: 1529 00030D8E fe 08 effffff28b callf $8,_write32h
1540: 1530 00030D95 # writes(", expected FP = ");
1541: 1531 00030D95 .data 1
1542: 1532 000010ed * L350:
1543: 1533 000010ed * 2C20206578706563746564204 .ascii ", expected FP = \0"
1544: 650203D2000
1545: 1534 000010ff * .text
1546: 1535 00030D95 dd 8f000010ed pushl $L350
1547: 1536 00030D9B fe 08 effffff27e callf $8,_writes
1548: 1537 00030DA2 # write32h( sgl_value_9 );
1549: 1538 00030DA2 dd effffff278 pushl _sgl_value_9
1550: 1539 00030DA8 fe 08 effffff271 callf $8,_write32h
1551: 1540 00030DAF # writes(" \n");
1552: 1541 00030DAF .data 1
1553: 1542 000010ff * L351:
1554: 1543 000010ff * 200A00 .ascii " \12\0"
1555: 1544 00001102 * .text
1556: 1545 00030DAF dd 8f000010ff pushl $L351
1557: 1546 00030DB5 fe 08 effffff264 callf $8,_writes
1558: 1547 00030DBC # }
1559: 1548 00030DBC # if ( halt_flg )
1560: 1549 00030DBC L346:
1561: 1550 00030DBC 5d effffff25e tstl _halt_flg
1562: 1551 00030DC2 31 0d jeql L352
1563: 1552 00030DC4 # pipe15_er_hlt( subtest );
1564: 1553 00030DC4 dd effffff256 pushl _subtest
1565: 1554 00030DCA fe 08 ef000001bb callf $8,_pipe15_er_hlt
1566: 1555 00030DD1 # if ( loop_on_err ) {
1567: 1556 00030DD1 L352:
1568: 1557 00030DD1 5d effffff249 tstl _loop_on_err
1569: 1558 00030DD7 31 0a jeql L353
1570: 1559 00030DD9 # force_loop = TRUE; /* set the force loop flag */
1571: 1560 00030DD9 0d 01 effffff240 movl $1,_force_loop
1572: 1561 00030DE0 # asm("brw _pipe15_9_lp1"); /* and loop */
1573: 1562 00030DE0 13 fe53 brw _pipe15_9_lp1
1574: 1563 00030DE3 # }
1575: 1564 00030DE3 # } /* end of compare error */
1576: 1565 00030DE3 L353:
1577: 1566 00030DE3 # } while( index++ < max_divd_1_index );
1578: 1567 00030DE3 L345:
1579: 1568 00030DE3 L342:
1580: 1569 00030DE3 0d effffff237 50 movl _index,r0
1581: 1570 00030DEA 6d effffff230 incl _index
1582: 1571 00030DF0 1d 50 effffff229 cmpl r0,_max_divd_1_index
1583: 1572 00030DF7 81 03 13 fdbf jlss L343
1584: 1573 00030DFC L341:
1585: 1574 00030DFC # asm("movl _pre_event_fp,r13"); /* restore the frame pointer */
1586: 1575 00030DFC 0d effffff21e 5d movl _pre_event_fp,r13
1587: 1576 00030E03 # asm("movl _pre_event_sp,r14"); /* restore the stack pointer */
1588: 1577 00030E03 0d effffff217 5e movl _pre_event_sp,r14
1589: 1578 00030E0A # } /* end of subtest 9 */
1590: 1579 00030E0A 40 ret#2
1591: 1580 00030E0B .set L337,0x0
1592: 1581 00030E0B L339:
1593: 1582 00030E0B 13 fd93 jbr L340
1594: 1583 00030E0E .data
1595: 1584 00001010 * .text
1596: 1585 00030E0E .align 1
1597: 1586 00030E0E .globl _print_pipe15_er
1598: 1587 00030E0E _print_pipe15_er:
1599: 1588 00030E0E 0000 .word L354
1600: 1589 00030E10 #
1601: 1590 00030E10 #
1602: 1591 00030E10 # /******************************************************************************
1603: 1592 00030E10 # *
1604: 1593 00030E10 # * ERROR ROUTINE
1605: 1594 00030E10 # *
1606: 1595 00030E10 # * print an error in the following form
1607: 1596 00030E10 # *
1608: 1597 00030E10 # *operand 1 = xxxxxxxx xxxxxxxx, final Acc = xxxxxxxx xxxxxxxx, index = dd
1609: 1598 00030E10 # *operand 2 = xxxxxxxx xxxxxxxx, expected Acc = xxxxxxxx xxxxxxxx
1610: 1599 00030E10 # *
1611: 1600 00030E10 # ******************************************************************************/
1612: 1601 00030E10 # print_pipe15_er(msg)
1613: 1602 00030E10 # char *msg;
1614: 1603 00030E10 # {
1615: 1604 00030E10 13 0175 jbr L356
1616: 1605 00030E13 L357:
1617: 1606 00030E13 # writes(" \n"); /* start a new print line */
1618: 1607 00030E13 .data 1
1619: 1608 00001102 * L358:
1620: 1609 00001102 * 200A00 .ascii " \12\0"
1621: 1610 00001105 * .text
1622: 1611 00030E13 dd 8f00001102 pushl $L358
1623: 1612 00030E19 fe 08 effffff200 callf $8,_writes
1624: 1613 00030E20 # writes("cycle: ");
1625: 1614 00030E20 .data 1
1626: 1615 00001105 * L359:
1627: 1616 00001105 * 6379636C653A2000 .ascii "cycle: \0"
1628: 1617 0000110d * .text
1629: 1618 00030E20 dd 8f00001105 pushl $L359
1630: 1619 00030E26 fe 08 effffff1f3 callf $8,_writes
1631: 1620 00030E2D # writed( cycle );
1632: 1621 00030E2D dd effffff1ed pushl _cycle
1633: 1622 00030E33 fe 08 effffff1e6 callf $8,_writed
1634: 1623 00030E3A # writes(" test ");
1635: 1624 00030E3A .data 1
1636: 1625 0000110d * L361:
1637: 1626 0000110d * 20746573742000 .ascii " test \0"
1638: 1627 00001114 * .text
1639: 1628 00030E3A dd 8f0000110d pushl $L361
1640: 1629 00030E40 fe 08 effffff1d9 callf $8,_writes
1641: 1630 00030E47 # writed( test_no );
1642: 1631 00030E47 dd effffff1d3 pushl _test_no
1643: 1632 00030E4D fe 08 effffff1cc callf $8,_writed
1644: 1633 00030E54 # writes(" (Pipe 15), subtest ");
1645: 1634 00030E54 .data 1
1646: 1635 00001114 * L362:
1647: 1636 00001114 * 20202850697065203135292C2 .ascii " (Pipe 15), subtest \0"
1648: 0737562746573742000
1649: 1637 0000112a * .text
1650: 1638 00030E54 dd 8f00001114 pushl $L362
1651: 1639 00030E5A fe 08 effffff1bf callf $8,_writes
1652: 1640 00030E61 # writed( subtest );
1653: 1641 00030E61 dd effffff1b9 pushl _subtest
1654: 1642 00030E67 fe 08 effffff1b2 callf $8,_writed
1655: 1643 00030E6E # writes(" error - ");
1656: 1644 00030E6E .data 1
1657: 1645 0000112a * L363:
1658: 1646 0000112a * 206572726F72202D2000 .ascii " error - \0"
1659: 1647 00001134 * .text
1660: 1648 00030E6E dd 8f0000112a pushl $L363
1661: 1649 00030E74 fe 08 effffff1a5 callf $8,_writes
1662: 1650 00030E7B # writes( msg );
1663: 1651 00030E7B dd ad04 pushl 4(fp)
1664: 1652 00030E7E fe 08 effffff19b callf $8,_writes
1665: 1653 00030E85 # writec('\n');
1666: 1654 00030E85 dd 0a pushl $10
1667: 1655 00030E87 fe 08 effffff192 callf $8,_writec
1668: 1656 00030E8E # writes(" LDD(1.0) MULD(op1) DIVD(op2) DIVD(1.0) ADDD(0.0) STD\n");
1669: 1657 00030E8E .data 1
1670: 1658 00001134 * L365:
1671: 1659 00001134 * 204C444428312E302920204D5 .ascii " LDD(1.0) MULD(op1) DIVD(op2) DIVD(1.0) ADDD(0.0) STD\12\0"
1672: 54C44286F7031292020444956
1673: 44286F7032292020444956442
1674: 8312E30292020414444442830
1675: 2E302920205354440A00
1676: 1660 00001170 * .text
1677: 1661 00030E8E dd 8f00001134 pushl $L365
1678: 1662 00030E94 fe 08 effffff185 callf $8,_writes
1679: 1663 00030E9B # writes("operand 1 = ");
1680: 1664 00030E9B .data 1
1681: 1665 00001170 * L366:
1682: 1666 00001170 * 6F706572616E642031203D200 .ascii "operand 1 = \0"
1683: 0
1684: 1667 0000117d * .text
1685: 1668 00030E9B dd 8f00001170 pushl $L366
1686: 1669 00030EA1 fe 08 effffff178 callf $8,_writes
1687: 1670 00030EA8 # write32h( sgl_value_1 );
1688: 1671 00030EA8 dd effffff172 pushl _sgl_value_1
1689: 1672 00030EAE fe 08 effffff16b callf $8,_write32h
1690: 1673 00030EB5 # writec(' ');
1691: 1674 00030EB5 dd 20 pushl $32
1692: 1675 00030EB7 fe 08 effffff162 callf $8,_writec
1693: 1676 00030EBE # write32h( sgl_value_2 );
1694: 1677 00030EBE dd effffff15c pushl _sgl_value_2
1695: 1678 00030EC4 fe 08 effffff155 callf $8,_write32h
1696: 1679 00030ECB # writes(", final Acc = ");
1697: 1680 00030ECB .data 1
1698: 1681 0000117d * L367:
1699: 1682 0000117d * 2C2020202066696E616C20416 .ascii ", final Acc = \0"
1700: 363203D2000
1701: 1683 0000118f * .text
1702: 1684 00030ECB dd 8f0000117d pushl $L367
1703: 1685 00030ED1 fe 08 effffff148 callf $8,_writes
1704: 1686 00030ED8 # write32h( dbl_st_acc.m );
1705: 1687 00030ED8 dd effffff142 pushl _dbl_st_acc
1706: 1688 00030EDE fe 08 effffff13b callf $8,_write32h
1707: 1689 00030EE5 # writec(' ');
1708: 1690 00030EE5 dd 20 pushl $32
1709: 1691 00030EE7 fe 08 effffff132 callf $8,_writec
1710: 1692 00030EEE # write32h( dbl_st_acc.l );
1711: 1693 00030EEE dd effffff130 pushl _dbl_st_acc+4
1712: 1694 00030EF4 fe 08 effffff125 callf $8,_write32h
1713: 1695 00030EFB # writes(", index = ");
1714: 1696 00030EFB .data 1
1715: 1697 0000118f * L368:
1716: 1698 0000118f * 2C202020696E646578203D200 .ascii ", index = \0"
1717: 0
1718: 1699 0000119c * .text
1719: 1700 00030EFB dd 8f0000118f pushl $L368
1720: 1701 00030F01 fe 08 effffff118 callf $8,_writes
1721: 1702 00030F08 # writed( index );
1722: 1703 00030F08 dd effffff112 pushl _index
1723: 1704 00030F0E fe 08 effffff10b callf $8,_writed
1724: 1705 00030F15 # writec('\n');
1725: 1706 00030F15 dd 0a pushl $10
1726: 1707 00030F17 fe 08 effffff102 callf $8,_writec
1727: 1708 00030F1E # writes("operand 2 = ");
1728: 1709 00030F1E .data 1
1729: 1710 0000119c * L369:
1730: 1711 0000119c * 6F706572616E642032203D200 .ascii "operand 2 = \0"
1731: 0
1732: 1712 000011a9 * .text
1733: 1713 00030F1E dd 8f0000119c pushl $L369
1734: 1714 00030F24 fe 08 effffff0f5 callf $8,_writes
1735: 1715 00030F2B # write32h( sgl_value_3 );
1736: 1716 00030F2B dd effffff0ef pushl _sgl_value_3
1737: 1717 00030F31 fe 08 effffff0e8 callf $8,_write32h
1738: 1718 00030F38 # writec(' ');
1739: 1719 00030F38 dd 20 pushl $32
1740: 1720 00030F3A fe 08 effffff0df callf $8,_writec
1741: 1721 00030F41 # write32h( sgl_value_4 );
1742: 1722 00030F41 dd effffff0d9 pushl _sgl_value_4
1743: 1723 00030F47 fe 08 effffff0d2 callf $8,_write32h
1744: 1724 00030F4E # writes(", expected Acc = ");
1745: 1725 00030F4E .data 1
1746: 1726 000011a9 * L370:
1747: 1727 000011a9 * 2C20657870656374656420416 .ascii ", expected Acc = \0"
1748: 363203D2000
1749: 1728 000011bb * .text
1750: 1729 00030F4E dd 8f000011a9 pushl $L370
1751: 1730 00030F54 fe 08 effffff0c5 callf $8,_writes
1752: 1731 00030F5B # write32h( dbl_expected.m );
1753: 1732 00030F5B dd effffff0bf pushl _dbl_expected
1754: 1733 00030F61 fe 08 effffff0b8 callf $8,_write32h
1755: 1734 00030F68 # writec(' ');
1756: 1735 00030F68 dd 20 pushl $32
1757: 1736 00030F6A fe 08 effffff0af callf $8,_writec
1758: 1737 00030F71 # write32h( dbl_expected.l );
1759: 1738 00030F71 dd effffff0ad pushl _dbl_expected+4
1760: 1739 00030F77 fe 08 effffff0a2 callf $8,_write32h
1761: 1740 00030F7E # writec('\n');
1762: 1741 00030F7E dd 0a pushl $10
1763: 1742 00030F80 fe 08 effffff099 callf $8,_writec
1764: 1743 00030F87 # }
1765: 1744 00030F87 40 ret#2
1766: 1745 00030F88 .set L354,0x0
1767: 1746 00030F88 L356:
1768: 1747 00030F88 13 fe88 jbr L357
1769: 1748 00030F8B .data
1770: 1749 00001010 * .text
1771: 1750 00030F8B 00 .align 1
1772: 1751 00030F8C .globl _pipe15_er_hlt
1773: 1752 00030F8C _pipe15_er_hlt:
1774: 1753 00030F8C 0000 .word L371
1775: 1754 00030F8E #
1776: 1755 00030F8E #
1777: 1756 00030F8E #
1778: 1757 00030F8E #
1779: 1758 00030F8E #
1780: 1759 00030F8E # /******************************************************************************
1781: 1760 00030F8E # *
1782: 1761 00030F8E # * HALT ON ERROR ROUTINE
1783: 1762 00030F8E # *
1784: 1763 00030F8E # * halt with the necessary information saved in the registers
1785: 1764 00030F8E # *
1786: 1765 00030F8E # ******************************************************************************/
1787: 1766 00030F8E # pipe15_er_hlt( subtest )
1788: 1767 00030F8E # int subtest;
1789: 1768 00030F8E # {
1790: 1769 00030F8E 13 0099 jbr L373
1791: 1770 00030F91 L374:
1792: 1771 00030F91 # sgl_value_5 = dbl_st_acc.m;
1793: 1772 00030F91 0d effffff089 effffff084 movl _dbl_st_acc,_sgl_value_5
1794: 1773 00030F9C # sgl_value_6 = dbl_st_acc.l;
1795: 1774 00030F9C 0d effffff082 effffff079 movl _dbl_st_acc+4,_sgl_value_6
1796: 1775 00030FA7 # sgl_value_7 = dbl_expected.m;
1797: 1776 00030FA7 0d effffff073 effffff06e movl _dbl_expected,_sgl_value_7
1798: 1777 00030FB2 # sgl_value_8 = dbl_expected.l;
1799: 1778 00030FB2 0d effffff06c effffff063 movl _dbl_expected+4,_sgl_value_8
1800: 1779 00030FBD # asm("movl _test_no,r0"); /* r0 = test number */
1801: 1780 00030FBD 0d effffff05d 50 movl _test_no,r0
1802: 1781 00030FC4 # asm("movl _subtest,r1"); /* r1 = subtest number */
1803: 1782 00030FC4 0d effffff056 51 movl _subtest,r1
1804: 1783 00030FCB # asm("movl $1,r2"); /* r2 = error code */
1805: 1784 00030FCB 0d 01 52 movl $1,r2
1806: 1785 00030FCE # asm("movl _cycle,r3"); /* r3 = cycle count */
1807: 1786 00030FCE 0d effffff04c 53 movl _cycle,r3
1808: 1787 00030FD5 # asm("movl _sgl_value_1,r4"); /* r4 = MSW operand one */
1809: 1788 00030FD5 0d effffff045 54 movl _sgl_value_1,r4
1810: 1789 00030FDC # asm("movl _sgl_value_2,r5"); /* r5 = LSW operand one */
1811: 1790 00030FDC 0d effffff03e 55 movl _sgl_value_2,r5
1812: 1791 00030FE3 # asm("movl _sgl_value_3,r6"); /* r6 = MSW operand two */
1813: 1792 00030FE3 0d effffff037 56 movl _sgl_value_3,r6
1814: 1793 00030FEA # asm("movl _sgl_value_4,r7"); /* r7 = LSW operand two */
1815: 1794 00030FEA 0d effffff030 57 movl _sgl_value_4,r7
1816: 1795 00030FF1 # asm("movl _sgl_value_5,r8"); /* r8 = MSW operand stored */
1817: 1796 00030FF1 0d effffff029 58 movl _sgl_value_5,r8
1818: 1797 00030FF8 # asm("movl _sgl_value_6,r9"); /* r9 = LSW operand stored */
1819: 1798 00030FF8 0d effffff022 59 movl _sgl_value_6,r9
1820: 1799 00030FFF # asm("movl _sgl_value_7,r10"); /* r10 = MSW operand exp */
1821: 1800 00030FFF 0d effffff01b 5a movl _sgl_value_7,r10
1822: 1801 00031006 # asm("movl _sgl_value_8,r11"); /* r11 = LSW operand exp */
1823: 1802 00031006 0d effffff014 5b movl _sgl_value_8,r11
1824: 1803 0003100D # asm("movl _index,r12"); /* r12 = data index */
1825: 1804 0003100D 0d effffff00d 5c movl _index,r12
1826: 1805 00031014 # if( subtest == 9 ) {
1827: 1806 00031014 1d ad04 09 cmpl 4(fp),$9
1828: 1807 00031018 21 0e jneq L375
1829: 1808 0003101A # asm("movl _sgl_value_10,r13"); /* r13 = final FP value */
1830: 1809 0003101A 0d effffff000 5d movl _sgl_value_10,r13
1831: 1810 00031021 # asm("movl _sgl_value_9,r14"); /* r14 = expected FP value */
1832: 1811 00031021 0d efffffeff9 5e movl _sgl_value_9,r14
1833: 1812 00031028 # };
1834: 1813 00031028 L375:
1835: 1814 00031028 # asm(".globl _pipe15_1_hlt");
1836: 1815 00031028 .globl _pipe15_1_hlt
1837: 1816 00031028 # asm("_pipe15_1_hlt:"); /* PC after the halt */
1838: 1817 00031028 _pipe15_1_hlt:
1839: 1818 00031028 # asm("halt"); /* HALT ... */
1840: 1819 00031028 00 halt
1841: 1820 00031029 # } /* end of halt on error */
1842: 1821 00031029 40 ret#2
1843: 1822 0003102A .set L371,0x0
1844: 1823 0003102A L373:
1845: 1824 0003102A 13 ff64 jbr L374
1846: 1825 0003102D .data
1847: 1825 0006104D .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.