|
|
1.1 ! root 1: 1 00000000 LL0: ! 2: 2 00000000 .data ! 3: 3 00000db4 * .text ! 4: 4 00000000 .align 1 ! 5: 5 00000000 .globl _pipe_13 ! 6: 6 00000000 _pipe_13: ! 7: 7 0002E288 0000 .word L215 ! 8: 8 0002E28A # #include "fpp_defs.h" ! 9: 9 0002E28A # ! 10: 10 0002E28A # ! 11: 11 0002E28A # /***************************************************************************** ! 12: 12 0002E28A # * ! 13: 13 0002E28A # * DBL PIPELINE TEST #13 MONITOR ! 14: 14 0002E28A # * ! 15: 15 0002E28A # * This test will do: ! 16: 16 0002E28A # * ! 17: 17 0002E28A # * LDD(1) MULD(x) MULD(1) SUBD(x) ADDD(x) STD ! 18: 18 0002E28A # * ! 19: 19 0002E28A # * where the x's are the LDD data patterns. ! 20: 20 0002E28A # *****************************************************************************/ ! 21: 21 0002E28A # pipe_13() ! 22: 22 0002E28A # { ! 23: 23 0002E28A 13 009b jbr L217 ! 24: 24 0002E28D L218: ! 25: 25 0002E28D # asm(".globl _pipeline_13_t"); ! 26: 26 0002E28D .globl _pipeline_13_t ! 27: 27 0002E28D # asm("_pipeline_13_t:"); /* entry address */ ! 28: 28 0002E28D _pipeline_13_t: ! 29: 29 0002E28D # if( (cycle == 1) && (prt_hdrs) ) /* print headers on 1st cycle */ ! 30: 30 0002E28D 1d effffffff5 01 cmpl _cycle,$1 ! 31: 31 0002E294 21 15 jneq L219 ! 32: 32 0002E296 5d efffffffec tstl _prt_hdrs ! 33: 33 0002E29C 31 0d jeql L219 ! 34: 34 0002E29E # { ! 35: 35 0002E29E # writes(" PIPE_13"); ! 36: 36 0002E29E .data 1 ! 37: 37 00000db4 * L221: ! 38: 38 00000db4 * 20504950455F313300 .ascii " PIPE_13\0" ! 39: 39 00000dbd * .text ! 40: 40 0002E29E dd 8f00000db4 pushl $L221 ! 41: 41 0002E2A4 fe 08 efffffffdd callf $8,_writes ! 42: 42 0002E2AB # } ! 43: 43 0002E2AB # subtest = 1; ! 44: 44 0002E2AB L219: ! 45: 45 0002E2AB 0d 01 efffffffd6 movl $1,_subtest ! 46: 46 0002E2B2 # pipe13_1(); /* data in REGs, no NOPs */ ! 47: 47 0002E2B2 fe 04 ef00000073 callf $4,_pipe13_1 ! 48: 48 0002E2B9 # subtest++; /* increment subtest num */ ! 49: 49 0002E2B9 6d efffffffc9 incl _subtest ! 50: 50 0002E2BF # pipe13_2(); /* data in REGs, 1 NOP */ ! 51: 51 0002E2BF fe 04 ef000001a2 callf $4,_pipe13_2 ! 52: 52 0002E2C6 # subtest++; /* increment subtest num */ ! 53: 53 0002E2C6 6d efffffffbc incl _subtest ! 54: 54 0002E2CC # pipe13_3(); /* data in REGs, 2 NOPs */ ! 55: 55 0002E2CC fe 04 ef000002d5 callf $4,_pipe13_3 ! 56: 56 0002E2D3 # subtest++; /* increment subtest num */ ! 57: 57 0002E2D3 6d efffffffaf incl _subtest ! 58: 58 0002E2D9 # pipe13_4(); /* data in REGs, 3 NOPs */ ! 59: 59 0002E2D9 fe 04 ef0000040e callf $4,_pipe13_4 ! 60: 60 0002E2E0 # subtest++; /* increment subtest num */ ! 61: 61 0002E2E0 6d efffffffa2 incl _subtest ! 62: 62 0002E2E6 # pipe13_5(); /* data in CACHE, no NOPs */ ! 63: 63 0002E2E6 fe 04 ef0000054b callf $4,_pipe13_5 ! 64: 64 0002E2ED # subtest++; /* increment subtest num */ ! 65: 65 0002E2ED 6d efffffff95 incl _subtest ! 66: 66 0002E2F3 # pipe13_6(); /* data in CACHE, 1 NOP */ ! 67: 67 0002E2F3 fe 04 ef00000644 callf $4,_pipe13_6 ! 68: 68 0002E2FA # subtest++; /* increment subtest num */ ! 69: 69 0002E2FA 6d efffffff88 incl _subtest ! 70: 70 0002E300 # pipe13_7(); /* data in CACHE, 2 NOPs */ ! 71: 71 0002E300 fe 04 ef00000741 callf $4,_pipe13_7 ! 72: 72 0002E307 # subtest++; /* increment subtest num */ ! 73: 73 0002E307 6d efffffff7b incl _subtest ! 74: 74 0002E30D # pipe13_8(); /* data in CACHE, 3 NOPs */ ! 75: 75 0002E30D fe 04 ef00000844 callf $4,_pipe13_8 ! 76: 76 0002E314 # subtest++; /* increment subtest num */ ! 77: 77 0002E314 6d efffffff6e incl _subtest ! 78: 78 0002E31A # pipe13_9(); /* data via F.P. 0 NOPs */ ! 79: 79 0002E31A fe 04 ef0000094b callf $4,_pipe13_9 ! 80: 80 0002E321 # asm("jmp *return"); /* return to the test monitor */ ! 81: 81 0002E321 71 ffffffff61 jmp *return ! 82: 82 0002E327 # } ! 83: 83 0002E327 40 ret#2 ! 84: 84 0002E328 .set L215,0x0 ! 85: 85 0002E328 L217: ! 86: 86 0002E328 13 ff62 jbr L218 ! 87: 87 0002E32B .data ! 88: 88 00000db4 * .text ! 89: 89 0002E32B 00 .align 1 ! 90: 90 0002E32C .globl _pipe13_1 ! 91: 91 0002E32C _pipe13_1: ! 92: 92 0002E32C 0000 .word L231 ! 93: 93 0002E32E # ! 94: 94 0002E32E # ! 95: 95 0002E32E # ! 96: 96 0002E32E # ! 97: 97 0002E32E # ! 98: 98 0002E32E # ! 99: 99 0002E32E # ! 100: 100 0002E32E # /************************************************************************ ! 101: 101 0002E32E # * ! 102: 102 0002E32E # * SUBTEST 1 ! 103: 103 0002E32E # * data in registers, no NO-OPs ! 104: 104 0002E32E # * ! 105: 105 0002E32E # ************************************************************************/ ! 106: 106 0002E32E # pipe13_1() ! 107: 107 0002E32E # { ! 108: 108 0002E32E 13 0133 jbr L233 ! 109: 109 0002E331 L234: ! 110: 110 0002E331 # force_loop = FALSE; /* clear the force_loop flg */ ! 111: 111 0002E331 4d efffffff51 clrl _force_loop ! 112: 112 0002E337 # index = 0; ! 113: 113 0002E337 4d efffffff4b clrl _index ! 114: 114 0002E33D # do ! 115: 115 0002E33D L237: ! 116: 116 0002E33D # { ! 117: 117 0002E33D # sgl_value_1 = ldd_1_data[index].ld.m; /* get the operand's MSW */ ! 118: 118 0002E33D 0d efffffff45 50 movl _index,r0 ! 119: 119 0002E344 48 04 50 50 shll $4,r0,r0 ! 120: 120 0002E348 0d e000000000 efffffff35 movl _ldd_1_data(r0),_sgl_value_1 ! 121: 121 0002E353 # sgl_value_2 = ldd_1_data[index].ld.l; /* get the operand's MSW */ ! 122: 122 0002E353 0d efffffff2f 50 movl _index,r0 ! 123: 123 0002E35A 48 04 50 50 shll $4,r0,r0 ! 124: 124 0002E35E 0d e000000004 efffffff1f movl _ldd_1_data+4(r0),_sgl_value_2 ! 125: 125 0002E369 # sgl_value_7 = 0x40800000; /* get a dbl precision 1.0 */ ! 126: 126 0002E369 0d 8f40800000 efffffff14 movl $1082130432,_sgl_value_7 ! 127: 127 0002E374 # sgl_value_8 = 0; ! 128: 128 0002E374 4d efffffff0e clrl _sgl_value_8 ! 129: 129 0002E37A # dbl_expected = ldd_1_data[index].exp; /* get the expected results */ ! 130: 130 0002E37A 48 04 efffffff07 50 shll $4,_index,r0 ! 131: 131 0002E382 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0 ! 132: 132 0002E389 0d a004 effffffefb movl 4(r0),_dbl_expected+4 ! 133: 133 0002E391 0d 60 effffffef0 movl (r0),_dbl_expected ! 134: 134 0002E398 # /* ! 135: 135 0002E398 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 136: 136 0002E398 # * The force loop flag is set after the first error. ! 137: 137 0002E398 # */ ! 138: 138 0002E398 # asm("_pipe13_1_lp1:"); ! 139: 139 0002E398 _pipe13_1_lp1: ! 140: 140 0002E398 # asm("movl _sgl_value_1,r4"); /* move the data to r4/r5 */ ! 141: 141 0002E398 0d effffffeea 54 movl _sgl_value_1,r4 ! 142: 142 0002E39F # asm("movl _sgl_value_2,r5"); ! 143: 143 0002E39F 0d effffffee3 55 movl _sgl_value_2,r5 ! 144: 144 0002E3A6 # asm("movl _sgl_value_7,r2"); /* move a '1.0' to r2/r3 */ ! 145: 145 0002E3A6 0d effffffedc 52 movl _sgl_value_7,r2 ! 146: 146 0002E3AD # asm("movl _sgl_value_8,r3"); ! 147: 147 0002E3AD 0d effffffed5 53 movl _sgl_value_8,r3 ! 148: 148 0002E3B4 # asm("ldd r2"); /* load a '1.0' ( 1 ) */ ! 149: 149 0002E3B4 07 52 ldd r2 ! 150: 150 0002E3B6 # asm("muld r4"); /* multiply by op. ( op ) */ ! 151: 151 0002E3B6 e7 54 muld r4 ! 152: 152 0002E3B8 # asm("muld r2"); /* multiply by 1.0 ( op ) */ ! 153: 153 0002E3B8 e7 52 muld r2 ! 154: 154 0002E3BA # asm("subd r4"); /* subtract the op. ( 0 ) */ ! 155: 155 0002E3BA d7 54 subd r4 ! 156: 156 0002E3BC # asm("addd r4"); /* add the op. ( op ) */ ! 157: 157 0002E3BC c7 54 addd r4 ! 158: 158 0002E3BE # asm("std r6"); /* store the result ( op ) */ ! 159: 159 0002E3BE 27 56 std r6 ! 160: 160 0002E3C0 # if( force_loop ) ! 161: 161 0002E3C0 5d effffffec2 tstl _force_loop ! 162: 162 0002E3C6 31 02 jeql L238 ! 163: 163 0002E3C8 # asm("brb _pipe13_1_lp1");; /* run the loop again */ ! 164: 164 0002E3C8 11 ce brb _pipe13_1_lp1 ! 165: 165 0002E3CA L238: ! 166: 166 0002E3CA # /* ! 167: 167 0002E3CA # * verify the results ! 168: 168 0002E3CA # */ ! 169: 169 0002E3CA # asm("movl r6,_sgl_value_3"); /* get the result */ ! 170: 170 0002E3CA 0d 56 effffffeb7 movl r6,_sgl_value_3 ! 171: 171 0002E3D1 # asm("movl r7,_sgl_value_4"); ! 172: 172 0002E3D1 0d 57 effffffeb0 movl r7,_sgl_value_4 ! 173: 173 0002E3D8 # dbl_st_acc.m = sgl_value_3; ! 174: 174 0002E3D8 0d effffffeaa effffffea5 movl _sgl_value_3,_dbl_st_acc ! 175: 175 0002E3E3 # dbl_st_acc.l = sgl_value_4; ! 176: 176 0002E3E3 0d effffffe9f effffffe9e movl _sgl_value_4,_dbl_st_acc+4 ! 177: 177 0002E3EE # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */ ! 178: 178 0002E3EE # (dbl_st_acc.l != dbl_expected.l) ) ! 179: 179 0002E3EE 1d effffffe94 effffffe8f cmpl _dbl_st_acc,_dbl_expected ! 180: 180 0002E3F9 21 0d jneq L9999 ! 181: 181 0002E3FB 1d effffffe8b effffffe86 cmpl _dbl_st_acc+4,_dbl_expected+4 ! 182: 182 0002E406 31 42 jeql L239 ! 183: 183 0002E408 L9999: ! 184: 184 0002E408 # { ! 185: 185 0002E408 # errcnt++; /* bump the error count */ ! 186: 186 0002E408 6d effffffe7a incl _errcnt ! 187: 187 0002E40E # if ( prt_error ) ! 188: 188 0002E40E 5d effffffe74 tstl _prt_error ! 189: 189 0002E414 31 0d jeql L240 ! 190: 190 0002E416 # print_pipe13_er("Reg. Data, no NOPs"); ! 191: 191 0002E416 .data 1 ! 192: 192 00000dbd * L242: ! 193: 193 00000dbd * 5265672E20446174612C206E6 .ascii "Reg. Data, no NOPs\0" ! 194: F204E4F507300 ! 195: 194 00000dd0 * .text ! 196: 195 0002E416 dd 8f00000dbd pushl $L242 ! 197: 196 0002E41C fe 08 ef00000a4d callf $8,_print_pipe13_er ! 198: 197 0002E423 # if ( halt_flg ) ! 199: 198 0002E423 L240: ! 200: 199 0002E423 5d effffffe5f tstl _halt_flg ! 201: 200 0002E429 31 0d jeql L243 ! 202: 201 0002E42B # pipe13_er_hlt( subtest ); ! 203: 202 0002E42B dd effffffe57 pushl _subtest ! 204: 203 0002E431 fe 08 ef00000b86 callf $8,_pipe13_er_hlt ! 205: 204 0002E438 # if ( loop_on_err ) { ! 206: 205 0002E438 L243: ! 207: 206 0002E438 5d effffffe4a tstl _loop_on_err ! 208: 207 0002E43E 31 0a jeql L245 ! 209: 208 0002E440 # force_loop = TRUE; /* set the force loop flag */ ! 210: 209 0002E440 0d 01 effffffe41 movl $1,_force_loop ! 211: 210 0002E447 # asm("brw _pipe13_1_lp1"); /* and loop */ ! 212: 211 0002E447 13 ff4e brw _pipe13_1_lp1 ! 213: 212 0002E44A # } ! 214: 213 0002E44A # } /* end of compare error */ ! 215: 214 0002E44A L245: ! 216: 215 0002E44A # } while( index++ < max_ldd_1_index ); ! 217: 216 0002E44A L239: ! 218: 217 0002E44A L236: ! 219: 218 0002E44A 0d effffffe38 50 movl _index,r0 ! 220: 219 0002E451 6d effffffe31 incl _index ! 221: 220 0002E457 1d 50 effffffe2a cmpl r0,_max_ldd_1_index ! 222: 221 0002E45E 81 03 13 feda jlss L237 ! 223: 222 0002E463 L235: ! 224: 223 0002E463 # } /* end of subtest 1 */ ! 225: 224 0002E463 40 ret#2 ! 226: 225 0002E464 .set L231,0x0 ! 227: 226 0002E464 L233: ! 228: 227 0002E464 13 feca jbr L234 ! 229: 228 0002E467 .data ! 230: 229 00000db4 * .text ! 231: 230 0002E467 00 .align 1 ! 232: 231 0002E468 .globl _pipe13_2 ! 233: 232 0002E468 _pipe13_2: ! 234: 233 0002E468 0000 .word L246 ! 235: 234 0002E46A # ! 236: 235 0002E46A # ! 237: 236 0002E46A # ! 238: 237 0002E46A # ! 239: 238 0002E46A # ! 240: 239 0002E46A # ! 241: 240 0002E46A # ! 242: 241 0002E46A # /************************************************************************ ! 243: 242 0002E46A # * ! 244: 243 0002E46A # * SUBTEST 2 ! 245: 244 0002E46A # * data in registers, 1 NO-OP ! 246: 245 0002E46A # * ! 247: 246 0002E46A # ************************************************************************/ ! 248: 247 0002E46A # pipe13_2() ! 249: 248 0002E46A # { ! 250: 249 0002E46A 13 0138 jbr L248 ! 251: 250 0002E46D L249: ! 252: 251 0002E46D # force_loop = FALSE; /* clear the force_loop flg */ ! 253: 252 0002E46D 4d effffffe15 clrl _force_loop ! 254: 253 0002E473 # index = 0; ! 255: 254 0002E473 4d effffffe0f clrl _index ! 256: 255 0002E479 # do ! 257: 256 0002E479 L252: ! 258: 257 0002E479 # { ! 259: 258 0002E479 # sgl_value_1 = ldd_1_data[index].ld.m; /* get the operand's MSW */ ! 260: 259 0002E479 0d effffffe09 50 movl _index,r0 ! 261: 260 0002E480 48 04 50 50 shll $4,r0,r0 ! 262: 261 0002E484 0d e000000000 effffffdf9 movl _ldd_1_data(r0),_sgl_value_1 ! 263: 262 0002E48F # sgl_value_2 = ldd_1_data[index].ld.l; /* get the operand's MSW */ ! 264: 263 0002E48F 0d effffffdf3 50 movl _index,r0 ! 265: 264 0002E496 48 04 50 50 shll $4,r0,r0 ! 266: 265 0002E49A 0d e000000004 effffffde3 movl _ldd_1_data+4(r0),_sgl_value_2 ! 267: 266 0002E4A5 # sgl_value_7 = 0x40800000; /* get a dbl precision 1.0 */ ! 268: 267 0002E4A5 0d 8f40800000 effffffdd8 movl $1082130432,_sgl_value_7 ! 269: 268 0002E4B0 # sgl_value_8 = 0; ! 270: 269 0002E4B0 4d effffffdd2 clrl _sgl_value_8 ! 271: 270 0002E4B6 # dbl_expected = ldd_1_data[index].exp; /* get the expected results */ ! 272: 271 0002E4B6 48 04 effffffdcb 50 shll $4,_index,r0 ! 273: 272 0002E4BE 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0 ! 274: 273 0002E4C5 0d a004 effffffdbf movl 4(r0),_dbl_expected+4 ! 275: 274 0002E4CD 0d 60 effffffdb4 movl (r0),_dbl_expected ! 276: 275 0002E4D4 # /* ! 277: 276 0002E4D4 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 278: 277 0002E4D4 # * The force loop flag is set after the first error. ! 279: 278 0002E4D4 # */ ! 280: 279 0002E4D4 # asm("_pipe13_2_lp1:"); ! 281: 280 0002E4D4 _pipe13_2_lp1: ! 282: 281 0002E4D4 # asm("movl _sgl_value_1,r4"); /* move the data to r4/r5 */ ! 283: 282 0002E4D4 0d effffffdae 54 movl _sgl_value_1,r4 ! 284: 283 0002E4DB # asm("movl _sgl_value_2,r5"); ! 285: 284 0002E4DB 0d effffffda7 55 movl _sgl_value_2,r5 ! 286: 285 0002E4E2 # asm("movl _sgl_value_7,r2"); /* move a '1.0' to r4/r5 */ ! 287: 286 0002E4E2 0d effffffda0 52 movl _sgl_value_7,r2 ! 288: 287 0002E4E9 # asm("movl _sgl_value_8,r3"); ! 289: 288 0002E4E9 0d effffffd99 53 movl _sgl_value_8,r3 ! 290: 289 0002E4F0 # asm("ldd r2"); /* load a '1.0' ( 1 ) */ ! 291: 290 0002E4F0 07 52 ldd r2 ! 292: 291 0002E4F2 # asm("nop"); ! 293: 292 0002E4F2 10 nop ! 294: 293 0002E4F3 # asm("muld r4"); /* multiply by op. ( op ) */ ! 295: 294 0002E4F3 e7 54 muld r4 ! 296: 295 0002E4F5 # asm("nop"); ! 297: 296 0002E4F5 10 nop ! 298: 297 0002E4F6 # asm("muld r2"); /* multiply by 1.0 ( op ) */ ! 299: 298 0002E4F6 e7 52 muld r2 ! 300: 299 0002E4F8 # asm("nop"); ! 301: 300 0002E4F8 10 nop ! 302: 301 0002E4F9 # asm("subd r4"); /* subtract the op. ( 0 ) */ ! 303: 302 0002E4F9 d7 54 subd r4 ! 304: 303 0002E4FB # asm("nop"); ! 305: 304 0002E4FB 10 nop ! 306: 305 0002E4FC # asm("addd r4"); /* add the op. ( op ) */ ! 307: 306 0002E4FC c7 54 addd r4 ! 308: 307 0002E4FE # asm("nop"); ! 309: 308 0002E4FE 10 nop ! 310: 309 0002E4FF # asm("std r6"); /* store the result ( op ) */ ! 311: 310 0002E4FF 27 56 std r6 ! 312: 311 0002E501 # if( force_loop ) ! 313: 312 0002E501 5d effffffd81 tstl _force_loop ! 314: 313 0002E507 31 02 jeql L253 ! 315: 314 0002E509 # asm("brb _pipe13_2_lp1");; /* run the loop again */ ! 316: 315 0002E509 11 c9 brb _pipe13_2_lp1 ! 317: 316 0002E50B L253: ! 318: 317 0002E50B # /* ! 319: 318 0002E50B # * verify the results ! 320: 319 0002E50B # */ ! 321: 320 0002E50B # asm("movl r6,_sgl_value_3"); /* get the result */ ! 322: 321 0002E50B 0d 56 effffffd76 movl r6,_sgl_value_3 ! 323: 322 0002E512 # asm("movl r7,_sgl_value_4"); ! 324: 323 0002E512 0d 57 effffffd6f movl r7,_sgl_value_4 ! 325: 324 0002E519 # dbl_st_acc.m = sgl_value_3; ! 326: 325 0002E519 0d effffffd69 effffffd64 movl _sgl_value_3,_dbl_st_acc ! 327: 326 0002E524 # dbl_st_acc.l = sgl_value_4; ! 328: 327 0002E524 0d effffffd5e effffffd5d movl _sgl_value_4,_dbl_st_acc+4 ! 329: 328 0002E52F # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */ ! 330: 329 0002E52F # (dbl_st_acc.l != dbl_expected.l) ) ! 331: 330 0002E52F 1d effffffd53 effffffd4e cmpl _dbl_st_acc,_dbl_expected ! 332: 331 0002E53A 21 0d jneq L9998 ! 333: 332 0002E53C 1d effffffd4a effffffd45 cmpl _dbl_st_acc+4,_dbl_expected+4 ! 334: 333 0002E547 31 42 jeql L254 ! 335: 334 0002E549 L9998: ! 336: 335 0002E549 # { ! 337: 336 0002E549 # errcnt++; /* bump the error count */ ! 338: 337 0002E549 6d effffffd39 incl _errcnt ! 339: 338 0002E54F # if ( prt_error ) ! 340: 339 0002E54F 5d effffffd33 tstl _prt_error ! 341: 340 0002E555 31 0d jeql L255 ! 342: 341 0002E557 # print_pipe13_er("Reg. Data, 1 NOP"); ! 343: 342 0002E557 .data 1 ! 344: 343 00000dd0 * L256: ! 345: 344 00000dd0 * 5265672E20446174612C20312 .ascii "Reg. Data, 1 NOP\0" ! 346: 04E4F5000 ! 347: 345 00000de1 * .text ! 348: 346 0002E557 dd 8f00000dd0 pushl $L256 ! 349: 347 0002E55D fe 08 ef0000090c callf $8,_print_pipe13_er ! 350: 348 0002E564 # if ( halt_flg ) ! 351: 349 0002E564 L255: ! 352: 350 0002E564 5d effffffd1e tstl _halt_flg ! 353: 351 0002E56A 31 0d jeql L257 ! 354: 352 0002E56C # pipe13_er_hlt( subtest ); ! 355: 353 0002E56C dd effffffd16 pushl _subtest ! 356: 354 0002E572 fe 08 ef00000a45 callf $8,_pipe13_er_hlt ! 357: 355 0002E579 # if ( loop_on_err ) { ! 358: 356 0002E579 L257: ! 359: 357 0002E579 5d effffffd09 tstl _loop_on_err ! 360: 358 0002E57F 31 0a jeql L258 ! 361: 359 0002E581 # force_loop = TRUE; /* set the force loop flag */ ! 362: 360 0002E581 0d 01 effffffd00 movl $1,_force_loop ! 363: 361 0002E588 # asm("brw _pipe13_2_lp1"); /* and loop */ ! 364: 362 0002E588 13 ff49 brw _pipe13_2_lp1 ! 365: 363 0002E58B # } ! 366: 364 0002E58B # } /* end of compare error */ ! 367: 365 0002E58B L258: ! 368: 366 0002E58B # } while( index++ < max_ldd_1_index ); ! 369: 367 0002E58B L254: ! 370: 368 0002E58B L251: ! 371: 369 0002E58B 0d effffffcf7 50 movl _index,r0 ! 372: 370 0002E592 6d effffffcf0 incl _index ! 373: 371 0002E598 1d 50 effffffce9 cmpl r0,_max_ldd_1_index ! 374: 372 0002E59F 81 03 13 fed5 jlss L252 ! 375: 373 0002E5A4 L250: ! 376: 374 0002E5A4 # } /* end of subtest 2 */ ! 377: 375 0002E5A4 40 ret#2 ! 378: 376 0002E5A5 .set L246,0x0 ! 379: 377 0002E5A5 L248: ! 380: 378 0002E5A5 13 fec5 jbr L249 ! 381: 379 0002E5A8 .data ! 382: 380 00000db4 * .text ! 383: 381 0002E5A8 .align 1 ! 384: 382 0002E5A8 .globl _pipe13_3 ! 385: 383 0002E5A8 _pipe13_3: ! 386: 384 0002E5A8 0000 .word L259 ! 387: 385 0002E5AA # ! 388: 386 0002E5AA # ! 389: 387 0002E5AA # ! 390: 388 0002E5AA # ! 391: 389 0002E5AA # ! 392: 390 0002E5AA # ! 393: 391 0002E5AA # /************************************************************************ ! 394: 392 0002E5AA # * ! 395: 393 0002E5AA # * SUBTEST 3 ! 396: 394 0002E5AA # * data in registers, 2 NO-OPs ! 397: 395 0002E5AA # * ! 398: 396 0002E5AA # ************************************************************************/ ! 399: 397 0002E5AA # pipe13_3() ! 400: 398 0002E5AA # { ! 401: 399 0002E5AA 13 013d jbr L261 ! 402: 400 0002E5AD L262: ! 403: 401 0002E5AD # force_loop = FALSE; /* clear the force_loop flg */ ! 404: 402 0002E5AD 4d effffffcd5 clrl _force_loop ! 405: 403 0002E5B3 # index = 0; ! 406: 404 0002E5B3 4d effffffccf clrl _index ! 407: 405 0002E5B9 # do ! 408: 406 0002E5B9 L265: ! 409: 407 0002E5B9 # { ! 410: 408 0002E5B9 # sgl_value_1 = ldd_1_data[index].ld.m; /* get the operand's MSW */ ! 411: 409 0002E5B9 0d effffffcc9 50 movl _index,r0 ! 412: 410 0002E5C0 48 04 50 50 shll $4,r0,r0 ! 413: 411 0002E5C4 0d e000000000 effffffcb9 movl _ldd_1_data(r0),_sgl_value_1 ! 414: 412 0002E5CF # sgl_value_2 = ldd_1_data[index].ld.l; /* get the operand's MSW */ ! 415: 413 0002E5CF 0d effffffcb3 50 movl _index,r0 ! 416: 414 0002E5D6 48 04 50 50 shll $4,r0,r0 ! 417: 415 0002E5DA 0d e000000004 effffffca3 movl _ldd_1_data+4(r0),_sgl_value_2 ! 418: 416 0002E5E5 # sgl_value_7 = 0x40800000; /* get a dbl precision 1.0 */ ! 419: 417 0002E5E5 0d 8f40800000 effffffc98 movl $1082130432,_sgl_value_7 ! 420: 418 0002E5F0 # sgl_value_8 = 0; ! 421: 419 0002E5F0 4d effffffc92 clrl _sgl_value_8 ! 422: 420 0002E5F6 # dbl_expected = ldd_1_data[index].exp; /* get the expected results */ ! 423: 421 0002E5F6 48 04 effffffc8b 50 shll $4,_index,r0 ! 424: 422 0002E5FE 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0 ! 425: 423 0002E605 0d a004 effffffc7f movl 4(r0),_dbl_expected+4 ! 426: 424 0002E60D 0d 60 effffffc74 movl (r0),_dbl_expected ! 427: 425 0002E614 # /* ! 428: 426 0002E614 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 429: 427 0002E614 # * The force loop flag is set after the first error. ! 430: 428 0002E614 # */ ! 431: 429 0002E614 # asm("_pipe13_3_lp1:"); ! 432: 430 0002E614 _pipe13_3_lp1: ! 433: 431 0002E614 # asm("movl _sgl_value_1,r4"); /* move the data to r4/r5 */ ! 434: 432 0002E614 0d effffffc6e 54 movl _sgl_value_1,r4 ! 435: 433 0002E61B # asm("movl _sgl_value_2,r5"); ! 436: 434 0002E61B 0d effffffc67 55 movl _sgl_value_2,r5 ! 437: 435 0002E622 # asm("movl _sgl_value_7,r2"); /* move a '1.0' to r4/r5 */ ! 438: 436 0002E622 0d effffffc60 52 movl _sgl_value_7,r2 ! 439: 437 0002E629 # asm("movl _sgl_value_8,r3"); ! 440: 438 0002E629 0d effffffc59 53 movl _sgl_value_8,r3 ! 441: 439 0002E630 # asm("ldd r2"); /* load a '1.0' ( 1 ) */ ! 442: 440 0002E630 07 52 ldd r2 ! 443: 441 0002E632 # asm("nop"); ! 444: 442 0002E632 10 nop ! 445: 443 0002E633 # asm("nop"); ! 446: 444 0002E633 10 nop ! 447: 445 0002E634 # asm("muld r4"); /* multiply by op. ( op ) */ ! 448: 446 0002E634 e7 54 muld r4 ! 449: 447 0002E636 # asm("nop"); ! 450: 448 0002E636 10 nop ! 451: 449 0002E637 # asm("nop"); ! 452: 450 0002E637 10 nop ! 453: 451 0002E638 # asm("muld r2"); /* multiply by 1.0 ( op ) */ ! 454: 452 0002E638 e7 52 muld r2 ! 455: 453 0002E63A # asm("nop"); ! 456: 454 0002E63A 10 nop ! 457: 455 0002E63B # asm("nop"); ! 458: 456 0002E63B 10 nop ! 459: 457 0002E63C # asm("subd r4"); /* subtract the op. ( 0 ) */ ! 460: 458 0002E63C d7 54 subd r4 ! 461: 459 0002E63E # asm("nop"); ! 462: 460 0002E63E 10 nop ! 463: 461 0002E63F # asm("nop"); ! 464: 462 0002E63F 10 nop ! 465: 463 0002E640 # asm("addd r4"); /* add the op. ( op ) */ ! 466: 464 0002E640 c7 54 addd r4 ! 467: 465 0002E642 # asm("nop"); ! 468: 466 0002E642 10 nop ! 469: 467 0002E643 # asm("nop"); ! 470: 468 0002E643 10 nop ! 471: 469 0002E644 # asm("std r6"); /* store the result ( op ) */ ! 472: 470 0002E644 27 56 std r6 ! 473: 471 0002E646 # if( force_loop ) ! 474: 472 0002E646 5d effffffc3c tstl _force_loop ! 475: 473 0002E64C 31 02 jeql L266 ! 476: 474 0002E64E # asm("brb _pipe13_3_lp1");; /* run the loop again */ ! 477: 475 0002E64E 11 c4 brb _pipe13_3_lp1 ! 478: 476 0002E650 L266: ! 479: 477 0002E650 # /* ! 480: 478 0002E650 # * verify the results ! 481: 479 0002E650 # */ ! 482: 480 0002E650 # asm("movl r6,_sgl_value_3"); /* get the result */ ! 483: 481 0002E650 0d 56 effffffc31 movl r6,_sgl_value_3 ! 484: 482 0002E657 # asm("movl r7,_sgl_value_4"); ! 485: 483 0002E657 0d 57 effffffc2a movl r7,_sgl_value_4 ! 486: 484 0002E65E # dbl_st_acc.m = sgl_value_3; ! 487: 485 0002E65E 0d effffffc24 effffffc1f movl _sgl_value_3,_dbl_st_acc ! 488: 486 0002E669 # dbl_st_acc.l = sgl_value_4; ! 489: 487 0002E669 0d effffffc19 effffffc18 movl _sgl_value_4,_dbl_st_acc+4 ! 490: 488 0002E674 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */ ! 491: 489 0002E674 # (dbl_st_acc.l != dbl_expected.l) ) ! 492: 490 0002E674 1d effffffc0e effffffc09 cmpl _dbl_st_acc,_dbl_expected ! 493: 491 0002E67F 21 0d jneq L9997 ! 494: 492 0002E681 1d effffffc05 effffffc00 cmpl _dbl_st_acc+4,_dbl_expected+4 ! 495: 493 0002E68C 31 42 jeql L267 ! 496: 494 0002E68E L9997: ! 497: 495 0002E68E # { ! 498: 496 0002E68E # errcnt++; /* bump the error count */ ! 499: 497 0002E68E 6d effffffbf4 incl _errcnt ! 500: 498 0002E694 # if ( prt_error ) ! 501: 499 0002E694 5d effffffbee tstl _prt_error ! 502: 500 0002E69A 31 0d jeql L268 ! 503: 501 0002E69C # print_pipe13_er("Reg. Data, 2 NOPs"); ! 504: 502 0002E69C .data 1 ! 505: 503 00000de1 * L269: ! 506: 504 00000de1 * 5265672E20446174612C20322 .ascii "Reg. Data, 2 NOPs\0" ! 507: 04E4F507300 ! 508: 505 00000df3 * .text ! 509: 506 0002E69C dd 8f00000de1 pushl $L269 ! 510: 507 0002E6A2 fe 08 ef000007c7 callf $8,_print_pipe13_er ! 511: 508 0002E6A9 # if ( halt_flg ) ! 512: 509 0002E6A9 L268: ! 513: 510 0002E6A9 5d effffffbd9 tstl _halt_flg ! 514: 511 0002E6AF 31 0d jeql L270 ! 515: 512 0002E6B1 # pipe13_er_hlt( subtest ); ! 516: 513 0002E6B1 dd effffffbd1 pushl _subtest ! 517: 514 0002E6B7 fe 08 ef00000900 callf $8,_pipe13_er_hlt ! 518: 515 0002E6BE # if ( loop_on_err ) { ! 519: 516 0002E6BE L270: ! 520: 517 0002E6BE 5d effffffbc4 tstl _loop_on_err ! 521: 518 0002E6C4 31 0a jeql L271 ! 522: 519 0002E6C6 # force_loop = TRUE; /* set the force loop flag */ ! 523: 520 0002E6C6 0d 01 effffffbbb movl $1,_force_loop ! 524: 521 0002E6CD # asm("brw _pipe13_3_lp1"); /* and loop */ ! 525: 522 0002E6CD 13 ff44 brw _pipe13_3_lp1 ! 526: 523 0002E6D0 # } ! 527: 524 0002E6D0 # } /* end of compare error */ ! 528: 525 0002E6D0 L271: ! 529: 526 0002E6D0 # } while( index++ < max_ldd_1_index ); ! 530: 527 0002E6D0 L267: ! 531: 528 0002E6D0 L264: ! 532: 529 0002E6D0 0d effffffbb2 50 movl _index,r0 ! 533: 530 0002E6D7 6d effffffbab incl _index ! 534: 531 0002E6DD 1d 50 effffffba4 cmpl r0,_max_ldd_1_index ! 535: 532 0002E6E4 81 03 13 fed0 jlss L265 ! 536: 533 0002E6E9 L263: ! 537: 534 0002E6E9 # } /* end of subtest 3 */ ! 538: 535 0002E6E9 40 ret#2 ! 539: 536 0002E6EA .set L259,0x0 ! 540: 537 0002E6EA L261: ! 541: 538 0002E6EA 13 fec0 jbr L262 ! 542: 539 0002E6ED .data ! 543: 540 00000db4 * .text ! 544: 541 0002E6ED 00 .align 1 ! 545: 542 0002E6EE .globl _pipe13_4 ! 546: 543 0002E6EE _pipe13_4: ! 547: 544 0002E6EE 0000 .word L272 ! 548: 545 0002E6F0 # ! 549: 546 0002E6F0 # ! 550: 547 0002E6F0 # ! 551: 548 0002E6F0 # ! 552: 549 0002E6F0 # ! 553: 550 0002E6F0 # /************************************************************************ ! 554: 551 0002E6F0 # * ! 555: 552 0002E6F0 # * SUBTEST 4 ! 556: 553 0002E6F0 # * data in registers, 3 NO-OPs ! 557: 554 0002E6F0 # * ! 558: 555 0002E6F0 # ************************************************************************/ ! 559: 556 0002E6F0 # pipe13_4() ! 560: 557 0002E6F0 # { ! 561: 558 0002E6F0 13 0142 jbr L274 ! 562: 559 0002E6F3 L275: ! 563: 560 0002E6F3 # force_loop = FALSE; /* clear the force_loop flg */ ! 564: 561 0002E6F3 4d effffffb8f clrl _force_loop ! 565: 562 0002E6F9 # index = 0; ! 566: 563 0002E6F9 4d effffffb89 clrl _index ! 567: 564 0002E6FF # do ! 568: 565 0002E6FF L278: ! 569: 566 0002E6FF # { ! 570: 567 0002E6FF # sgl_value_1 = ldd_1_data[index].ld.m; /* get the operand's MSW */ ! 571: 568 0002E6FF 0d effffffb83 50 movl _index,r0 ! 572: 569 0002E706 48 04 50 50 shll $4,r0,r0 ! 573: 570 0002E70A 0d e000000000 effffffb73 movl _ldd_1_data(r0),_sgl_value_1 ! 574: 571 0002E715 # sgl_value_2 = ldd_1_data[index].ld.l; /* get the operand's MSW */ ! 575: 572 0002E715 0d effffffb6d 50 movl _index,r0 ! 576: 573 0002E71C 48 04 50 50 shll $4,r0,r0 ! 577: 574 0002E720 0d e000000004 effffffb5d movl _ldd_1_data+4(r0),_sgl_value_2 ! 578: 575 0002E72B # sgl_value_7 = 0x40800000; /* get a dbl precision 1.0 */ ! 579: 576 0002E72B 0d 8f40800000 effffffb52 movl $1082130432,_sgl_value_7 ! 580: 577 0002E736 # sgl_value_8 = 0; ! 581: 578 0002E736 4d effffffb4c clrl _sgl_value_8 ! 582: 579 0002E73C # dbl_expected = ldd_1_data[index].exp; /* get the expected results */ ! 583: 580 0002E73C 48 04 effffffb45 50 shll $4,_index,r0 ! 584: 581 0002E744 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0 ! 585: 582 0002E74B 0d a004 effffffb39 movl 4(r0),_dbl_expected+4 ! 586: 583 0002E753 0d 60 effffffb2e movl (r0),_dbl_expected ! 587: 584 0002E75A # /* ! 588: 585 0002E75A # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 589: 586 0002E75A # * The force loop flag is set after the first error. ! 590: 587 0002E75A # */ ! 591: 588 0002E75A # asm("_pipe13_4_lp1:"); ! 592: 589 0002E75A _pipe13_4_lp1: ! 593: 590 0002E75A # asm("movl _sgl_value_1,r4"); /* move the data to r4/r5 */ ! 594: 591 0002E75A 0d effffffb28 54 movl _sgl_value_1,r4 ! 595: 592 0002E761 # asm("movl _sgl_value_2,r5"); ! 596: 593 0002E761 0d effffffb21 55 movl _sgl_value_2,r5 ! 597: 594 0002E768 # asm("movl _sgl_value_7,r2"); /* move a '1.0' to r4/r5 */ ! 598: 595 0002E768 0d effffffb1a 52 movl _sgl_value_7,r2 ! 599: 596 0002E76F # asm("movl _sgl_value_8,r3"); ! 600: 597 0002E76F 0d effffffb13 53 movl _sgl_value_8,r3 ! 601: 598 0002E776 # asm("ldd r2"); /* load a '1.0' ( 1 ) */ ! 602: 599 0002E776 07 52 ldd r2 ! 603: 600 0002E778 # asm("nop"); ! 604: 601 0002E778 10 nop ! 605: 602 0002E779 # asm("nop"); ! 606: 603 0002E779 10 nop ! 607: 604 0002E77A # asm("nop"); ! 608: 605 0002E77A 10 nop ! 609: 606 0002E77B # asm("muld r4"); /* multiply by op. ( op ) */ ! 610: 607 0002E77B e7 54 muld r4 ! 611: 608 0002E77D # asm("nop"); ! 612: 609 0002E77D 10 nop ! 613: 610 0002E77E # asm("nop"); ! 614: 611 0002E77E 10 nop ! 615: 612 0002E77F # asm("nop"); ! 616: 613 0002E77F 10 nop ! 617: 614 0002E780 # asm("muld r2"); /* multiply by 1.0 ( op ) */ ! 618: 615 0002E780 e7 52 muld r2 ! 619: 616 0002E782 # asm("nop"); ! 620: 617 0002E782 10 nop ! 621: 618 0002E783 # asm("nop"); ! 622: 619 0002E783 10 nop ! 623: 620 0002E784 # asm("nop"); ! 624: 621 0002E784 10 nop ! 625: 622 0002E785 # asm("subd r4"); /* subtract the op. ( 0 ) */ ! 626: 623 0002E785 d7 54 subd r4 ! 627: 624 0002E787 # asm("nop"); ! 628: 625 0002E787 10 nop ! 629: 626 0002E788 # asm("nop"); ! 630: 627 0002E788 10 nop ! 631: 628 0002E789 # asm("nop"); ! 632: 629 0002E789 10 nop ! 633: 630 0002E78A # asm("addd r4"); /* add the op. ( op ) */ ! 634: 631 0002E78A c7 54 addd r4 ! 635: 632 0002E78C # asm("nop"); ! 636: 633 0002E78C 10 nop ! 637: 634 0002E78D # asm("nop"); ! 638: 635 0002E78D 10 nop ! 639: 636 0002E78E # asm("nop"); ! 640: 637 0002E78E 10 nop ! 641: 638 0002E78F # asm("std r6"); /* store the result ( op ) */ ! 642: 639 0002E78F 27 56 std r6 ! 643: 640 0002E791 # if( force_loop ) ! 644: 641 0002E791 5d effffffaf1 tstl _force_loop ! 645: 642 0002E797 31 02 jeql L279 ! 646: 643 0002E799 # asm("brb _pipe13_4_lp1");; /* run the loop again */ ! 647: 644 0002E799 11 bf brb _pipe13_4_lp1 ! 648: 645 0002E79B L279: ! 649: 646 0002E79B # /* ! 650: 647 0002E79B # * verify the results ! 651: 648 0002E79B # */ ! 652: 649 0002E79B # asm("movl r6,_sgl_value_3"); /* get the result */ ! 653: 650 0002E79B 0d 56 effffffae6 movl r6,_sgl_value_3 ! 654: 651 0002E7A2 # asm("movl r7,_sgl_value_4"); ! 655: 652 0002E7A2 0d 57 effffffadf movl r7,_sgl_value_4 ! 656: 653 0002E7A9 # dbl_st_acc.m = sgl_value_3; ! 657: 654 0002E7A9 0d effffffad9 effffffad4 movl _sgl_value_3,_dbl_st_acc ! 658: 655 0002E7B4 # dbl_st_acc.l = sgl_value_4; ! 659: 656 0002E7B4 0d efffffface effffffacd movl _sgl_value_4,_dbl_st_acc+4 ! 660: 657 0002E7BF # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */ ! 661: 658 0002E7BF # (dbl_st_acc.l != dbl_expected.l) ) ! 662: 659 0002E7BF 1d effffffac3 effffffabe cmpl _dbl_st_acc,_dbl_expected ! 663: 660 0002E7CA 21 0d jneq L9996 ! 664: 661 0002E7CC 1d effffffaba effffffab5 cmpl _dbl_st_acc+4,_dbl_expected+4 ! 665: 662 0002E7D7 31 42 jeql L280 ! 666: 663 0002E7D9 L9996: ! 667: 664 0002E7D9 # { ! 668: 665 0002E7D9 # errcnt++; /* bump the error count */ ! 669: 666 0002E7D9 6d effffffaa9 incl _errcnt ! 670: 667 0002E7DF # if ( prt_error ) ! 671: 668 0002E7DF 5d effffffaa3 tstl _prt_error ! 672: 669 0002E7E5 31 0d jeql L281 ! 673: 670 0002E7E7 # print_pipe13_er("Reg. Data, 3 NOPs"); ! 674: 671 0002E7E7 .data 1 ! 675: 672 00000df3 * L282: ! 676: 673 00000df3 * 5265672E20446174612C20332 .ascii "Reg. Data, 3 NOPs\0" ! 677: 04E4F507300 ! 678: 674 00000e05 * .text ! 679: 675 0002E7E7 dd 8f00000df3 pushl $L282 ! 680: 676 0002E7ED fe 08 ef0000067c callf $8,_print_pipe13_er ! 681: 677 0002E7F4 # if ( halt_flg ) ! 682: 678 0002E7F4 L281: ! 683: 679 0002E7F4 5d effffffa8e tstl _halt_flg ! 684: 680 0002E7FA 31 0d jeql L283 ! 685: 681 0002E7FC # pipe13_er_hlt( subtest ); ! 686: 682 0002E7FC dd effffffa86 pushl _subtest ! 687: 683 0002E802 fe 08 ef000007b5 callf $8,_pipe13_er_hlt ! 688: 684 0002E809 # if ( loop_on_err ) { ! 689: 685 0002E809 L283: ! 690: 686 0002E809 5d effffffa79 tstl _loop_on_err ! 691: 687 0002E80F 31 0a jeql L284 ! 692: 688 0002E811 # force_loop = TRUE; /* set the force loop flag */ ! 693: 689 0002E811 0d 01 effffffa70 movl $1,_force_loop ! 694: 690 0002E818 # asm("brw _pipe13_4_lp1"); /* and loop */ ! 695: 691 0002E818 13 ff3f brw _pipe13_4_lp1 ! 696: 692 0002E81B # } ! 697: 693 0002E81B # } /* end of compare error */ ! 698: 694 0002E81B L284: ! 699: 695 0002E81B # } while( index++ < max_ldd_1_index ); ! 700: 696 0002E81B L280: ! 701: 697 0002E81B L277: ! 702: 698 0002E81B 0d effffffa67 50 movl _index,r0 ! 703: 699 0002E822 6d effffffa60 incl _index ! 704: 700 0002E828 1d 50 effffffa59 cmpl r0,_max_ldd_1_index ! 705: 701 0002E82F 81 03 13 fecb jlss L278 ! 706: 702 0002E834 L276: ! 707: 703 0002E834 # } /* end of subtest 4 */ ! 708: 704 0002E834 40 ret#2 ! 709: 705 0002E835 .set L272,0x0 ! 710: 706 0002E835 L274: ! 711: 707 0002E835 13 febb jbr L275 ! 712: 708 0002E838 .data ! 713: 709 00000db4 * .text ! 714: 710 0002E838 .align 1 ! 715: 711 0002E838 .globl _pipe13_5 ! 716: 712 0002E838 _pipe13_5: ! 717: 713 0002E838 0000 .word L285 ! 718: 714 0002E83A # ! 719: 715 0002E83A # ! 720: 716 0002E83A # ! 721: 717 0002E83A # ! 722: 718 0002E83A # ! 723: 719 0002E83A # ! 724: 720 0002E83A # ! 725: 721 0002E83A # ! 726: 722 0002E83A # /************************************************************************ ! 727: 723 0002E83A # * ! 728: 724 0002E83A # * SUBTEST 5 ! 729: 725 0002E83A # * data in cache, no NO-OPs ! 730: 726 0002E83A # * ! 731: 727 0002E83A # ************************************************************************/ ! 732: 728 0002E83A # pipe13_5() ! 733: 729 0002E83A # { ! 734: 730 0002E83A 13 00fd jbr L287 ! 735: 731 0002E83D L288: ! 736: 732 0002E83D # force_loop = FALSE; /* clear the force_loop flg */ ! 737: 733 0002E83D 4d effffffa45 clrl _force_loop ! 738: 734 0002E843 # index = 0; ! 739: 735 0002E843 4d effffffa3f clrl _index ! 740: 736 0002E849 # do ! 741: 737 0002E849 L291: ! 742: 738 0002E849 # { ! 743: 739 0002E849 # dbl_value_1 = ldd_1_data[index].ld; /* get the operand's MSW */ ! 744: 740 0002E849 48 04 effffffa38 50 shll $4,_index,r0 ! 745: 741 0002E851 0c 8f00000000 50 addl2 $_ldd_1_data,r0 ! 746: 742 0002E858 0d a004 effffffa2c movl 4(r0),_dbl_value_1+4 ! 747: 743 0002E860 0d 60 effffffa21 movl (r0),_dbl_value_1 ! 748: 744 0002E867 # dbl_value_2.m = 0x40800000; /* set the '1.0' operand */ ! 749: 745 0002E867 0d 8f40800000 effffffa16 movl $1082130432,_dbl_value_2 ! 750: 746 0002E872 # dbl_value_2.l = 0; ! 751: 747 0002E872 4d effffffa14 clrl _dbl_value_2+4 ! 752: 748 0002E878 # dbl_expected = ldd_1_data[index].exp; /* get the expected results */ ! 753: 749 0002E878 48 04 effffffa09 50 shll $4,_index,r0 ! 754: 750 0002E880 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0 ! 755: 751 0002E887 0d a004 effffff9fd movl 4(r0),_dbl_expected+4 ! 756: 752 0002E88F 0d 60 effffff9f2 movl (r0),_dbl_expected ! 757: 753 0002E896 # /* ! 758: 754 0002E896 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 759: 755 0002E896 # * The force loop flag is set after the first error. ! 760: 756 0002E896 # */ ! 761: 757 0002E896 # asm("_pipe13_5_lp1:"); ! 762: 758 0002E896 _pipe13_5_lp1: ! 763: 759 0002E896 # asm("ldd _dbl_value_2"); /* load a '1.0' ( 1 ) */ ! 764: 760 0002E896 07 effffff9ec ldd _dbl_value_2 ! 765: 761 0002E89C # asm("muld _dbl_value_1"); /* multiply by op. ( op ) */ ! 766: 762 0002E89C e7 effffff9e6 muld _dbl_value_1 ! 767: 763 0002E8A2 # asm("muld _dbl_value_2"); /* multiply by 1.0 ( op ) */ ! 768: 764 0002E8A2 e7 effffff9e0 muld _dbl_value_2 ! 769: 765 0002E8A8 # asm("subd _dbl_value_1"); /* subtract the op. ( 0 ) */ ! 770: 766 0002E8A8 d7 effffff9da subd _dbl_value_1 ! 771: 767 0002E8AE # asm("addd _dbl_value_1"); /* add the op. ( op ) */ ! 772: 768 0002E8AE c7 effffff9d4 addd _dbl_value_1 ! 773: 769 0002E8B4 # asm("std _dbl_st_acc"); /* store the result ( op ) */ ! 774: 770 0002E8B4 27 effffff9ce std _dbl_st_acc ! 775: 771 0002E8BA # if( force_loop ) ! 776: 772 0002E8BA 5d effffff9c8 tstl _force_loop ! 777: 773 0002E8C0 31 02 jeql L292 ! 778: 774 0002E8C2 # asm("brb _pipe13_5_lp1");; /* run the loop again */ ! 779: 775 0002E8C2 11 d2 brb _pipe13_5_lp1 ! 780: 776 0002E8C4 L292: ! 781: 777 0002E8C4 # /* ! 782: 778 0002E8C4 # * verify the results ! 783: 779 0002E8C4 # */ ! 784: 780 0002E8C4 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */ ! 785: 781 0002E8C4 # (dbl_st_acc.l != dbl_expected.l) ) ! 786: 782 0002E8C4 1d effffff9be effffff9b9 cmpl _dbl_st_acc,_dbl_expected ! 787: 783 0002E8CF 21 0d jneq L9995 ! 788: 784 0002E8D1 1d effffff9b5 effffff9b0 cmpl _dbl_st_acc+4,_dbl_expected+4 ! 789: 785 0002E8DC 31 42 jeql L293 ! 790: 786 0002E8DE L9995: ! 791: 787 0002E8DE # { ! 792: 788 0002E8DE # errcnt++; /* bump the error count */ ! 793: 789 0002E8DE 6d effffff9a4 incl _errcnt ! 794: 790 0002E8E4 # if ( prt_error ) ! 795: 791 0002E8E4 5d effffff99e tstl _prt_error ! 796: 792 0002E8EA 31 0d jeql L294 ! 797: 793 0002E8EC # print_pipe13_er("Cache Data, no NOPs"); ! 798: 794 0002E8EC .data 1 ! 799: 795 00000e05 * L295: ! 800: 796 00000e05 * 436163686520446174612C206 .ascii "Cache Data, no NOPs\0" ! 801: E6F204E4F507300 ! 802: 797 00000e19 * .text ! 803: 798 0002E8EC dd 8f00000e05 pushl $L295 ! 804: 799 0002E8F2 fe 08 ef00000577 callf $8,_print_pipe13_er ! 805: 800 0002E8F9 # if ( halt_flg ) ! 806: 801 0002E8F9 L294: ! 807: 802 0002E8F9 5d effffff989 tstl _halt_flg ! 808: 803 0002E8FF 31 0d jeql L296 ! 809: 804 0002E901 # pipe13_er_hlt( subtest ); ! 810: 805 0002E901 dd effffff981 pushl _subtest ! 811: 806 0002E907 fe 08 ef000006b0 callf $8,_pipe13_er_hlt ! 812: 807 0002E90E # if ( loop_on_err ) { ! 813: 808 0002E90E L296: ! 814: 809 0002E90E 5d effffff974 tstl _loop_on_err ! 815: 810 0002E914 31 0a jeql L297 ! 816: 811 0002E916 # force_loop = TRUE; /* set the force loop flag */ ! 817: 812 0002E916 0d 01 effffff96b movl $1,_force_loop ! 818: 813 0002E91D # asm("brw _pipe13_5_lp1"); /* and loop */ ! 819: 814 0002E91D 13 ff76 brw _pipe13_5_lp1 ! 820: 815 0002E920 # } ! 821: 816 0002E920 # } /* end of compare error */ ! 822: 817 0002E920 L297: ! 823: 818 0002E920 # } while( index++ < max_ldd_1_index ); ! 824: 819 0002E920 L293: ! 825: 820 0002E920 L290: ! 826: 821 0002E920 0d effffff962 50 movl _index,r0 ! 827: 822 0002E927 6d effffff95b incl _index ! 828: 823 0002E92D 1d 50 effffff954 cmpl r0,_max_ldd_1_index ! 829: 824 0002E934 81 03 13 ff10 jlss L291 ! 830: 825 0002E939 L289: ! 831: 826 0002E939 # } /* end of subtest 5 */ ! 832: 827 0002E939 40 ret#2 ! 833: 828 0002E93A .set L285,0x0 ! 834: 829 0002E93A L287: ! 835: 830 0002E93A 13 ff00 jbr L288 ! 836: 831 0002E93D .data ! 837: 832 00000db4 * .text ! 838: 833 0002E93D 00 .align 1 ! 839: 834 0002E93E .globl _pipe13_6 ! 840: 835 0002E93E _pipe13_6: ! 841: 836 0002E93E 0000 .word L298 ! 842: 837 0002E940 # ! 843: 838 0002E940 # ! 844: 839 0002E940 # ! 845: 840 0002E940 # ! 846: 841 0002E940 # ! 847: 842 0002E940 # ! 848: 843 0002E940 # ! 849: 844 0002E940 # ! 850: 845 0002E940 # /************************************************************************ ! 851: 846 0002E940 # * ! 852: 847 0002E940 # * SUBTEST 6 ! 853: 848 0002E940 # * data in cache, 1 NO-OP ! 854: 849 0002E940 # * ! 855: 850 0002E940 # ************************************************************************/ ! 856: 851 0002E940 # pipe13_6() ! 857: 852 0002E940 # { ! 858: 853 0002E940 13 0102 jbr L300 ! 859: 854 0002E943 L301: ! 860: 855 0002E943 # force_loop = FALSE; /* clear the force_loop flg */ ! 861: 856 0002E943 4d effffff93f clrl _force_loop ! 862: 857 0002E949 # index = 0; ! 863: 858 0002E949 4d effffff939 clrl _index ! 864: 859 0002E94F # do ! 865: 860 0002E94F L304: ! 866: 861 0002E94F # { ! 867: 862 0002E94F # dbl_value_1 = ldd_1_data[index].ld; /* get the operand's MSW */ ! 868: 863 0002E94F 48 04 effffff932 50 shll $4,_index,r0 ! 869: 864 0002E957 0c 8f00000000 50 addl2 $_ldd_1_data,r0 ! 870: 865 0002E95E 0d a004 effffff926 movl 4(r0),_dbl_value_1+4 ! 871: 866 0002E966 0d 60 effffff91b movl (r0),_dbl_value_1 ! 872: 867 0002E96D # dbl_value_2.m = 0x40800000; /* set the '1.0' operand */ ! 873: 868 0002E96D 0d 8f40800000 effffff910 movl $1082130432,_dbl_value_2 ! 874: 869 0002E978 # dbl_value_2.l = 0; ! 875: 870 0002E978 4d effffff90e clrl _dbl_value_2+4 ! 876: 871 0002E97E # dbl_expected = ldd_1_data[index].exp; /* get the expected results */ ! 877: 872 0002E97E 48 04 effffff903 50 shll $4,_index,r0 ! 878: 873 0002E986 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0 ! 879: 874 0002E98D 0d a004 effffff8f7 movl 4(r0),_dbl_expected+4 ! 880: 875 0002E995 0d 60 effffff8ec movl (r0),_dbl_expected ! 881: 876 0002E99C # /* ! 882: 877 0002E99C # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 883: 878 0002E99C # * The force loop flag is set after the first error. ! 884: 879 0002E99C # */ ! 885: 880 0002E99C # asm("_pipe13_6_lp1:"); ! 886: 881 0002E99C _pipe13_6_lp1: ! 887: 882 0002E99C # asm("ldd _dbl_value_2"); /* load a '1.0' ( 1 ) */ ! 888: 883 0002E99C 07 effffff8e6 ldd _dbl_value_2 ! 889: 884 0002E9A2 # asm("nop"); ! 890: 885 0002E9A2 10 nop ! 891: 886 0002E9A3 # asm("muld _dbl_value_1"); /* multiply by op. ( op ) */ ! 892: 887 0002E9A3 e7 effffff8df muld _dbl_value_1 ! 893: 888 0002E9A9 # asm("nop"); ! 894: 889 0002E9A9 10 nop ! 895: 890 0002E9AA # asm("muld _dbl_value_2"); /* multiply by 1.0 ( op ) */ ! 896: 891 0002E9AA e7 effffff8d8 muld _dbl_value_2 ! 897: 892 0002E9B0 # asm("nop"); ! 898: 893 0002E9B0 10 nop ! 899: 894 0002E9B1 # asm("subd _dbl_value_1"); /* subtract the op. ( 0 ) */ ! 900: 895 0002E9B1 d7 effffff8d1 subd _dbl_value_1 ! 901: 896 0002E9B7 # asm("nop"); ! 902: 897 0002E9B7 10 nop ! 903: 898 0002E9B8 # asm("addd _dbl_value_1"); /* add the op. ( op ) */ ! 904: 899 0002E9B8 c7 effffff8ca addd _dbl_value_1 ! 905: 900 0002E9BE # asm("nop"); ! 906: 901 0002E9BE 10 nop ! 907: 902 0002E9BF # asm("std _dbl_st_acc"); /* store the result ( op ) */ ! 908: 903 0002E9BF 27 effffff8c3 std _dbl_st_acc ! 909: 904 0002E9C5 # if( force_loop ) ! 910: 905 0002E9C5 5d effffff8bd tstl _force_loop ! 911: 906 0002E9CB 31 02 jeql L305 ! 912: 907 0002E9CD # asm("brb _pipe13_6_lp1");; /* run the loop again */ ! 913: 908 0002E9CD 11 cd brb _pipe13_6_lp1 ! 914: 909 0002E9CF L305: ! 915: 910 0002E9CF # /* ! 916: 911 0002E9CF # * verify the results ! 917: 912 0002E9CF # */ ! 918: 913 0002E9CF # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */ ! 919: 914 0002E9CF # (dbl_st_acc.l != dbl_expected.l) ) ! 920: 915 0002E9CF 1d effffff8b3 effffff8ae cmpl _dbl_st_acc,_dbl_expected ! 921: 916 0002E9DA 21 0d jneq L9994 ! 922: 917 0002E9DC 1d effffff8aa effffff8a5 cmpl _dbl_st_acc+4,_dbl_expected+4 ! 923: 918 0002E9E7 31 42 jeql L306 ! 924: 919 0002E9E9 L9994: ! 925: 920 0002E9E9 # { ! 926: 921 0002E9E9 # errcnt++; /* bump the error count */ ! 927: 922 0002E9E9 6d effffff899 incl _errcnt ! 928: 923 0002E9EF # if ( prt_error ) ! 929: 924 0002E9EF 5d effffff893 tstl _prt_error ! 930: 925 0002E9F5 31 0d jeql L307 ! 931: 926 0002E9F7 # print_pipe13_er("Cache Data, 1 NOP"); ! 932: 927 0002E9F7 .data 1 ! 933: 928 00000e19 * L308: ! 934: 929 00000e19 * 436163686520446174612C203 .ascii "Cache Data, 1 NOP\0" ! 935: 1204E4F5000 ! 936: 930 00000e2b * .text ! 937: 931 0002E9F7 dd 8f00000e19 pushl $L308 ! 938: 932 0002E9FD fe 08 ef0000046c callf $8,_print_pipe13_er ! 939: 933 0002EA04 # if ( halt_flg ) ! 940: 934 0002EA04 L307: ! 941: 935 0002EA04 5d effffff87e tstl _halt_flg ! 942: 936 0002EA0A 31 0d jeql L309 ! 943: 937 0002EA0C # pipe13_er_hlt( subtest ); ! 944: 938 0002EA0C dd effffff876 pushl _subtest ! 945: 939 0002EA12 fe 08 ef000005a5 callf $8,_pipe13_er_hlt ! 946: 940 0002EA19 # if ( loop_on_err ) { ! 947: 941 0002EA19 L309: ! 948: 942 0002EA19 5d effffff869 tstl _loop_on_err ! 949: 943 0002EA1F 31 0a jeql L310 ! 950: 944 0002EA21 # force_loop = TRUE; /* set the force loop flag */ ! 951: 945 0002EA21 0d 01 effffff860 movl $1,_force_loop ! 952: 946 0002EA28 # asm("brw _pipe13_6_lp1"); /* and loop */ ! 953: 947 0002EA28 13 ff71 brw _pipe13_6_lp1 ! 954: 948 0002EA2B # } ! 955: 949 0002EA2B # } /* end of compare error */ ! 956: 950 0002EA2B L310: ! 957: 951 0002EA2B # } while( index++ < max_ldd_1_index ); ! 958: 952 0002EA2B L306: ! 959: 953 0002EA2B L303: ! 960: 954 0002EA2B 0d effffff857 50 movl _index,r0 ! 961: 955 0002EA32 6d effffff850 incl _index ! 962: 956 0002EA38 1d 50 effffff849 cmpl r0,_max_ldd_1_index ! 963: 957 0002EA3F 81 03 13 ff0b jlss L304 ! 964: 958 0002EA44 L302: ! 965: 959 0002EA44 # } /* end of subtest 6 */ ! 966: 960 0002EA44 40 ret#2 ! 967: 961 0002EA45 .set L298,0x0 ! 968: 962 0002EA45 L300: ! 969: 963 0002EA45 13 fefb jbr L301 ! 970: 964 0002EA48 .data ! 971: 965 00000db4 * .text ! 972: 966 0002EA48 .align 1 ! 973: 967 0002EA48 .globl _pipe13_7 ! 974: 968 0002EA48 _pipe13_7: ! 975: 969 0002EA48 0000 .word L311 ! 976: 970 0002EA4A # ! 977: 971 0002EA4A # ! 978: 972 0002EA4A # ! 979: 973 0002EA4A # ! 980: 974 0002EA4A # ! 981: 975 0002EA4A # ! 982: 976 0002EA4A # ! 983: 977 0002EA4A # /************************************************************************ ! 984: 978 0002EA4A # * ! 985: 979 0002EA4A # * SUBTEST 7 ! 986: 980 0002EA4A # * data in cache, 2 NO-OPs ! 987: 981 0002EA4A # * ! 988: 982 0002EA4A # ************************************************************************/ ! 989: 983 0002EA4A # pipe13_7() ! 990: 984 0002EA4A # { ! 991: 985 0002EA4A 13 0107 jbr L313 ! 992: 986 0002EA4D L314: ! 993: 987 0002EA4D # force_loop = FALSE; /* clear the force_loop flg */ ! 994: 988 0002EA4D 4d effffff835 clrl _force_loop ! 995: 989 0002EA53 # index = 0; ! 996: 990 0002EA53 4d effffff82f clrl _index ! 997: 991 0002EA59 # do ! 998: 992 0002EA59 L317: ! 999: 993 0002EA59 # { ! 1000: 994 0002EA59 # dbl_value_1 = ldd_1_data[index].ld; /* get the operand's MSW */ ! 1001: 995 0002EA59 48 04 effffff828 50 shll $4,_index,r0 ! 1002: 996 0002EA61 0c 8f00000000 50 addl2 $_ldd_1_data,r0 ! 1003: 997 0002EA68 0d a004 effffff81c movl 4(r0),_dbl_value_1+4 ! 1004: 998 0002EA70 0d 60 effffff811 movl (r0),_dbl_value_1 ! 1005: 999 0002EA77 # dbl_value_2.m = 0x40800000; /* set the '1.0' operand */ ! 1006: 1000 0002EA77 0d 8f40800000 effffff806 movl $1082130432,_dbl_value_2 ! 1007: 1001 0002EA82 # dbl_value_2.l = 0; ! 1008: 1002 0002EA82 4d effffff804 clrl _dbl_value_2+4 ! 1009: 1003 0002EA88 # dbl_expected = ldd_1_data[index].exp; /* get the expected results */ ! 1010: 1004 0002EA88 48 04 effffff7f9 50 shll $4,_index,r0 ! 1011: 1005 0002EA90 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0 ! 1012: 1006 0002EA97 0d a004 effffff7ed movl 4(r0),_dbl_expected+4 ! 1013: 1007 0002EA9F 0d 60 effffff7e2 movl (r0),_dbl_expected ! 1014: 1008 0002EAA6 # /* ! 1015: 1009 0002EAA6 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1016: 1010 0002EAA6 # * The force loop flag is set after the first error. ! 1017: 1011 0002EAA6 # */ ! 1018: 1012 0002EAA6 # asm("_pipe13_7_lp1:"); ! 1019: 1013 0002EAA6 _pipe13_7_lp1: ! 1020: 1014 0002EAA6 # asm("ldd _dbl_value_2"); /* load a '1.0' ( 1 ) */ ! 1021: 1015 0002EAA6 07 effffff7dc ldd _dbl_value_2 ! 1022: 1016 0002EAAC # asm("nop"); ! 1023: 1017 0002EAAC 10 nop ! 1024: 1018 0002EAAD # asm("nop"); ! 1025: 1019 0002EAAD 10 nop ! 1026: 1020 0002EAAE # asm("muld _dbl_value_1"); /* multiply by op. ( op ) */ ! 1027: 1021 0002EAAE e7 effffff7d4 muld _dbl_value_1 ! 1028: 1022 0002EAB4 # asm("nop"); ! 1029: 1023 0002EAB4 10 nop ! 1030: 1024 0002EAB5 # asm("nop"); ! 1031: 1025 0002EAB5 10 nop ! 1032: 1026 0002EAB6 # asm("muld _dbl_value_2"); /* multiply by 1.0 ( op ) */ ! 1033: 1027 0002EAB6 e7 effffff7cc muld _dbl_value_2 ! 1034: 1028 0002EABC # asm("nop"); ! 1035: 1029 0002EABC 10 nop ! 1036: 1030 0002EABD # asm("nop"); ! 1037: 1031 0002EABD 10 nop ! 1038: 1032 0002EABE # asm("subd _dbl_value_1"); /* subtract the op. ( 0 ) */ ! 1039: 1033 0002EABE d7 effffff7c4 subd _dbl_value_1 ! 1040: 1034 0002EAC4 # asm("nop"); ! 1041: 1035 0002EAC4 10 nop ! 1042: 1036 0002EAC5 # asm("nop"); ! 1043: 1037 0002EAC5 10 nop ! 1044: 1038 0002EAC6 # asm("addd _dbl_value_1"); /* add the op. ( op ) */ ! 1045: 1039 0002EAC6 c7 effffff7bc addd _dbl_value_1 ! 1046: 1040 0002EACC # asm("nop"); ! 1047: 1041 0002EACC 10 nop ! 1048: 1042 0002EACD # asm("nop"); ! 1049: 1043 0002EACD 10 nop ! 1050: 1044 0002EACE # asm("std _dbl_st_acc"); /* store the result ( op ) */ ! 1051: 1045 0002EACE 27 effffff7b4 std _dbl_st_acc ! 1052: 1046 0002EAD4 # if( force_loop ) ! 1053: 1047 0002EAD4 5d effffff7ae tstl _force_loop ! 1054: 1048 0002EADA 31 02 jeql L318 ! 1055: 1049 0002EADC # asm("brb _pipe13_7_lp1");; /* run the loop again */ ! 1056: 1050 0002EADC 11 c8 brb _pipe13_7_lp1 ! 1057: 1051 0002EADE L318: ! 1058: 1052 0002EADE # /* ! 1059: 1053 0002EADE # * verify the results ! 1060: 1054 0002EADE # */ ! 1061: 1055 0002EADE # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */ ! 1062: 1056 0002EADE # (dbl_st_acc.l != dbl_expected.l) ) ! 1063: 1057 0002EADE 1d effffff7a4 effffff79f cmpl _dbl_st_acc,_dbl_expected ! 1064: 1058 0002EAE9 21 0d jneq L9993 ! 1065: 1059 0002EAEB 1d effffff79b effffff796 cmpl _dbl_st_acc+4,_dbl_expected+4 ! 1066: 1060 0002EAF6 31 42 jeql L319 ! 1067: 1061 0002EAF8 L9993: ! 1068: 1062 0002EAF8 # { ! 1069: 1063 0002EAF8 # errcnt++; /* bump the error count */ ! 1070: 1064 0002EAF8 6d effffff78a incl _errcnt ! 1071: 1065 0002EAFE # if ( prt_error ) ! 1072: 1066 0002EAFE 5d effffff784 tstl _prt_error ! 1073: 1067 0002EB04 31 0d jeql L320 ! 1074: 1068 0002EB06 # print_pipe13_er("Cache Data, 2 NOPs"); ! 1075: 1069 0002EB06 .data 1 ! 1076: 1070 00000e2b * L321: ! 1077: 1071 00000e2b * 436163686520446174612C203 .ascii "Cache Data, 2 NOPs\0" ! 1078: 2204E4F507300 ! 1079: 1072 00000e3e * .text ! 1080: 1073 0002EB06 dd 8f00000e2b pushl $L321 ! 1081: 1074 0002EB0C fe 08 ef0000035d callf $8,_print_pipe13_er ! 1082: 1075 0002EB13 # if ( halt_flg ) ! 1083: 1076 0002EB13 L320: ! 1084: 1077 0002EB13 5d effffff76f tstl _halt_flg ! 1085: 1078 0002EB19 31 0d jeql L322 ! 1086: 1079 0002EB1B # pipe13_er_hlt( subtest ); ! 1087: 1080 0002EB1B dd effffff767 pushl _subtest ! 1088: 1081 0002EB21 fe 08 ef00000496 callf $8,_pipe13_er_hlt ! 1089: 1082 0002EB28 # if ( loop_on_err ) { ! 1090: 1083 0002EB28 L322: ! 1091: 1084 0002EB28 5d effffff75a tstl _loop_on_err ! 1092: 1085 0002EB2E 31 0a jeql L323 ! 1093: 1086 0002EB30 # force_loop = TRUE; /* set the force loop flag */ ! 1094: 1087 0002EB30 0d 01 effffff751 movl $1,_force_loop ! 1095: 1088 0002EB37 # asm("brw _pipe13_7_lp1"); /* and loop */ ! 1096: 1089 0002EB37 13 ff6c brw _pipe13_7_lp1 ! 1097: 1090 0002EB3A # } ! 1098: 1091 0002EB3A # } /* end of compare error */ ! 1099: 1092 0002EB3A L323: ! 1100: 1093 0002EB3A # } while( index++ < max_ldd_1_index ); ! 1101: 1094 0002EB3A L319: ! 1102: 1095 0002EB3A L316: ! 1103: 1096 0002EB3A 0d effffff748 50 movl _index,r0 ! 1104: 1097 0002EB41 6d effffff741 incl _index ! 1105: 1098 0002EB47 1d 50 effffff73a cmpl r0,_max_ldd_1_index ! 1106: 1099 0002EB4E 81 03 13 ff06 jlss L317 ! 1107: 1100 0002EB53 L315: ! 1108: 1101 0002EB53 # } /* end of subtest 7 */ ! 1109: 1102 0002EB53 40 ret#2 ! 1110: 1103 0002EB54 .set L311,0x0 ! 1111: 1104 0002EB54 L313: ! 1112: 1105 0002EB54 13 fef6 jbr L314 ! 1113: 1106 0002EB57 .data ! 1114: 1107 00000db4 * .text ! 1115: 1108 0002EB57 00 .align 1 ! 1116: 1109 0002EB58 .globl _pipe13_8 ! 1117: 1110 0002EB58 _pipe13_8: ! 1118: 1111 0002EB58 0000 .word L324 ! 1119: 1112 0002EB5A # ! 1120: 1113 0002EB5A # ! 1121: 1114 0002EB5A # ! 1122: 1115 0002EB5A # ! 1123: 1116 0002EB5A # ! 1124: 1117 0002EB5A # ! 1125: 1118 0002EB5A # ! 1126: 1119 0002EB5A # ! 1127: 1120 0002EB5A # /************************************************************************ ! 1128: 1121 0002EB5A # * ! 1129: 1122 0002EB5A # * SUBTEST 8 ! 1130: 1123 0002EB5A # * data in cache, 3 NO-OPs ! 1131: 1124 0002EB5A # * ! 1132: 1125 0002EB5A # ************************************************************************/ ! 1133: 1126 0002EB5A # pipe13_8() ! 1134: 1127 0002EB5A # { ! 1135: 1128 0002EB5A 13 010c jbr L326 ! 1136: 1129 0002EB5D L327: ! 1137: 1130 0002EB5D # force_loop = FALSE; /* clear the force_loop flg */ ! 1138: 1131 0002EB5D 4d effffff725 clrl _force_loop ! 1139: 1132 0002EB63 # index = 0; ! 1140: 1133 0002EB63 4d effffff71f clrl _index ! 1141: 1134 0002EB69 # do ! 1142: 1135 0002EB69 L330: ! 1143: 1136 0002EB69 # { ! 1144: 1137 0002EB69 # dbl_value_1 = ldd_1_data[index].ld; /* get the operand's MSW */ ! 1145: 1138 0002EB69 48 04 effffff718 50 shll $4,_index,r0 ! 1146: 1139 0002EB71 0c 8f00000000 50 addl2 $_ldd_1_data,r0 ! 1147: 1140 0002EB78 0d a004 effffff70c movl 4(r0),_dbl_value_1+4 ! 1148: 1141 0002EB80 0d 60 effffff701 movl (r0),_dbl_value_1 ! 1149: 1142 0002EB87 # dbl_value_2.m = 0x40800000; /* set the '1.0' operand */ ! 1150: 1143 0002EB87 0d 8f40800000 effffff6f6 movl $1082130432,_dbl_value_2 ! 1151: 1144 0002EB92 # dbl_value_2.l = 0; ! 1152: 1145 0002EB92 4d effffff6f4 clrl _dbl_value_2+4 ! 1153: 1146 0002EB98 # dbl_expected = ldd_1_data[index].exp; /* get the expected results */ ! 1154: 1147 0002EB98 48 04 effffff6e9 50 shll $4,_index,r0 ! 1155: 1148 0002EBA0 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0 ! 1156: 1149 0002EBA7 0d a004 effffff6dd movl 4(r0),_dbl_expected+4 ! 1157: 1150 0002EBAF 0d 60 effffff6d2 movl (r0),_dbl_expected ! 1158: 1151 0002EBB6 # /* ! 1159: 1152 0002EBB6 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1160: 1153 0002EBB6 # * The force loop flag is set after the first error. ! 1161: 1154 0002EBB6 # */ ! 1162: 1155 0002EBB6 # asm("_pipe13_8_lp1:"); ! 1163: 1156 0002EBB6 _pipe13_8_lp1: ! 1164: 1157 0002EBB6 # asm("ldd _dbl_value_2"); /* load a '1.0' ( 1 ) */ ! 1165: 1158 0002EBB6 07 effffff6cc ldd _dbl_value_2 ! 1166: 1159 0002EBBC # asm("nop"); ! 1167: 1160 0002EBBC 10 nop ! 1168: 1161 0002EBBD # asm("nop"); ! 1169: 1162 0002EBBD 10 nop ! 1170: 1163 0002EBBE # asm("nop"); ! 1171: 1164 0002EBBE 10 nop ! 1172: 1165 0002EBBF # asm("muld _dbl_value_1"); /* multiply by op. ( op ) */ ! 1173: 1166 0002EBBF e7 effffff6c3 muld _dbl_value_1 ! 1174: 1167 0002EBC5 # asm("nop"); ! 1175: 1168 0002EBC5 10 nop ! 1176: 1169 0002EBC6 # asm("nop"); ! 1177: 1170 0002EBC6 10 nop ! 1178: 1171 0002EBC7 # asm("nop"); ! 1179: 1172 0002EBC7 10 nop ! 1180: 1173 0002EBC8 # asm("muld _dbl_value_2"); /* multiply by 1.0 ( op ) */ ! 1181: 1174 0002EBC8 e7 effffff6ba muld _dbl_value_2 ! 1182: 1175 0002EBCE # asm("nop"); ! 1183: 1176 0002EBCE 10 nop ! 1184: 1177 0002EBCF # asm("nop"); ! 1185: 1178 0002EBCF 10 nop ! 1186: 1179 0002EBD0 # asm("nop"); ! 1187: 1180 0002EBD0 10 nop ! 1188: 1181 0002EBD1 # asm("subd _dbl_value_1"); /* subtract the op. ( 0 ) */ ! 1189: 1182 0002EBD1 d7 effffff6b1 subd _dbl_value_1 ! 1190: 1183 0002EBD7 # asm("nop"); ! 1191: 1184 0002EBD7 10 nop ! 1192: 1185 0002EBD8 # asm("nop"); ! 1193: 1186 0002EBD8 10 nop ! 1194: 1187 0002EBD9 # asm("nop"); ! 1195: 1188 0002EBD9 10 nop ! 1196: 1189 0002EBDA # asm("addd _dbl_value_1"); /* add the op. ( op ) */ ! 1197: 1190 0002EBDA c7 effffff6a8 addd _dbl_value_1 ! 1198: 1191 0002EBE0 # asm("nop"); ! 1199: 1192 0002EBE0 10 nop ! 1200: 1193 0002EBE1 # asm("nop"); ! 1201: 1194 0002EBE1 10 nop ! 1202: 1195 0002EBE2 # asm("nop"); ! 1203: 1196 0002EBE2 10 nop ! 1204: 1197 0002EBE3 # asm("std _dbl_st_acc"); /* store the result ( op ) */ ! 1205: 1198 0002EBE3 27 effffff69f std _dbl_st_acc ! 1206: 1199 0002EBE9 # if( force_loop ) ! 1207: 1200 0002EBE9 5d effffff699 tstl _force_loop ! 1208: 1201 0002EBEF 31 02 jeql L331 ! 1209: 1202 0002EBF1 # asm("brb _pipe13_8_lp1");; /* run the loop again */ ! 1210: 1203 0002EBF1 11 c3 brb _pipe13_8_lp1 ! 1211: 1204 0002EBF3 L331: ! 1212: 1205 0002EBF3 # /* ! 1213: 1206 0002EBF3 # * verify the results ! 1214: 1207 0002EBF3 # */ ! 1215: 1208 0002EBF3 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */ ! 1216: 1209 0002EBF3 # (dbl_st_acc.l != dbl_expected.l) ) ! 1217: 1210 0002EBF3 1d effffff68f effffff68a cmpl _dbl_st_acc,_dbl_expected ! 1218: 1211 0002EBFE 21 0d jneq L9992 ! 1219: 1212 0002EC00 1d effffff686 effffff681 cmpl _dbl_st_acc+4,_dbl_expected+4 ! 1220: 1213 0002EC0B 31 42 jeql L332 ! 1221: 1214 0002EC0D L9992: ! 1222: 1215 0002EC0D # { ! 1223: 1216 0002EC0D # errcnt++; /* bump the error count */ ! 1224: 1217 0002EC0D 6d effffff675 incl _errcnt ! 1225: 1218 0002EC13 # if ( prt_error ) ! 1226: 1219 0002EC13 5d effffff66f tstl _prt_error ! 1227: 1220 0002EC19 31 0d jeql L333 ! 1228: 1221 0002EC1B # print_pipe13_er("Cache Data, 3 NOPs"); ! 1229: 1222 0002EC1B .data 1 ! 1230: 1223 00000e3e * L334: ! 1231: 1224 00000e3e * 436163686520446174612C203 .ascii "Cache Data, 3 NOPs\0" ! 1232: 3204E4F507300 ! 1233: 1225 00000e51 * .text ! 1234: 1226 0002EC1B dd 8f00000e3e pushl $L334 ! 1235: 1227 0002EC21 fe 08 ef00000248 callf $8,_print_pipe13_er ! 1236: 1228 0002EC28 # if ( halt_flg ) ! 1237: 1229 0002EC28 L333: ! 1238: 1230 0002EC28 5d effffff65a tstl _halt_flg ! 1239: 1231 0002EC2E 31 0d jeql L335 ! 1240: 1232 0002EC30 # pipe13_er_hlt( subtest ); ! 1241: 1233 0002EC30 dd effffff652 pushl _subtest ! 1242: 1234 0002EC36 fe 08 ef00000381 callf $8,_pipe13_er_hlt ! 1243: 1235 0002EC3D # if ( loop_on_err ) { ! 1244: 1236 0002EC3D L335: ! 1245: 1237 0002EC3D 5d effffff645 tstl _loop_on_err ! 1246: 1238 0002EC43 31 0a jeql L336 ! 1247: 1239 0002EC45 # force_loop = TRUE; /* set the force loop flag */ ! 1248: 1240 0002EC45 0d 01 effffff63c movl $1,_force_loop ! 1249: 1241 0002EC4C # asm("brw _pipe13_8_lp1"); /* and loop */ ! 1250: 1242 0002EC4C 13 ff67 brw _pipe13_8_lp1 ! 1251: 1243 0002EC4F # } ! 1252: 1244 0002EC4F # } /* end of compare error */ ! 1253: 1245 0002EC4F L336: ! 1254: 1246 0002EC4F # } while( index++ < max_ldd_1_index ); ! 1255: 1247 0002EC4F L332: ! 1256: 1248 0002EC4F L329: ! 1257: 1249 0002EC4F 0d effffff633 50 movl _index,r0 ! 1258: 1250 0002EC56 6d effffff62c incl _index ! 1259: 1251 0002EC5C 1d 50 effffff625 cmpl r0,_max_ldd_1_index ! 1260: 1252 0002EC63 81 03 13 ff01 jlss L330 ! 1261: 1253 0002EC68 L328: ! 1262: 1254 0002EC68 # } /* end of subtest 8 */ ! 1263: 1255 0002EC68 40 ret#2 ! 1264: 1256 0002EC69 .set L324,0x0 ! 1265: 1257 0002EC69 L326: ! 1266: 1258 0002EC69 13 fef1 jbr L327 ! 1267: 1259 0002EC6C .data ! 1268: 1260 00000db4 * .text ! 1269: 1261 0002EC6C .align 1 ! 1270: 1262 0002EC6C .globl _pipe13_9 ! 1271: 1263 0002EC6C _pipe13_9: ! 1272: 1264 0002EC6C 0000 .word L337 ! 1273: 1265 0002EC6E # ! 1274: 1266 0002EC6E # ! 1275: 1267 0002EC6E # ! 1276: 1268 0002EC6E # ! 1277: 1269 0002EC6E # ! 1278: 1270 0002EC6E # ! 1279: 1271 0002EC6E # ! 1280: 1272 0002EC6E # /****************************************************************************** ! 1281: 1273 0002EC6E # * ! 1282: 1274 0002EC6E # * SUBTEST 9 ! 1283: 1275 0002EC6E # * ! 1284: 1276 0002EC6E # * Get the data via the FRAME POINTER ( quad word indexed ) ! 1285: 1277 0002EC6E # * ! 1286: 1278 0002EC6E # * ADDRESSES OF DATA OPERANDS INDEX DATA ! 1287: 1279 0002EC6E # * pointer_data,-4 ( FP+24 ) 3 the STF result goes here ! 1288: 1280 0002EC6E # * pointer_data-8,-12 ( FP+16 ) 2 <operand data> ! 1289: 1281 0002EC6E # * pointer_data-16,-20 ( FP+8 ) 1 < '1.0' data> ! 1290: 1282 0002EC6E # * pointer_data-24,-28 ( FP ) 0 point the frame pointer here ! 1291: 1283 0002EC6E # * ! 1292: 1284 0002EC6E # * NOTE: The double precision instructions are using Quad Word indexing. ! 1293: 1285 0002EC6E # ******************************************************************************/ ! 1294: 1286 0002EC6E # pipe13_9() ! 1295: 1287 0002EC6E # { ! 1296: 1288 0002EC6E 13 01fc jbr L339 ! 1297: 1289 0002EC71 L340: ! 1298: 1290 0002EC71 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */ ! 1299: 1291 0002EC71 ed 6d effffff610 moval (r13),_pre_event_fp ! 1300: 1292 0002EC78 # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */ ! 1301: 1293 0002EC78 ed 6e effffff609 moval (r14),_pre_event_sp ! 1302: 1294 0002EC7F # force_loop = FALSE; /* clear force_loop flag */ ! 1303: 1295 0002EC7F 4d effffff603 clrl _force_loop ! 1304: 1296 0002EC85 # index = 0; ! 1305: 1297 0002EC85 4d effffff5fd clrl _index ! 1306: 1298 0002EC8B # do ! 1307: 1299 0002EC8B L343: ! 1308: 1300 0002EC8B # { ! 1309: 1301 0002EC8B # sgl_value_1 = ldd_1_data[index].ld.m; /* get operand 1's MSW */ ! 1310: 1302 0002EC8B 0d effffff5f7 50 movl _index,r0 ! 1311: 1303 0002EC92 48 04 50 50 shll $4,r0,r0 ! 1312: 1304 0002EC96 0d e000000000 effffff5e7 movl _ldd_1_data(r0),_sgl_value_1 ! 1313: 1305 0002ECA1 # sgl_value_2 = ldd_1_data[index].ld.l; /* get operand 1's LSW */ ! 1314: 1306 0002ECA1 0d effffff5e1 50 movl _index,r0 ! 1315: 1307 0002ECA8 48 04 50 50 shll $4,r0,r0 ! 1316: 1308 0002ECAC 0d e000000004 effffff5d1 movl _ldd_1_data+4(r0),_sgl_value_2 ! 1317: 1309 0002ECB7 # sgl_value_7 = 0x40800000; /* get the '1.0' data */ ! 1318: 1310 0002ECB7 0d 8f40800000 effffff5c6 movl $1082130432,_sgl_value_7 ! 1319: 1311 0002ECC2 # sgl_value_8 = 0; ! 1320: 1312 0002ECC2 4d effffff5c0 clrl _sgl_value_8 ! 1321: 1313 0002ECC8 # dbl_expected = ldd_1_data[index].exp; /* get expected results */ ! 1322: 1314 0002ECC8 48 04 effffff5b9 50 shll $4,_index,r0 ! 1323: 1315 0002ECD0 0c 8f00000008 50 addl2 $_ldd_1_data+8,r0 ! 1324: 1316 0002ECD7 0d a004 effffff5ad movl 4(r0),_dbl_expected+4 ! 1325: 1317 0002ECDF 0d 60 effffff5a2 movl (r0),_dbl_expected ! 1326: 1318 0002ECE6 # /* ! 1327: 1319 0002ECE6 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1328: 1320 0002ECE6 # * The force loop flag is set after the first error. ! 1329: 1321 0002ECE6 # */ ! 1330: 1322 0002ECE6 # asm("_pipe13_9_lp1:"); ! 1331: 1323 0002ECE6 _pipe13_9_lp1: ! 1332: 1324 0002ECE6 # asm("moval _pointer_data,_sgl_value_9");/* get store data's addr */ ! 1333: 1325 0002ECE6 ed effffff59c effffff597 moval _pointer_data,_sgl_value_9 ! 1334: 1326 0002ECF1 # sgl_value_9 -= 8; ! 1335: 1327 0002ECF1 2c 08 effffff590 subl2 $8,_sgl_value_9 ! 1336: 1328 0002ECF8 # asm("movl _sgl_value_2,*_sgl_value_9"); /* set the operand's LSW */ ! 1337: 1329 0002ECF8 0d effffff58a fffffff585 movl _sgl_value_2,*_sgl_value_9 ! 1338: 1330 0002ED03 # sgl_value_9 -= 4; ! 1339: 1331 0002ED03 2c 04 effffff57e subl2 $4,_sgl_value_9 ! 1340: 1332 0002ED0A # asm("movl _sgl_value_1,*_sgl_value_9"); /* set the operand's MSW */ ! 1341: 1333 0002ED0A 0d effffff578 fffffff573 movl _sgl_value_1,*_sgl_value_9 ! 1342: 1334 0002ED15 # sgl_value_9 -= 4; ! 1343: 1335 0002ED15 2c 04 effffff56c subl2 $4,_sgl_value_9 ! 1344: 1336 0002ED1C # asm("movl _sgl_value_8,*_sgl_value_9"); /* set '1.0' data's LSW */ ! 1345: 1337 0002ED1C 0d effffff566 fffffff561 movl _sgl_value_8,*_sgl_value_9 ! 1346: 1338 0002ED27 # sgl_value_9 -= 4; ! 1347: 1339 0002ED27 2c 04 effffff55a subl2 $4,_sgl_value_9 ! 1348: 1340 0002ED2E # asm("movl _sgl_value_7,*_sgl_value_9"); /* set '1.0' data's MSW */ ! 1349: 1341 0002ED2E 0d effffff554 fffffff54f movl _sgl_value_7,*_sgl_value_9 ! 1350: 1342 0002ED39 # sgl_value_9 -= 8; /* get the FP addr to use */ ! 1351: 1343 0002ED39 2c 08 effffff548 subl2 $8,_sgl_value_9 ! 1352: 1344 0002ED40 # asm("movl _sgl_value_9,r13"); /* set the FRAME POINTER */ ! 1353: 1345 0002ED40 0d effffff542 5d movl _sgl_value_9,r13 ! 1354: 1346 0002ED47 # asm("movl $1,r5"); /* r5 index = 1 quadwords */ ! 1355: 1347 0002ED47 0d 01 55 movl $1,r5 ! 1356: 1348 0002ED4A # asm("movl $2,r6"); /* r6 index = 2 quadwords */ ! 1357: 1349 0002ED4A 0d 02 56 movl $2,r6 ! 1358: 1350 0002ED4D # asm("movl $3,r7"); /* r7 index = 3 quadwords */ ! 1359: 1351 0002ED4D 0d 03 57 movl $3,r7 ! 1360: 1352 0002ED50 # asm("ldd (r13)[r5]"); /* load a '1.0' ( 1 ) */ ! 1361: 1353 0002ED50 07 456d ldd (r13)[r5] ! 1362: 1354 0002ED53 # asm("muld (r13)[r6]"); /* multiply by op. ( op ) */ ! 1363: 1355 0002ED53 e7 466d muld (r13)[r6] ! 1364: 1356 0002ED56 # asm("muld (r13)[r5]"); /* multiply by 1.0 ( op ) */ ! 1365: 1357 0002ED56 e7 456d muld (r13)[r5] ! 1366: 1358 0002ED59 # asm("subd (r13)[r6]"); /* subtract the op. ( 0 ) */ ! 1367: 1359 0002ED59 d7 466d subd (r13)[r6] ! 1368: 1360 0002ED5C # asm("addd (r13)[r6]"); /* add the op. ( op ) */ ! 1369: 1361 0002ED5C c7 466d addd (r13)[r6] ! 1370: 1362 0002ED5F # asm("std (r13)[r7]"); /* store the result ( op ) */ ! 1371: 1363 0002ED5F 27 476d std (r13)[r7] ! 1372: 1364 0002ED62 # if( force_loop ) ! 1373: 1365 0002ED62 5d effffff520 tstl _force_loop ! 1374: 1366 0002ED68 31 03 jeql L344 ! 1375: 1367 0002ED6A # asm("brw _pipe13_9_lp1"); /* run the loop again */ ! 1376: 1368 0002ED6A 13 ff79 brw _pipe13_9_lp1 ! 1377: 1369 0002ED6D # /* ! 1378: 1370 0002ED6D # * verify the results ! 1379: 1371 0002ED6D # */ ! 1380: 1372 0002ED6D # asm("moval (r13),_sgl_value_10"); /* save the frame pointer */ ! 1381: 1373 0002ED6D L344: ! 1382: 1374 0002ED6D ed 6d effffff514 moval (r13),_sgl_value_10 ! 1383: 1375 0002ED74 # asm("movl _pointer_data,_sgl_value_4"); /* save the LSW stored */ ! 1384: 1376 0002ED74 0d effffff50e effffff509 movl _pointer_data,_sgl_value_4 ! 1385: 1377 0002ED7F # asm("movl _pointer_data-4,_sgl_value_3"); /* and the MSW */ ! 1386: 1378 0002ED7F 0d effffff4ff effffff4fe movl _pointer_data-4,_sgl_value_3 ! 1387: 1379 0002ED8A # if( (sgl_value_3 != dbl_expected.m) || /* verify the result... */ ! 1388: 1380 0002ED8A # (sgl_value_4 != dbl_expected.l) || /* verify the result... */ ! 1389: 1381 0002ED8A # (sgl_value_10 != sgl_value_9) ) /* ... and the final FP */ ! 1390: 1382 0002ED8A 1d effffff4f8 effffff4f3 cmpl _sgl_value_3,_dbl_expected ! 1391: 1383 0002ED95 21 1d jneq L9991 ! 1392: 1384 0002ED97 1d effffff4eb effffff4ea cmpl _sgl_value_4,_dbl_expected+4 ! 1393: 1385 0002EDA2 21 10 jneq L9991 ! 1394: 1386 0002EDA4 1d effffff4de effffff4d9 cmpl _sgl_value_10,_sgl_value_9 ! 1395: 1387 0002EDAF 21 03 13 0091 jeql L345 ! 1396: 1388 0002EDB4 L9991: ! 1397: 1389 0002EDB4 # { ! 1398: 1390 0002EDB4 # asm("movl _pre_event_fp,r13"); /* restore frame pointer */ ! 1399: 1391 0002EDB4 0d effffff4ce 5d movl _pre_event_fp,r13 ! 1400: 1392 0002EDBB # asm("movl _pre_event_sp,r14"); /* restore stack pointer */ ! 1401: 1393 0002EDBB 0d effffff4c7 5e movl _pre_event_sp,r14 ! 1402: 1394 0002EDC2 # errcnt++; /* bump the error count */ ! 1403: 1395 0002EDC2 6d effffff4c0 incl _errcnt ! 1404: 1396 0002EDC8 # if ( prt_error ) { ! 1405: 1397 0002EDC8 5d effffff4ba tstl _prt_error ! 1406: 1398 0002EDCE 31 4e jeql L346 ! 1407: 1399 0002EDD0 # print_pipe13_er("indexed FP addressing.\n"); ! 1408: 1400 0002EDD0 .data 1 ! 1409: 1401 00000e51 * L347: ! 1410: 1402 00000e51 * 696E646578656420465020616 .ascii "indexed FP addressing.\12\0" ! 1411: 46472657373696E672E0A00 ! 1412: 1403 00000e69 * .text ! 1413: 1404 0002EDD0 dd 8f00000e51 pushl $L347 ! 1414: 1405 0002EDD6 fe 08 ef00000093 callf $8,_print_pipe13_er ! 1415: 1406 0002EDDD # writes("final Frame Pointer = "); ! 1416: 1407 0002EDDD .data 1 ! 1417: 1408 00000e69 * L348: ! 1418: 1409 00000e69 * 66696E616C204672616D65205 .ascii "final Frame Pointer = \0" ! 1419: 06F696E746572203D2000 ! 1420: 1410 00000e80 * .text ! 1421: 1411 0002EDDD dd 8f00000e69 pushl $L348 ! 1422: 1412 0002EDE3 fe 08 effffff49e callf $8,_writes ! 1423: 1413 0002EDEA # write32h( sgl_value_10 ); ! 1424: 1414 0002EDEA dd effffff498 pushl _sgl_value_10 ! 1425: 1415 0002EDF0 fe 08 effffff491 callf $8,_write32h ! 1426: 1416 0002EDF7 # writes(", expected FP = "); ! 1427: 1417 0002EDF7 .data 1 ! 1428: 1418 00000e80 * L350: ! 1429: 1419 00000e80 * 2C20206578706563746564204 .ascii ", expected FP = \0" ! 1430: 650203D2000 ! 1431: 1420 00000e92 * .text ! 1432: 1421 0002EDF7 dd 8f00000e80 pushl $L350 ! 1433: 1422 0002EDFD fe 08 effffff484 callf $8,_writes ! 1434: 1423 0002EE04 # write32h( sgl_value_9 ); ! 1435: 1424 0002EE04 dd effffff47e pushl _sgl_value_9 ! 1436: 1425 0002EE0A fe 08 effffff477 callf $8,_write32h ! 1437: 1426 0002EE11 # writes(" \n"); ! 1438: 1427 0002EE11 .data 1 ! 1439: 1428 00000e92 * L351: ! 1440: 1429 00000e92 * 200A00 .ascii " \12\0" ! 1441: 1430 00000e95 * .text ! 1442: 1431 0002EE11 dd 8f00000e92 pushl $L351 ! 1443: 1432 0002EE17 fe 08 effffff46a callf $8,_writes ! 1444: 1433 0002EE1E # } ! 1445: 1434 0002EE1E # if ( halt_flg ) ! 1446: 1435 0002EE1E L346: ! 1447: 1436 0002EE1E 5d effffff464 tstl _halt_flg ! 1448: 1437 0002EE24 31 0d jeql L352 ! 1449: 1438 0002EE26 # pipe13_er_hlt( subtest ); ! 1450: 1439 0002EE26 dd effffff45c pushl _subtest ! 1451: 1440 0002EE2C fe 08 ef0000018b callf $8,_pipe13_er_hlt ! 1452: 1441 0002EE33 # if ( loop_on_err ) { ! 1453: 1442 0002EE33 L352: ! 1454: 1443 0002EE33 5d effffff44f tstl _loop_on_err ! 1455: 1444 0002EE39 31 0a jeql L353 ! 1456: 1445 0002EE3B # force_loop = TRUE; /* set the force loop flag */ ! 1457: 1446 0002EE3B 0d 01 effffff446 movl $1,_force_loop ! 1458: 1447 0002EE42 # asm("brw _pipe13_9_lp1"); /* and loop */ ! 1459: 1448 0002EE42 13 fea1 brw _pipe13_9_lp1 ! 1460: 1449 0002EE45 # } ! 1461: 1450 0002EE45 # } /* end of compare error */ ! 1462: 1451 0002EE45 L353: ! 1463: 1452 0002EE45 # } while( index++ < max_ldd_1_index ); ! 1464: 1453 0002EE45 L345: ! 1465: 1454 0002EE45 L342: ! 1466: 1455 0002EE45 0d effffff43d 50 movl _index,r0 ! 1467: 1456 0002EE4C 6d effffff436 incl _index ! 1468: 1457 0002EE52 1d 50 effffff42f cmpl r0,_max_ldd_1_index ! 1469: 1458 0002EE59 81 03 13 fe2d jlss L343 ! 1470: 1459 0002EE5E L341: ! 1471: 1460 0002EE5E # asm("movl _pre_event_fp,r13"); /* restore the frame pointer */ ! 1472: 1461 0002EE5E 0d effffff424 5d movl _pre_event_fp,r13 ! 1473: 1462 0002EE65 # asm("movl _pre_event_sp,r14"); /* restore the stack pointer */ ! 1474: 1463 0002EE65 0d effffff41d 5e movl _pre_event_sp,r14 ! 1475: 1464 0002EE6C # } /* end of subtest 9 */ ! 1476: 1465 0002EE6C 40 ret#2 ! 1477: 1466 0002EE6D .set L337,0x0 ! 1478: 1467 0002EE6D L339: ! 1479: 1468 0002EE6D 13 fe01 jbr L340 ! 1480: 1469 0002EE70 .data ! 1481: 1470 00000db4 * .text ! 1482: 1471 0002EE70 .align 1 ! 1483: 1472 0002EE70 .globl _print_pipe13_er ! 1484: 1473 0002EE70 _print_pipe13_er: ! 1485: 1474 0002EE70 0000 .word L354 ! 1486: 1475 0002EE72 # ! 1487: 1476 0002EE72 # ! 1488: 1477 0002EE72 # /****************************************************************************** ! 1489: 1478 0002EE72 # * ! 1490: 1479 0002EE72 # * ERROR ROUTINE ! 1491: 1480 0002EE72 # * ! 1492: 1481 0002EE72 # * print an error in the following form ! 1493: 1482 0002EE72 # * ! 1494: 1483 0002EE72 # *operand = xxxxxxxx xxxxxxxx, final Acc = xxxxxxxx xxxxxxxx, index = dd ! 1495: 1484 0002EE72 # * expected Acc = xxxxxxxx xxxxxxxx ! 1496: 1485 0002EE72 # * ! 1497: 1486 0002EE72 # ******************************************************************************/ ! 1498: 1487 0002EE72 # print_pipe13_er(msg) ! 1499: 1488 0002EE72 # char *msg; ! 1500: 1489 0002EE72 # { ! 1501: 1490 0002EE72 13 0145 jbr L356 ! 1502: 1491 0002EE75 L357: ! 1503: 1492 0002EE75 # writes(" \n"); /* start a new print line */ ! 1504: 1493 0002EE75 .data 1 ! 1505: 1494 00000e95 * L358: ! 1506: 1495 00000e95 * 200A00 .ascii " \12\0" ! 1507: 1496 00000e98 * .text ! 1508: 1497 0002EE75 dd 8f00000e95 pushl $L358 ! 1509: 1498 0002EE7B fe 08 effffff406 callf $8,_writes ! 1510: 1499 0002EE82 # writes("cycle: "); ! 1511: 1500 0002EE82 .data 1 ! 1512: 1501 00000e98 * L359: ! 1513: 1502 00000e98 * 6379636C653A2000 .ascii "cycle: \0" ! 1514: 1503 00000ea0 * .text ! 1515: 1504 0002EE82 dd 8f00000e98 pushl $L359 ! 1516: 1505 0002EE88 fe 08 effffff3f9 callf $8,_writes ! 1517: 1506 0002EE8F # writed( cycle ); ! 1518: 1507 0002EE8F dd effffff3f3 pushl _cycle ! 1519: 1508 0002EE95 fe 08 effffff3ec callf $8,_writed ! 1520: 1509 0002EE9C # writes(" test "); ! 1521: 1510 0002EE9C .data 1 ! 1522: 1511 00000ea0 * L361: ! 1523: 1512 00000ea0 * 20746573742000 .ascii " test \0" ! 1524: 1513 00000ea7 * .text ! 1525: 1514 0002EE9C dd 8f00000ea0 pushl $L361 ! 1526: 1515 0002EEA2 fe 08 effffff3df callf $8,_writes ! 1527: 1516 0002EEA9 # writed( test_no ); ! 1528: 1517 0002EEA9 dd effffff3d9 pushl _test_no ! 1529: 1518 0002EEAF fe 08 effffff3d2 callf $8,_writed ! 1530: 1519 0002EEB6 # writes(" (Pipe 13), subtest "); ! 1531: 1520 0002EEB6 .data 1 ! 1532: 1521 00000ea7 * L362: ! 1533: 1522 00000ea7 * 20202850697065203133292C2 .ascii " (Pipe 13), subtest \0" ! 1534: 0737562746573742000 ! 1535: 1523 00000ebd * .text ! 1536: 1524 0002EEB6 dd 8f00000ea7 pushl $L362 ! 1537: 1525 0002EEBC fe 08 effffff3c5 callf $8,_writes ! 1538: 1526 0002EEC3 # writed( subtest ); ! 1539: 1527 0002EEC3 dd effffff3bf pushl _subtest ! 1540: 1528 0002EEC9 fe 08 effffff3b8 callf $8,_writed ! 1541: 1529 0002EED0 # writes(" error - "); ! 1542: 1530 0002EED0 .data 1 ! 1543: 1531 00000ebd * L363: ! 1544: 1532 00000ebd * 206572726F72202D2000 .ascii " error - \0" ! 1545: 1533 00000ec7 * .text ! 1546: 1534 0002EED0 dd 8f00000ebd pushl $L363 ! 1547: 1535 0002EED6 fe 08 effffff3ab callf $8,_writes ! 1548: 1536 0002EEDD # writes( msg ); ! 1549: 1537 0002EEDD dd ad04 pushl 4(fp) ! 1550: 1538 0002EEE0 fe 08 effffff3a1 callf $8,_writes ! 1551: 1539 0002EEE7 # writec('\n'); ! 1552: 1540 0002EEE7 dd 0a pushl $10 ! 1553: 1541 0002EEE9 fe 08 effffff398 callf $8,_writec ! 1554: 1542 0002EEF0 # writes(" LDD(1.0), MULD(op), MULD(1.0), SUBD(op), ADDD(op), STD\n"); ! 1555: 1543 0002EEF0 .data 1 ! 1556: 1544 00000ec7 * L365: ! 1557: 1545 00000ec7 * 204C444428312E30292C204D5 .ascii " LDD(1.0), MULD(op), MULD(1.0), SUBD(op), ADDD(op), STD\12\0" ! 1558: 54C44286F70292C204D554C44 ! 1559: 28312E30292C2053554244286 ! 1560: F70292C2041444444286F7029 ! 1561: 2C205354440A00 ! 1562: 1546 00000f00 * .text ! 1563: 1547 0002EEF0 dd 8f00000ec7 pushl $L365 ! 1564: 1548 0002EEF6 fe 08 effffff38b callf $8,_writes ! 1565: 1549 0002EEFD # writes("operand = "); ! 1566: 1550 0002EEFD .data 1 ! 1567: 1551 00000f00 * L366: ! 1568: 1552 00000f00 * 6F706572616E64203D2000 .ascii "operand = \0" ! 1569: 1553 00000f0b * .text ! 1570: 1554 0002EEFD dd 8f00000f00 pushl $L366 ! 1571: 1555 0002EF03 fe 08 effffff37e callf $8,_writes ! 1572: 1556 0002EF0A # write32h( dbl_ld_acc.m ); ! 1573: 1557 0002EF0A dd effffff378 pushl _dbl_ld_acc ! 1574: 1558 0002EF10 fe 08 effffff371 callf $8,_write32h ! 1575: 1559 0002EF17 # writec(' '); ! 1576: 1560 0002EF17 dd 20 pushl $32 ! 1577: 1561 0002EF19 fe 08 effffff368 callf $8,_writec ! 1578: 1562 0002EF20 # write32h( dbl_ld_acc.l ); ! 1579: 1563 0002EF20 dd effffff366 pushl _dbl_ld_acc+4 ! 1580: 1564 0002EF26 fe 08 effffff35b callf $8,_write32h ! 1581: 1565 0002EF2D # writes(", final Acc = "); ! 1582: 1566 0002EF2D .data 1 ! 1583: 1567 00000f0b * L367: ! 1584: 1568 00000f0b * 2C20202066696E616C2041636 .ascii ", final Acc = \0" ! 1585: 3203D2000 ! 1586: 1569 00000f1c * .text ! 1587: 1570 0002EF2D dd 8f00000f0b pushl $L367 ! 1588: 1571 0002EF33 fe 08 effffff34e callf $8,_writes ! 1589: 1572 0002EF3A # write32h( dbl_st_acc.m ); ! 1590: 1573 0002EF3A dd effffff348 pushl _dbl_st_acc ! 1591: 1574 0002EF40 fe 08 effffff341 callf $8,_write32h ! 1592: 1575 0002EF47 # writec(' '); ! 1593: 1576 0002EF47 dd 20 pushl $32 ! 1594: 1577 0002EF49 fe 08 effffff338 callf $8,_writec ! 1595: 1578 0002EF50 # write32h( dbl_st_acc.l ); ! 1596: 1579 0002EF50 dd effffff336 pushl _dbl_st_acc+4 ! 1597: 1580 0002EF56 fe 08 effffff32b callf $8,_write32h ! 1598: 1581 0002EF5D # writes(", index = "); ! 1599: 1582 0002EF5D .data 1 ! 1600: 1583 00000f1c * L368: ! 1601: 1584 00000f1c * 2C202020696E646578203D200 .ascii ", index = \0" ! 1602: 0 ! 1603: 1585 00000f29 * .text ! 1604: 1586 0002EF5D dd 8f00000f1c pushl $L368 ! 1605: 1587 0002EF63 fe 08 effffff31e callf $8,_writes ! 1606: 1588 0002EF6A # writed( index ); ! 1607: 1589 0002EF6A dd effffff318 pushl _index ! 1608: 1590 0002EF70 fe 08 effffff311 callf $8,_writed ! 1609: 1591 0002EF77 # writec('\n'); ! 1610: 1592 0002EF77 dd 0a pushl $10 ! 1611: 1593 0002EF79 fe 08 effffff308 callf $8,_writec ! 1612: 1594 0002EF80 # writes(" expected Acc = "); ! 1613: 1595 0002EF80 .data 1 ! 1614: 1596 00000f29 * L369: ! 1615: 1597 00000f29 * 2020202020202020202020202 .ascii " expected Acc = \0" ! 1616: 0202020202020202020202020 ! 1617: 2020206578706563746564204 ! 1618: 16363203D2000 ! 1619: 1598 00000f55 * .text ! 1620: 1599 0002EF80 dd 8f00000f29 pushl $L369 ! 1621: 1600 0002EF86 fe 08 effffff2fb callf $8,_writes ! 1622: 1601 0002EF8D # write32h( dbl_expected.m ); ! 1623: 1602 0002EF8D dd effffff2f5 pushl _dbl_expected ! 1624: 1603 0002EF93 fe 08 effffff2ee callf $8,_write32h ! 1625: 1604 0002EF9A # writec(' '); ! 1626: 1605 0002EF9A dd 20 pushl $32 ! 1627: 1606 0002EF9C fe 08 effffff2e5 callf $8,_writec ! 1628: 1607 0002EFA3 # write32h( dbl_expected.l ); ! 1629: 1608 0002EFA3 dd effffff2e3 pushl _dbl_expected+4 ! 1630: 1609 0002EFA9 fe 08 effffff2d8 callf $8,_write32h ! 1631: 1610 0002EFB0 # writec('\n'); ! 1632: 1611 0002EFB0 dd 0a pushl $10 ! 1633: 1612 0002EFB2 fe 08 effffff2cf callf $8,_writec ! 1634: 1613 0002EFB9 # } ! 1635: 1614 0002EFB9 40 ret#2 ! 1636: 1615 0002EFBA .set L354,0x0 ! 1637: 1616 0002EFBA L356: ! 1638: 1617 0002EFBA 13 feb8 jbr L357 ! 1639: 1618 0002EFBD .data ! 1640: 1619 00000db4 * .text ! 1641: 1620 0002EFBD 00 .align 1 ! 1642: 1621 0002EFBE .globl _pipe13_er_hlt ! 1643: 1622 0002EFBE _pipe13_er_hlt: ! 1644: 1623 0002EFBE 0000 .word L370 ! 1645: 1624 0002EFC0 # ! 1646: 1625 0002EFC0 # ! 1647: 1626 0002EFC0 # ! 1648: 1627 0002EFC0 # ! 1649: 1628 0002EFC0 # ! 1650: 1629 0002EFC0 # /****************************************************************************** ! 1651: 1630 0002EFC0 # * ! 1652: 1631 0002EFC0 # * HALT ON ERROR ROUTINE ! 1653: 1632 0002EFC0 # * ! 1654: 1633 0002EFC0 # * halt with the necessary information saved in the registers ! 1655: 1634 0002EFC0 # * ! 1656: 1635 0002EFC0 # ******************************************************************************/ ! 1657: 1636 0002EFC0 # pipe13_er_hlt( subtest ) ! 1658: 1637 0002EFC0 # int subtest; ! 1659: 1638 0002EFC0 # { ! 1660: 1639 0002EFC0 11 75 jbr L372 ! 1661: 1640 0002EFC2 L373: ! 1662: 1641 0002EFC2 # sgl_value_3 = dbl_st_acc.m; ! 1663: 1642 0002EFC2 0d effffff2c0 effffff2bb movl _dbl_st_acc,_sgl_value_3 ! 1664: 1643 0002EFCD # sgl_value_4 = dbl_st_acc.l; ! 1665: 1644 0002EFCD 0d effffff2b9 effffff2b0 movl _dbl_st_acc+4,_sgl_value_4 ! 1666: 1645 0002EFD8 # asm("movl _test_no,r0"); /* r0 = test number */ ! 1667: 1646 0002EFD8 0d effffff2aa 50 movl _test_no,r0 ! 1668: 1647 0002EFDF # asm("movl _subtest,r1"); /* r1 = subtest number */ ! 1669: 1648 0002EFDF 0d effffff2a3 51 movl _subtest,r1 ! 1670: 1649 0002EFE6 # asm("movl $1,r2"); /* r2 = error code */ ! 1671: 1650 0002EFE6 0d 01 52 movl $1,r2 ! 1672: 1651 0002EFE9 # asm("movl _cycle,r3"); /* r3 = cycle count */ ! 1673: 1652 0002EFE9 0d effffff299 53 movl _cycle,r3 ! 1674: 1653 0002EFF0 # asm("movl _sgl_value_1,r4"); /* r4 = MSW operand loaded */ ! 1675: 1654 0002EFF0 0d effffff292 54 movl _sgl_value_1,r4 ! 1676: 1655 0002EFF7 # asm("movl _sgl_value_2,r5"); /* r5 = LSW operand loaded */ ! 1677: 1656 0002EFF7 0d effffff28b 55 movl _sgl_value_2,r5 ! 1678: 1657 0002EFFE # asm("movl _sgl_value_3,r6"); /* r6 = MSW operand stored */ ! 1679: 1658 0002EFFE 0d effffff284 56 movl _sgl_value_3,r6 ! 1680: 1659 0002F005 # asm("movl _sgl_value_4,r7"); /* r7 = LSW operand stored */ ! 1681: 1660 0002F005 0d effffff27d 57 movl _sgl_value_4,r7 ! 1682: 1661 0002F00C # asm("movl _sgl_value_5,r8"); /* r8 = MSW operand expect */ ! 1683: 1662 0002F00C 0d effffff276 58 movl _sgl_value_5,r8 ! 1684: 1663 0002F013 # asm("movl _sgl_value_6,r9"); /* r9 = LSW operand expect */ ! 1685: 1664 0002F013 0d effffff26f 59 movl _sgl_value_6,r9 ! 1686: 1665 0002F01A # asm("movl _index,r10"); /* r10 = data index */ ! 1687: 1666 0002F01A 0d effffff268 5a movl _index,r10 ! 1688: 1667 0002F021 # if( subtest == 9 ) { ! 1689: 1668 0002F021 1d ad04 09 cmpl 4(fp),$9 ! 1690: 1669 0002F025 21 0e jneq L374 ! 1691: 1670 0002F027 # asm("movl _sgl_value_10,r11"); /* r11 = final FP value */ ! 1692: 1671 0002F027 0d effffff25b 5b movl _sgl_value_10,r11 ! 1693: 1672 0002F02E # asm("movl _sgl_value_9,r12"); /* r12 = expected FP value */ ! 1694: 1673 0002F02E 0d effffff254 5c movl _sgl_value_9,r12 ! 1695: 1674 0002F035 # }; ! 1696: 1675 0002F035 L374: ! 1697: 1676 0002F035 # asm(".globl _pipe13_1_hlt"); ! 1698: 1677 0002F035 .globl _pipe13_1_hlt ! 1699: 1678 0002F035 # asm("_pipe13_1_hlt:"); /* PC after the halt */ ! 1700: 1679 0002F035 _pipe13_1_hlt: ! 1701: 1680 0002F035 # asm("halt"); /* HALT ... */ ! 1702: 1681 0002F035 00 halt ! 1703: 1682 0002F036 # } /* end of halt on error */ ! 1704: 1683 0002F036 40 ret#2 ! 1705: 1684 0002F037 .set L370,0x0 ! 1706: 1685 0002F037 L372: ! 1707: 1686 0002F037 11 89 jbr L373 ! 1708: 1687 0002F039 .data ! 1709: 1687 0005D2C1 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.