|
|
1.1 ! root 1: 1 00000000 LL0: ! 2: 2 00000000 .data ! 3: 3 00000fe4 * .text ! 4: 4 00000000 .align 1 ! 5: 5 00000000 .globl _pipe_14 ! 6: 6 00000000 _pipe_14: ! 7: 7 0002F03C 0000 .word L215 ! 8: 8 0002F03E # #include "fpp_defs.h" ! 9: 9 0002F03E # ! 10: 10 0002F03E # ! 11: 11 0002F03E # /***************************************************************************** ! 12: 12 0002F03E # * ! 13: 13 0002F03E # * DBL PIPELINE TEST #14 MONITOR ! 14: 14 0002F03E # * ! 15: 15 0002F03E # * This test will do: ! 16: 16 0002F03E # * ! 17: 17 0002F03E # * LDD(0) ADDD(op1) DIVD(op2) MULD(1) STD ! 18: 18 0002F03E # * ! 19: 19 0002F03E # * where 'op1' and 'op2' are the DIVD data patterns. ! 20: 20 0002F03E # *****************************************************************************/ ! 21: 21 0002F03E # pipe_14() ! 22: 22 0002F03E # { ! 23: 23 0002F03E 13 009b jbr L217 ! 24: 24 0002F041 L218: ! 25: 25 0002F041 # asm(".globl _pipeline_14_t"); ! 26: 26 0002F041 .globl _pipeline_14_t ! 27: 27 0002F041 # asm("_pipeline_14_t:"); /* entry address */ ! 28: 28 0002F041 _pipeline_14_t: ! 29: 29 0002F041 # if( (cycle == 1) && (prt_hdrs) ) /* print headers on 1st cycle */ ! 30: 30 0002F041 1d effffffff5 01 cmpl _cycle,$1 ! 31: 31 0002F048 21 15 jneq L219 ! 32: 32 0002F04A 5d efffffffec tstl _prt_hdrs ! 33: 33 0002F050 31 0d jeql L219 ! 34: 34 0002F052 # { ! 35: 35 0002F052 # writes(" PIPE_14"); ! 36: 36 0002F052 .data 1 ! 37: 37 00000fe4 * L221: ! 38: 38 00000fe4 * 20504950455F313400 .ascii " PIPE_14\0" ! 39: 39 00000fed * .text ! 40: 40 0002F052 dd 8f00000fe4 pushl $L221 ! 41: 41 0002F058 fe 08 efffffffdd callf $8,_writes ! 42: 42 0002F05F # } ! 43: 43 0002F05F # subtest = 1; ! 44: 44 0002F05F L219: ! 45: 45 0002F05F 0d 01 efffffffd6 movl $1,_subtest ! 46: 46 0002F066 # pipe14_1(); /* data in REGs, no NOPs */ ! 47: 47 0002F066 fe 04 ef00000073 callf $4,_pipe14_1 ! 48: 48 0002F06D # subtest++; /* increment subtest num */ ! 49: 49 0002F06D 6d efffffffc9 incl _subtest ! 50: 50 0002F073 # pipe14_2(); /* data in REGs, 1 NOP */ ! 51: 51 0002F073 fe 04 ef000001dc callf $4,_pipe14_2 ! 52: 52 0002F07A # subtest++; /* increment subtest num */ ! 53: 53 0002F07A 6d efffffffbc incl _subtest ! 54: 54 0002F080 # pipe14_3(); /* data in REGs, 2 NOPs */ ! 55: 55 0002F080 fe 04 ef00000349 callf $4,_pipe14_3 ! 56: 56 0002F087 # subtest++; /* increment subtest num */ ! 57: 57 0002F087 6d efffffffaf incl _subtest ! 58: 58 0002F08D # pipe14_4(); /* data in REGs, 3 NOPs */ ! 59: 59 0002F08D fe 04 ef000004ba callf $4,_pipe14_4 ! 60: 60 0002F094 # subtest++; /* increment subtest num */ ! 61: 61 0002F094 6d efffffffa2 incl _subtest ! 62: 62 0002F09A # pipe14_5(); /* data in CACHE, no NOPs */ ! 63: 63 0002F09A fe 04 ef0000062f callf $4,_pipe14_5 ! 64: 64 0002F0A1 # subtest++; /* increment subtest num */ ! 65: 65 0002F0A1 6d efffffff95 incl _subtest ! 66: 66 0002F0A7 # pipe14_6(); /* data in CACHE, 1 NOP */ ! 67: 67 0002F0A7 fe 04 ef0000074c callf $4,_pipe14_6 ! 68: 68 0002F0AE # subtest++; /* increment subtest num */ ! 69: 69 0002F0AE 6d efffffff88 incl _subtest ! 70: 70 0002F0B4 # pipe14_7(); /* data in CACHE, 2 NOPs */ ! 71: 71 0002F0B4 fe 04 ef0000086d callf $4,_pipe14_7 ! 72: 72 0002F0BB # subtest++; /* increment subtest num */ ! 73: 73 0002F0BB 6d efffffff7b incl _subtest ! 74: 74 0002F0C1 # pipe14_8(); /* data in CACHE, 3 NOPs */ ! 75: 75 0002F0C1 fe 04 ef00000992 callf $4,_pipe14_8 ! 76: 76 0002F0C8 # subtest++; /* increment subtest num */ ! 77: 77 0002F0C8 6d efffffff6e incl _subtest ! 78: 78 0002F0CE # pipe14_9(); /* data via F.P. 0 NOPs */ ! 79: 79 0002F0CE fe 04 ef00000abb callf $4,_pipe14_9 ! 80: 80 0002F0D5 # asm("jmp *return"); /* return to the test monitor */ ! 81: 81 0002F0D5 71 ffffffff61 jmp *return ! 82: 82 0002F0DB # } ! 83: 83 0002F0DB 40 ret#2 ! 84: 84 0002F0DC .set L215,0x0 ! 85: 85 0002F0DC L217: ! 86: 86 0002F0DC 13 ff62 jbr L218 ! 87: 87 0002F0DF .data ! 88: 88 00000fe4 * .text ! 89: 89 0002F0DF 00 .align 1 ! 90: 90 0002F0E0 .globl _pipe14_1 ! 91: 91 0002F0E0 _pipe14_1: ! 92: 92 0002F0E0 0000 .word L231 ! 93: 93 0002F0E2 # ! 94: 94 0002F0E2 # ! 95: 95 0002F0E2 # ! 96: 96 0002F0E2 # ! 97: 97 0002F0E2 # ! 98: 98 0002F0E2 # ! 99: 99 0002F0E2 # ! 100: 100 0002F0E2 # /************************************************************************ ! 101: 101 0002F0E2 # * ! 102: 102 0002F0E2 # * SUBTEST 1 ! 103: 103 0002F0E2 # * data in registers, no NO-OPs ! 104: 104 0002F0E2 # * ! 105: 105 0002F0E2 # ************************************************************************/ ! 106: 106 0002F0E2 # pipe14_1() ! 107: 107 0002F0E2 # { ! 108: 108 0002F0E2 13 016d jbr L233 ! 109: 109 0002F0E5 L234: ! 110: 110 0002F0E5 # force_loop = FALSE; /* clear the force_loop flg */ ! 111: 111 0002F0E5 4d efffffff51 clrl _force_loop ! 112: 112 0002F0EB # index = 0; ! 113: 113 0002F0EB 4d efffffff4b clrl _index ! 114: 114 0002F0F1 # do ! 115: 115 0002F0F1 L237: ! 116: 116 0002F0F1 # { ! 117: 117 0002F0F1 # sgl_value_1 = divd_1_data[index].op_1.m; /* get op_1's MSW */ ! 118: 118 0002F0F1 5c 18 efffffff44 50 mull3 $24,_index,r0 ! 119: 119 0002F0F9 0d e000000000 efffffff38 movl _divd_1_data(r0),_sgl_value_1 ! 120: 120 0002F104 # sgl_value_2 = divd_1_data[index].op_1.l; /* get op_1's LSW */ ! 121: 121 0002F104 5c 18 efffffff31 50 mull3 $24,_index,r0 ! 122: 122 0002F10C 0d e000000004 efffffff25 movl _divd_1_data+4(r0),_sgl_value_2 ! 123: 123 0002F117 # sgl_value_3 = divd_1_data[index].op_2.m; /* get op_2's MSW */ ! 124: 124 0002F117 5c 18 efffffff1e 50 mull3 $24,_index,r0 ! 125: 125 0002F11F 0d e000000008 efffffff12 movl _divd_1_data+8(r0),_sgl_value_3 ! 126: 126 0002F12A # sgl_value_4 = divd_1_data[index].op_2.l; /* get op_2's LSW */ ! 127: 127 0002F12A 5c 18 efffffff0b 50 mull3 $24,_index,r0 ! 128: 128 0002F132 0d e00000000c effffffeff movl _divd_1_data+12(r0),_sgl_value_4 ! 129: 129 0002F13D # sgl_value_7 = 0x40800000; /* get dbl precision 1.0 */ ! 130: 130 0002F13D 0d 8f40800000 effffffef4 movl $1082130432,_sgl_value_7 ! 131: 131 0002F148 # sgl_value_8 = 0; ! 132: 132 0002F148 4d effffffeee clrl _sgl_value_8 ! 133: 133 0002F14E # dbl_expected = divd_1_data[index].exp; /* get expected results */ ! 134: 134 0002F14E 5c 18 effffffee7 50 mull3 $24,_index,r0 ! 135: 135 0002F156 0c 8f00000010 50 addl2 $_divd_1_data+16,r0 ! 136: 136 0002F15D 0d a004 effffffedb movl 4(r0),_dbl_expected+4 ! 137: 137 0002F165 0d 60 effffffed0 movl (r0),_dbl_expected ! 138: 138 0002F16C # /* ! 139: 139 0002F16C # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 140: 140 0002F16C # * The force loop flag is set after the first error. ! 141: 141 0002F16C # */ ! 142: 142 0002F16C # asm("_pipe14_1_lp1:"); ! 143: 143 0002F16C _pipe14_1_lp1: ! 144: 144 0002F16C # asm("movl _sgl_value_1,r0"); /* move operand 1 to r0/r1 */ ! 145: 145 0002F16C 0d effffffeca 50 movl _sgl_value_1,r0 ! 146: 146 0002F173 # asm("movl _sgl_value_2,r1"); ! 147: 147 0002F173 0d effffffec3 51 movl _sgl_value_2,r1 ! 148: 148 0002F17A # asm("movl _sgl_value_3,r2"); /* move operand 2 to r2/r3 */ ! 149: 149 0002F17A 0d effffffebc 52 movl _sgl_value_3,r2 ! 150: 150 0002F181 # asm("movl _sgl_value_4,r3"); ! 151: 151 0002F181 0d effffffeb5 53 movl _sgl_value_4,r3 ! 152: 152 0002F188 # asm("movl _sgl_value_7,r4"); /* move a '1.0' to r4/r5 */ ! 153: 153 0002F188 0d effffffeae 54 movl _sgl_value_7,r4 ! 154: 154 0002F18F # asm("movl _sgl_value_8,r5"); ! 155: 155 0002F18F 0d effffffea7 55 movl _sgl_value_8,r5 ! 156: 156 0002F196 # asm("movl _sgl_value_8,r8"); /* move a '0.0' to r8/r9 */ ! 157: 157 0002F196 0d effffffea0 58 movl _sgl_value_8,r8 ! 158: 158 0002F19D # asm("movl _sgl_value_8,r9"); ! 159: 159 0002F19D 0d effffffe99 59 movl _sgl_value_8,r9 ! 160: 160 0002F1A4 # asm("ldd r8"); /* load a '0.0' ( 0 ) */ ! 161: 161 0002F1A4 07 58 ldd r8 ! 162: 162 0002F1A6 # asm("addd r0"); /* add operand 1 ( op1 ) */ ! 163: 163 0002F1A6 c7 50 addd r0 ! 164: 164 0002F1A8 # asm("divd r2"); /* div by operand 2 ( exp ) */ ! 165: 165 0002F1A8 f7 52 divd r2 ! 166: 166 0002F1AA # asm("muld r4"); /* multiply by 1.0 ( exp ) */ ! 167: 167 0002F1AA e7 54 muld r4 ! 168: 168 0002F1AC # asm("std r6"); /* store the result ( exp ) */ ! 169: 169 0002F1AC 27 56 std r6 ! 170: 170 0002F1AE # if( force_loop ) ! 171: 171 0002F1AE 5d effffffe88 tstl _force_loop ! 172: 172 0002F1B4 31 02 jeql L238 ! 173: 173 0002F1B6 # asm("brb _pipe14_1_lp1");; /* run the loop again */ ! 174: 174 0002F1B6 11 b4 brb _pipe14_1_lp1 ! 175: 175 0002F1B8 L238: ! 176: 176 0002F1B8 # /* ! 177: 177 0002F1B8 # * verify the results ! 178: 178 0002F1B8 # */ ! 179: 179 0002F1B8 # asm("movl r6,_sgl_value_5"); /* get the result */ ! 180: 180 0002F1B8 0d 56 effffffe7d movl r6,_sgl_value_5 ! 181: 181 0002F1BF # asm("movl r7,_sgl_value_6"); ! 182: 182 0002F1BF 0d 57 effffffe76 movl r7,_sgl_value_6 ! 183: 183 0002F1C6 # dbl_st_acc.m = sgl_value_5; ! 184: 184 0002F1C6 0d effffffe70 effffffe6b movl _sgl_value_5,_dbl_st_acc ! 185: 185 0002F1D1 # dbl_st_acc.l = sgl_value_6; ! 186: 186 0002F1D1 0d effffffe65 effffffe64 movl _sgl_value_6,_dbl_st_acc+4 ! 187: 187 0002F1DC # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */ ! 188: 188 0002F1DC # (dbl_st_acc.l != dbl_expected.l) ) ! 189: 189 0002F1DC 1d effffffe5a effffffe55 cmpl _dbl_st_acc,_dbl_expected ! 190: 190 0002F1E7 21 0d jneq L9999 ! 191: 191 0002F1E9 1d effffffe51 effffffe4c cmpl _dbl_st_acc+4,_dbl_expected+4 ! 192: 192 0002F1F4 31 42 jeql L239 ! 193: 193 0002F1F6 L9999: ! 194: 194 0002F1F6 # { ! 195: 195 0002F1F6 # errcnt++; /* bump the error count */ ! 196: 196 0002F1F6 6d effffffe40 incl _errcnt ! 197: 197 0002F1FC # if ( prt_error ) ! 198: 198 0002F1FC 5d effffffe3a tstl _prt_error ! 199: 199 0002F202 31 0d jeql L240 ! 200: 200 0002F204 # print_pipe14_er("Reg. Data, no NOPs"); ! 201: 201 0002F204 .data 1 ! 202: 202 00000fed * L242: ! 203: 203 00000fed * 5265672E20446174612C206E6 .ascii "Reg. Data, no NOPs\0" ! 204: F204E4F507300 ! 205: 204 00001000 * .text ! 206: 205 0002F204 dd 8f00000fed pushl $L242 ! 207: 206 0002F20A fe 08 ef00000bef callf $8,_print_pipe14_er ! 208: 207 0002F211 # if ( halt_flg ) /* halt on error? */ ! 209: 208 0002F211 L240: ! 210: 209 0002F211 5d effffffe25 tstl _halt_flg ! 211: 210 0002F217 31 0d jeql L243 ! 212: 211 0002F219 # pipe14_er_hlt( subtest ); ! 213: 212 0002F219 dd effffffe1d pushl _subtest ! 214: 213 0002F21F fe 08 ef00000d58 callf $8,_pipe14_er_hlt ! 215: 214 0002F226 # if ( loop_on_err ) { ! 216: 215 0002F226 L243: ! 217: 216 0002F226 5d effffffe10 tstl _loop_on_err ! 218: 217 0002F22C 31 0a jeql L245 ! 219: 218 0002F22E # force_loop = TRUE; /* set the force loop flag */ ! 220: 219 0002F22E 0d 01 effffffe07 movl $1,_force_loop ! 221: 220 0002F235 # asm("brw _pipe14_1_lp1"); /* and loop */ ! 222: 221 0002F235 13 ff34 brw _pipe14_1_lp1 ! 223: 222 0002F238 # } ! 224: 223 0002F238 # } /* end of compare error */ ! 225: 224 0002F238 L245: ! 226: 225 0002F238 # } while( index++ < max_divd_1_index ); ! 227: 226 0002F238 L239: ! 228: 227 0002F238 L236: ! 229: 228 0002F238 0d effffffdfe 50 movl _index,r0 ! 230: 229 0002F23F 6d effffffdf7 incl _index ! 231: 230 0002F245 1d 50 effffffdf0 cmpl r0,_max_divd_1_index ! 232: 231 0002F24C 81 03 13 fea0 jlss L237 ! 233: 232 0002F251 L235: ! 234: 233 0002F251 # } /* end of subtest 1 */ ! 235: 234 0002F251 40 ret#2 ! 236: 235 0002F252 .set L231,0x0 ! 237: 236 0002F252 L233: ! 238: 237 0002F252 13 fe90 jbr L234 ! 239: 238 0002F255 .data ! 240: 239 00000fe4 * .text ! 241: 240 0002F255 00 .align 1 ! 242: 241 0002F256 .globl _pipe14_2 ! 243: 242 0002F256 _pipe14_2: ! 244: 243 0002F256 0000 .word L246 ! 245: 244 0002F258 # ! 246: 245 0002F258 # ! 247: 246 0002F258 # ! 248: 247 0002F258 # ! 249: 248 0002F258 # ! 250: 249 0002F258 # ! 251: 250 0002F258 # ! 252: 251 0002F258 # ! 253: 252 0002F258 # ! 254: 253 0002F258 # /************************************************************************ ! 255: 254 0002F258 # * ! 256: 255 0002F258 # * SUBTEST 2 ! 257: 256 0002F258 # * data in registers, no NO-OPs ! 258: 257 0002F258 # * ! 259: 258 0002F258 # ************************************************************************/ ! 260: 259 0002F258 # pipe14_2() ! 261: 260 0002F258 # { ! 262: 261 0002F258 13 0171 jbr L248 ! 263: 262 0002F25B L249: ! 264: 263 0002F25B # force_loop = FALSE; /* clear the force_loop flg */ ! 265: 264 0002F25B 4d effffffddb clrl _force_loop ! 266: 265 0002F261 # index = 0; ! 267: 266 0002F261 4d effffffdd5 clrl _index ! 268: 267 0002F267 # do ! 269: 268 0002F267 L252: ! 270: 269 0002F267 # { ! 271: 270 0002F267 # sgl_value_1 = divd_1_data[index].op_1.m; /* get op_1's MSW */ ! 272: 271 0002F267 5c 18 effffffdce 50 mull3 $24,_index,r0 ! 273: 272 0002F26F 0d e000000000 effffffdc2 movl _divd_1_data(r0),_sgl_value_1 ! 274: 273 0002F27A # sgl_value_2 = divd_1_data[index].op_1.l; /* get op_1's LSW */ ! 275: 274 0002F27A 5c 18 effffffdbb 50 mull3 $24,_index,r0 ! 276: 275 0002F282 0d e000000004 effffffdaf movl _divd_1_data+4(r0),_sgl_value_2 ! 277: 276 0002F28D # sgl_value_3 = divd_1_data[index].op_2.m; /* get op_2's MSW */ ! 278: 277 0002F28D 5c 18 effffffda8 50 mull3 $24,_index,r0 ! 279: 278 0002F295 0d e000000008 effffffd9c movl _divd_1_data+8(r0),_sgl_value_3 ! 280: 279 0002F2A0 # sgl_value_4 = divd_1_data[index].op_2.l; /* get op_2's LSW */ ! 281: 280 0002F2A0 5c 18 effffffd95 50 mull3 $24,_index,r0 ! 282: 281 0002F2A8 0d e00000000c effffffd89 movl _divd_1_data+12(r0),_sgl_value_4 ! 283: 282 0002F2B3 # sgl_value_7 = 0x40800000; /* get dbl precision 1.0 */ ! 284: 283 0002F2B3 0d 8f40800000 effffffd7e movl $1082130432,_sgl_value_7 ! 285: 284 0002F2BE # sgl_value_8 = 0; ! 286: 285 0002F2BE 4d effffffd78 clrl _sgl_value_8 ! 287: 286 0002F2C4 # dbl_expected = divd_1_data[index].exp; /* get expected results */ ! 288: 287 0002F2C4 5c 18 effffffd71 50 mull3 $24,_index,r0 ! 289: 288 0002F2CC 0c 8f00000010 50 addl2 $_divd_1_data+16,r0 ! 290: 289 0002F2D3 0d a004 effffffd65 movl 4(r0),_dbl_expected+4 ! 291: 290 0002F2DB 0d 60 effffffd5a movl (r0),_dbl_expected ! 292: 291 0002F2E2 # /* ! 293: 292 0002F2E2 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 294: 293 0002F2E2 # * The force loop flag is set after the first error. ! 295: 294 0002F2E2 # */ ! 296: 295 0002F2E2 # asm("_pipe14_2_lp1:"); ! 297: 296 0002F2E2 _pipe14_2_lp1: ! 298: 297 0002F2E2 # asm("movl _sgl_value_1,r0"); /* move operand 1 to r0/r1 */ ! 299: 298 0002F2E2 0d effffffd54 50 movl _sgl_value_1,r0 ! 300: 299 0002F2E9 # asm("movl _sgl_value_2,r1"); ! 301: 300 0002F2E9 0d effffffd4d 51 movl _sgl_value_2,r1 ! 302: 301 0002F2F0 # asm("movl _sgl_value_3,r2"); /* move operand 2 to r2/r3 */ ! 303: 302 0002F2F0 0d effffffd46 52 movl _sgl_value_3,r2 ! 304: 303 0002F2F7 # asm("movl _sgl_value_4,r3"); ! 305: 304 0002F2F7 0d effffffd3f 53 movl _sgl_value_4,r3 ! 306: 305 0002F2FE # asm("movl _sgl_value_7,r4"); /* move a '1.0' to r4/r5 */ ! 307: 306 0002F2FE 0d effffffd38 54 movl _sgl_value_7,r4 ! 308: 307 0002F305 # asm("movl _sgl_value_8,r5"); ! 309: 308 0002F305 0d effffffd31 55 movl _sgl_value_8,r5 ! 310: 309 0002F30C # asm("movl _sgl_value_8,r8"); /* move a '0.0' to r8/r9 */ ! 311: 310 0002F30C 0d effffffd2a 58 movl _sgl_value_8,r8 ! 312: 311 0002F313 # asm("movl _sgl_value_8,r9"); ! 313: 312 0002F313 0d effffffd23 59 movl _sgl_value_8,r9 ! 314: 313 0002F31A # asm("ldd r8"); /* load a '0.0' ( 0 ) */ ! 315: 314 0002F31A 07 58 ldd r8 ! 316: 315 0002F31C # asm("nop"); ! 317: 316 0002F31C 10 nop ! 318: 317 0002F31D # asm("addd r0"); /* add operand 1 ( op1 ) */ ! 319: 318 0002F31D c7 50 addd r0 ! 320: 319 0002F31F # asm("nop"); ! 321: 320 0002F31F 10 nop ! 322: 321 0002F320 # asm("divd r2"); /* div by operand 2 ( exp ) */ ! 323: 322 0002F320 f7 52 divd r2 ! 324: 323 0002F322 # asm("nop"); ! 325: 324 0002F322 10 nop ! 326: 325 0002F323 # asm("muld r4"); /* multiply by 1.0 ( exp ) */ ! 327: 326 0002F323 e7 54 muld r4 ! 328: 327 0002F325 # asm("nop"); ! 329: 328 0002F325 10 nop ! 330: 329 0002F326 # asm("std r6"); /* store the result ( exp ) */ ! 331: 330 0002F326 27 56 std r6 ! 332: 331 0002F328 # if( force_loop ) ! 333: 332 0002F328 5d effffffd0e tstl _force_loop ! 334: 333 0002F32E 31 02 jeql L253 ! 335: 334 0002F330 # asm("brb _pipe14_2_lp1");; /* run the loop again */ ! 336: 335 0002F330 11 b0 brb _pipe14_2_lp1 ! 337: 336 0002F332 L253: ! 338: 337 0002F332 # /* ! 339: 338 0002F332 # * verify the results ! 340: 339 0002F332 # */ ! 341: 340 0002F332 # asm("movl r6,_sgl_value_5"); /* get the result */ ! 342: 341 0002F332 0d 56 effffffd03 movl r6,_sgl_value_5 ! 343: 342 0002F339 # asm("movl r7,_sgl_value_6"); ! 344: 343 0002F339 0d 57 effffffcfc movl r7,_sgl_value_6 ! 345: 344 0002F340 # dbl_st_acc.m = sgl_value_5; ! 346: 345 0002F340 0d effffffcf6 effffffcf1 movl _sgl_value_5,_dbl_st_acc ! 347: 346 0002F34B # dbl_st_acc.l = sgl_value_6; ! 348: 347 0002F34B 0d effffffceb effffffcea movl _sgl_value_6,_dbl_st_acc+4 ! 349: 348 0002F356 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */ ! 350: 349 0002F356 # (dbl_st_acc.l != dbl_expected.l) ) ! 351: 350 0002F356 1d effffffce0 effffffcdb cmpl _dbl_st_acc,_dbl_expected ! 352: 351 0002F361 21 0d jneq L9998 ! 353: 352 0002F363 1d effffffcd7 effffffcd2 cmpl _dbl_st_acc+4,_dbl_expected+4 ! 354: 353 0002F36E 31 42 jeql L254 ! 355: 354 0002F370 L9998: ! 356: 355 0002F370 # { ! 357: 356 0002F370 # errcnt++; /* bump the error count */ ! 358: 357 0002F370 6d effffffcc6 incl _errcnt ! 359: 358 0002F376 # if ( prt_error ) ! 360: 359 0002F376 5d effffffcc0 tstl _prt_error ! 361: 360 0002F37C 31 0d jeql L255 ! 362: 361 0002F37E # print_pipe14_er("Reg. Data, 1 NOP"); ! 363: 362 0002F37E .data 1 ! 364: 363 00001000 * L256: ! 365: 364 00001000 * 5265672E20446174612C20312 .ascii "Reg. Data, 1 NOP\0" ! 366: 04E4F5000 ! 367: 365 00001011 * .text ! 368: 366 0002F37E dd 8f00001000 pushl $L256 ! 369: 367 0002F384 fe 08 ef00000a75 callf $8,_print_pipe14_er ! 370: 368 0002F38B # if ( halt_flg ) /* halt on error? */ ! 371: 369 0002F38B L255: ! 372: 370 0002F38B 5d effffffcab tstl _halt_flg ! 373: 371 0002F391 31 0d jeql L257 ! 374: 372 0002F393 # pipe14_er_hlt( subtest ); ! 375: 373 0002F393 dd effffffca3 pushl _subtest ! 376: 374 0002F399 fe 08 ef00000bde callf $8,_pipe14_er_hlt ! 377: 375 0002F3A0 # if ( loop_on_err ) { ! 378: 376 0002F3A0 L257: ! 379: 377 0002F3A0 5d effffffc96 tstl _loop_on_err ! 380: 378 0002F3A6 31 0a jeql L258 ! 381: 379 0002F3A8 # force_loop = TRUE; /* set the force loop flag */ ! 382: 380 0002F3A8 0d 01 effffffc8d movl $1,_force_loop ! 383: 381 0002F3AF # asm("brw _pipe14_2_lp1"); /* and loop */ ! 384: 382 0002F3AF 13 ff30 brw _pipe14_2_lp1 ! 385: 383 0002F3B2 # } ! 386: 384 0002F3B2 # } /* end of compare error */ ! 387: 385 0002F3B2 L258: ! 388: 386 0002F3B2 # } while( index++ < max_divd_1_index ); ! 389: 387 0002F3B2 L254: ! 390: 388 0002F3B2 L251: ! 391: 389 0002F3B2 0d effffffc84 50 movl _index,r0 ! 392: 390 0002F3B9 6d effffffc7d incl _index ! 393: 391 0002F3BF 1d 50 effffffc76 cmpl r0,_max_divd_1_index ! 394: 392 0002F3C6 81 03 13 fe9c jlss L252 ! 395: 393 0002F3CB L250: ! 396: 394 0002F3CB # } /* end of subtest 2 */ ! 397: 395 0002F3CB 40 ret#2 ! 398: 396 0002F3CC .set L246,0x0 ! 399: 397 0002F3CC L248: ! 400: 398 0002F3CC 13 fe8c jbr L249 ! 401: 399 0002F3CF .data ! 402: 400 00000fe4 * .text ! 403: 401 0002F3CF 00 .align 1 ! 404: 402 0002F3D0 .globl _pipe14_3 ! 405: 403 0002F3D0 _pipe14_3: ! 406: 404 0002F3D0 0000 .word L259 ! 407: 405 0002F3D2 # ! 408: 406 0002F3D2 # ! 409: 407 0002F3D2 # ! 410: 408 0002F3D2 # ! 411: 409 0002F3D2 # ! 412: 410 0002F3D2 # ! 413: 411 0002F3D2 # ! 414: 412 0002F3D2 # /************************************************************************ ! 415: 413 0002F3D2 # * ! 416: 414 0002F3D2 # * SUBTEST 3 ! 417: 415 0002F3D2 # * data in registers, 2 NO-OPs ! 418: 416 0002F3D2 # * ! 419: 417 0002F3D2 # ************************************************************************/ ! 420: 418 0002F3D2 # pipe14_3() ! 421: 419 0002F3D2 # { ! 422: 420 0002F3D2 13 0175 jbr L261 ! 423: 421 0002F3D5 L262: ! 424: 422 0002F3D5 # force_loop = FALSE; /* clear the force_loop flg */ ! 425: 423 0002F3D5 4d effffffc61 clrl _force_loop ! 426: 424 0002F3DB # index = 0; ! 427: 425 0002F3DB 4d effffffc5b clrl _index ! 428: 426 0002F3E1 # do ! 429: 427 0002F3E1 L265: ! 430: 428 0002F3E1 # { ! 431: 429 0002F3E1 # sgl_value_1 = divd_1_data[index].op_1.m; /* get op_1's MSW */ ! 432: 430 0002F3E1 5c 18 effffffc54 50 mull3 $24,_index,r0 ! 433: 431 0002F3E9 0d e000000000 effffffc48 movl _divd_1_data(r0),_sgl_value_1 ! 434: 432 0002F3F4 # sgl_value_2 = divd_1_data[index].op_1.l; /* get op_1's LSW */ ! 435: 433 0002F3F4 5c 18 effffffc41 50 mull3 $24,_index,r0 ! 436: 434 0002F3FC 0d e000000004 effffffc35 movl _divd_1_data+4(r0),_sgl_value_2 ! 437: 435 0002F407 # sgl_value_3 = divd_1_data[index].op_2.m; /* get op_2's MSW */ ! 438: 436 0002F407 5c 18 effffffc2e 50 mull3 $24,_index,r0 ! 439: 437 0002F40F 0d e000000008 effffffc22 movl _divd_1_data+8(r0),_sgl_value_3 ! 440: 438 0002F41A # sgl_value_4 = divd_1_data[index].op_2.l; /* get op_2's LSW */ ! 441: 439 0002F41A 5c 18 effffffc1b 50 mull3 $24,_index,r0 ! 442: 440 0002F422 0d e00000000c effffffc0f movl _divd_1_data+12(r0),_sgl_value_4 ! 443: 441 0002F42D # sgl_value_7 = 0x40800000; /* get dbl precision 1.0 */ ! 444: 442 0002F42D 0d 8f40800000 effffffc04 movl $1082130432,_sgl_value_7 ! 445: 443 0002F438 # sgl_value_8 = 0; ! 446: 444 0002F438 4d effffffbfe clrl _sgl_value_8 ! 447: 445 0002F43E # dbl_expected = divd_1_data[index].exp; /* get expected results */ ! 448: 446 0002F43E 5c 18 effffffbf7 50 mull3 $24,_index,r0 ! 449: 447 0002F446 0c 8f00000010 50 addl2 $_divd_1_data+16,r0 ! 450: 448 0002F44D 0d a004 effffffbeb movl 4(r0),_dbl_expected+4 ! 451: 449 0002F455 0d 60 effffffbe0 movl (r0),_dbl_expected ! 452: 450 0002F45C # /* ! 453: 451 0002F45C # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 454: 452 0002F45C # * The force loop flag is set after the first error. ! 455: 453 0002F45C # */ ! 456: 454 0002F45C # asm("_pipe14_3_lp1:"); ! 457: 455 0002F45C _pipe14_3_lp1: ! 458: 456 0002F45C # asm("movl _sgl_value_1,r0"); /* move operand 1 to r0/r1 */ ! 459: 457 0002F45C 0d effffffbda 50 movl _sgl_value_1,r0 ! 460: 458 0002F463 # asm("movl _sgl_value_2,r1"); ! 461: 459 0002F463 0d effffffbd3 51 movl _sgl_value_2,r1 ! 462: 460 0002F46A # asm("movl _sgl_value_3,r2"); /* move operand 2 to r2/r3 */ ! 463: 461 0002F46A 0d effffffbcc 52 movl _sgl_value_3,r2 ! 464: 462 0002F471 # asm("movl _sgl_value_4,r3"); ! 465: 463 0002F471 0d effffffbc5 53 movl _sgl_value_4,r3 ! 466: 464 0002F478 # asm("movl _sgl_value_7,r4"); /* move a '1.0' to r4/r5 */ ! 467: 465 0002F478 0d effffffbbe 54 movl _sgl_value_7,r4 ! 468: 466 0002F47F # asm("movl _sgl_value_8,r5"); ! 469: 467 0002F47F 0d effffffbb7 55 movl _sgl_value_8,r5 ! 470: 468 0002F486 # asm("movl _sgl_value_8,r8"); /* move a '0.0' to r8/r9 */ ! 471: 469 0002F486 0d effffffbb0 58 movl _sgl_value_8,r8 ! 472: 470 0002F48D # asm("movl _sgl_value_8,r9"); ! 473: 471 0002F48D 0d effffffba9 59 movl _sgl_value_8,r9 ! 474: 472 0002F494 # asm("ldd r8"); /* load a '0.0' ( 0 ) */ ! 475: 473 0002F494 07 58 ldd r8 ! 476: 474 0002F496 # asm("nop"); ! 477: 475 0002F496 10 nop ! 478: 476 0002F497 # asm("nop"); ! 479: 477 0002F497 10 nop ! 480: 478 0002F498 # asm("addd r0"); /* add operand 1 ( op1 ) */ ! 481: 479 0002F498 c7 50 addd r0 ! 482: 480 0002F49A # asm("nop"); ! 483: 481 0002F49A 10 nop ! 484: 482 0002F49B # asm("nop"); ! 485: 483 0002F49B 10 nop ! 486: 484 0002F49C # asm("divd r2"); /* div by operand 2 ( exp ) */ ! 487: 485 0002F49C f7 52 divd r2 ! 488: 486 0002F49E # asm("nop"); ! 489: 487 0002F49E 10 nop ! 490: 488 0002F49F # asm("nop"); ! 491: 489 0002F49F 10 nop ! 492: 490 0002F4A0 # asm("muld r4"); /* multiply by 1.0 ( exp ) */ ! 493: 491 0002F4A0 e7 54 muld r4 ! 494: 492 0002F4A2 # asm("nop"); ! 495: 493 0002F4A2 10 nop ! 496: 494 0002F4A3 # asm("nop"); ! 497: 495 0002F4A3 10 nop ! 498: 496 0002F4A4 # asm("std r6"); /* store the result ( exp ) */ ! 499: 497 0002F4A4 27 56 std r6 ! 500: 498 0002F4A6 # if( force_loop ) ! 501: 499 0002F4A6 5d effffffb90 tstl _force_loop ! 502: 500 0002F4AC 31 02 jeql L266 ! 503: 501 0002F4AE # asm("brb _pipe14_3_lp1");; /* run the loop again */ ! 504: 502 0002F4AE 11 ac brb _pipe14_3_lp1 ! 505: 503 0002F4B0 L266: ! 506: 504 0002F4B0 # /* ! 507: 505 0002F4B0 # * verify the results ! 508: 506 0002F4B0 # */ ! 509: 507 0002F4B0 # asm("movl r6,_sgl_value_5"); /* get the result */ ! 510: 508 0002F4B0 0d 56 effffffb85 movl r6,_sgl_value_5 ! 511: 509 0002F4B7 # asm("movl r7,_sgl_value_6"); ! 512: 510 0002F4B7 0d 57 effffffb7e movl r7,_sgl_value_6 ! 513: 511 0002F4BE # dbl_st_acc.m = sgl_value_5; ! 514: 512 0002F4BE 0d effffffb78 effffffb73 movl _sgl_value_5,_dbl_st_acc ! 515: 513 0002F4C9 # dbl_st_acc.l = sgl_value_6; ! 516: 514 0002F4C9 0d effffffb6d effffffb6c movl _sgl_value_6,_dbl_st_acc+4 ! 517: 515 0002F4D4 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */ ! 518: 516 0002F4D4 # (dbl_st_acc.l != dbl_expected.l) ) ! 519: 517 0002F4D4 1d effffffb62 effffffb5d cmpl _dbl_st_acc,_dbl_expected ! 520: 518 0002F4DF 21 0d jneq L9997 ! 521: 519 0002F4E1 1d effffffb59 effffffb54 cmpl _dbl_st_acc+4,_dbl_expected+4 ! 522: 520 0002F4EC 31 42 jeql L267 ! 523: 521 0002F4EE L9997: ! 524: 522 0002F4EE # { ! 525: 523 0002F4EE # errcnt++; /* bump the error count */ ! 526: 524 0002F4EE 6d effffffb48 incl _errcnt ! 527: 525 0002F4F4 # if ( prt_error ) ! 528: 526 0002F4F4 5d effffffb42 tstl _prt_error ! 529: 527 0002F4FA 31 0d jeql L268 ! 530: 528 0002F4FC # print_pipe14_er("Reg. Data, 2 NOPs"); ! 531: 529 0002F4FC .data 1 ! 532: 530 00001011 * L269: ! 533: 531 00001011 * 5265672E20446174612C20322 .ascii "Reg. Data, 2 NOPs\0" ! 534: 04E4F507300 ! 535: 532 00001023 * .text ! 536: 533 0002F4FC dd 8f00001011 pushl $L269 ! 537: 534 0002F502 fe 08 ef000008f7 callf $8,_print_pipe14_er ! 538: 535 0002F509 # if ( halt_flg ) /* halt on error? */ ! 539: 536 0002F509 L268: ! 540: 537 0002F509 5d effffffb2d tstl _halt_flg ! 541: 538 0002F50F 31 0d jeql L270 ! 542: 539 0002F511 # pipe14_er_hlt( subtest ); ! 543: 540 0002F511 dd effffffb25 pushl _subtest ! 544: 541 0002F517 fe 08 ef00000a60 callf $8,_pipe14_er_hlt ! 545: 542 0002F51E # if ( loop_on_err ) { ! 546: 543 0002F51E L270: ! 547: 544 0002F51E 5d effffffb18 tstl _loop_on_err ! 548: 545 0002F524 31 0a jeql L271 ! 549: 546 0002F526 # force_loop = TRUE; /* set the force loop flag */ ! 550: 547 0002F526 0d 01 effffffb0f movl $1,_force_loop ! 551: 548 0002F52D # asm("brw _pipe14_3_lp1"); /* and loop */ ! 552: 549 0002F52D 13 ff2c brw _pipe14_3_lp1 ! 553: 550 0002F530 # } ! 554: 551 0002F530 # } /* end of compare error */ ! 555: 552 0002F530 L271: ! 556: 553 0002F530 # } while( index++ < max_divd_1_index ); ! 557: 554 0002F530 L267: ! 558: 555 0002F530 L264: ! 559: 556 0002F530 0d effffffb06 50 movl _index,r0 ! 560: 557 0002F537 6d effffffaff incl _index ! 561: 558 0002F53D 1d 50 effffffaf8 cmpl r0,_max_divd_1_index ! 562: 559 0002F544 81 03 13 fe98 jlss L265 ! 563: 560 0002F549 L263: ! 564: 561 0002F549 # } /* end of subtest 3 */ ! 565: 562 0002F549 40 ret#2 ! 566: 563 0002F54A .set L259,0x0 ! 567: 564 0002F54A L261: ! 568: 565 0002F54A 13 fe88 jbr L262 ! 569: 566 0002F54D .data ! 570: 567 00000fe4 * .text ! 571: 568 0002F54D 00 .align 1 ! 572: 569 0002F54E .globl _pipe14_4 ! 573: 570 0002F54E _pipe14_4: ! 574: 571 0002F54E 0000 .word L272 ! 575: 572 0002F550 # ! 576: 573 0002F550 # ! 577: 574 0002F550 # ! 578: 575 0002F550 # ! 579: 576 0002F550 # ! 580: 577 0002F550 # ! 581: 578 0002F550 # ! 582: 579 0002F550 # /************************************************************************ ! 583: 580 0002F550 # * ! 584: 581 0002F550 # * SUBTEST 4 ! 585: 582 0002F550 # * data in registers, 3 NO-OPs ! 586: 583 0002F550 # * ! 587: 584 0002F550 # ************************************************************************/ ! 588: 585 0002F550 # pipe14_4() ! 589: 586 0002F550 # { ! 590: 587 0002F550 13 0179 jbr L274 ! 591: 588 0002F553 L275: ! 592: 589 0002F553 # force_loop = FALSE; /* clear the force_loop flg */ ! 593: 590 0002F553 4d effffffae3 clrl _force_loop ! 594: 591 0002F559 # index = 0; ! 595: 592 0002F559 4d effffffadd clrl _index ! 596: 593 0002F55F # do ! 597: 594 0002F55F L278: ! 598: 595 0002F55F # { ! 599: 596 0002F55F # sgl_value_1 = divd_1_data[index].op_1.m; /* get op_1's MSW */ ! 600: 597 0002F55F 5c 18 effffffad6 50 mull3 $24,_index,r0 ! 601: 598 0002F567 0d e000000000 effffffaca movl _divd_1_data(r0),_sgl_value_1 ! 602: 599 0002F572 # sgl_value_2 = divd_1_data[index].op_1.l; /* get op_1's LSW */ ! 603: 600 0002F572 5c 18 effffffac3 50 mull3 $24,_index,r0 ! 604: 601 0002F57A 0d e000000004 effffffab7 movl _divd_1_data+4(r0),_sgl_value_2 ! 605: 602 0002F585 # sgl_value_3 = divd_1_data[index].op_2.m; /* get op_2's MSW */ ! 606: 603 0002F585 5c 18 effffffab0 50 mull3 $24,_index,r0 ! 607: 604 0002F58D 0d e000000008 effffffaa4 movl _divd_1_data+8(r0),_sgl_value_3 ! 608: 605 0002F598 # sgl_value_4 = divd_1_data[index].op_2.l; /* get op_2's LSW */ ! 609: 606 0002F598 5c 18 effffffa9d 50 mull3 $24,_index,r0 ! 610: 607 0002F5A0 0d e00000000c effffffa91 movl _divd_1_data+12(r0),_sgl_value_4 ! 611: 608 0002F5AB # sgl_value_7 = 0x40800000; /* get dbl precision 1.0 */ ! 612: 609 0002F5AB 0d 8f40800000 effffffa86 movl $1082130432,_sgl_value_7 ! 613: 610 0002F5B6 # sgl_value_8 = 0; ! 614: 611 0002F5B6 4d effffffa80 clrl _sgl_value_8 ! 615: 612 0002F5BC # dbl_expected = divd_1_data[index].exp; /* get expected results */ ! 616: 613 0002F5BC 5c 18 effffffa79 50 mull3 $24,_index,r0 ! 617: 614 0002F5C4 0c 8f00000010 50 addl2 $_divd_1_data+16,r0 ! 618: 615 0002F5CB 0d a004 effffffa6d movl 4(r0),_dbl_expected+4 ! 619: 616 0002F5D3 0d 60 effffffa62 movl (r0),_dbl_expected ! 620: 617 0002F5DA # /* ! 621: 618 0002F5DA # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 622: 619 0002F5DA # * The force loop flag is set after the first error. ! 623: 620 0002F5DA # */ ! 624: 621 0002F5DA # asm("_pipe14_4_lp1:"); ! 625: 622 0002F5DA _pipe14_4_lp1: ! 626: 623 0002F5DA # asm("movl _sgl_value_1,r0"); /* move operand 1 to r0/r1 */ ! 627: 624 0002F5DA 0d effffffa5c 50 movl _sgl_value_1,r0 ! 628: 625 0002F5E1 # asm("movl _sgl_value_2,r1"); ! 629: 626 0002F5E1 0d effffffa55 51 movl _sgl_value_2,r1 ! 630: 627 0002F5E8 # asm("movl _sgl_value_3,r2"); /* move operand 2 to r2/r3 */ ! 631: 628 0002F5E8 0d effffffa4e 52 movl _sgl_value_3,r2 ! 632: 629 0002F5EF # asm("movl _sgl_value_4,r3"); ! 633: 630 0002F5EF 0d effffffa47 53 movl _sgl_value_4,r3 ! 634: 631 0002F5F6 # asm("movl _sgl_value_7,r4"); /* move a '1.0' to r4/r5 */ ! 635: 632 0002F5F6 0d effffffa40 54 movl _sgl_value_7,r4 ! 636: 633 0002F5FD # asm("movl _sgl_value_8,r5"); ! 637: 634 0002F5FD 0d effffffa39 55 movl _sgl_value_8,r5 ! 638: 635 0002F604 # asm("movl _sgl_value_8,r8"); /* move a '0.0' to r8/r9 */ ! 639: 636 0002F604 0d effffffa32 58 movl _sgl_value_8,r8 ! 640: 637 0002F60B # asm("movl _sgl_value_8,r9"); ! 641: 638 0002F60B 0d effffffa2b 59 movl _sgl_value_8,r9 ! 642: 639 0002F612 # asm("ldd r8"); /* load a '0.0' ( 0 ) */ ! 643: 640 0002F612 07 58 ldd r8 ! 644: 641 0002F614 # asm("nop"); ! 645: 642 0002F614 10 nop ! 646: 643 0002F615 # asm("nop"); ! 647: 644 0002F615 10 nop ! 648: 645 0002F616 # asm("nop"); ! 649: 646 0002F616 10 nop ! 650: 647 0002F617 # asm("addd r0"); /* add operand 1 ( op1 ) */ ! 651: 648 0002F617 c7 50 addd r0 ! 652: 649 0002F619 # asm("nop"); ! 653: 650 0002F619 10 nop ! 654: 651 0002F61A # asm("nop"); ! 655: 652 0002F61A 10 nop ! 656: 653 0002F61B # asm("nop"); ! 657: 654 0002F61B 10 nop ! 658: 655 0002F61C # asm("divd r2"); /* div by operand 2 ( exp ) */ ! 659: 656 0002F61C f7 52 divd r2 ! 660: 657 0002F61E # asm("nop"); ! 661: 658 0002F61E 10 nop ! 662: 659 0002F61F # asm("nop"); ! 663: 660 0002F61F 10 nop ! 664: 661 0002F620 # asm("nop"); ! 665: 662 0002F620 10 nop ! 666: 663 0002F621 # asm("muld r4"); /* multiply by 1.0 ( exp ) */ ! 667: 664 0002F621 e7 54 muld r4 ! 668: 665 0002F623 # asm("nop"); ! 669: 666 0002F623 10 nop ! 670: 667 0002F624 # asm("nop"); ! 671: 668 0002F624 10 nop ! 672: 669 0002F625 # asm("nop"); ! 673: 670 0002F625 10 nop ! 674: 671 0002F626 # asm("std r6"); /* store the result ( exp ) */ ! 675: 672 0002F626 27 56 std r6 ! 676: 673 0002F628 # if( force_loop ) ! 677: 674 0002F628 5d effffffa0e tstl _force_loop ! 678: 675 0002F62E 31 02 jeql L279 ! 679: 676 0002F630 # asm("brb _pipe14_4_lp1");; /* run the loop again */ ! 680: 677 0002F630 11 a8 brb _pipe14_4_lp1 ! 681: 678 0002F632 L279: ! 682: 679 0002F632 # /* ! 683: 680 0002F632 # * verify the results ! 684: 681 0002F632 # */ ! 685: 682 0002F632 # asm("movl r6,_sgl_value_5"); /* get the result */ ! 686: 683 0002F632 0d 56 effffffa03 movl r6,_sgl_value_5 ! 687: 684 0002F639 # asm("movl r7,_sgl_value_6"); ! 688: 685 0002F639 0d 57 effffff9fc movl r7,_sgl_value_6 ! 689: 686 0002F640 # dbl_st_acc.m = sgl_value_5; ! 690: 687 0002F640 0d effffff9f6 effffff9f1 movl _sgl_value_5,_dbl_st_acc ! 691: 688 0002F64B # dbl_st_acc.l = sgl_value_6; ! 692: 689 0002F64B 0d effffff9eb effffff9ea movl _sgl_value_6,_dbl_st_acc+4 ! 693: 690 0002F656 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */ ! 694: 691 0002F656 # (dbl_st_acc.l != dbl_expected.l) ) ! 695: 692 0002F656 1d effffff9e0 effffff9db cmpl _dbl_st_acc,_dbl_expected ! 696: 693 0002F661 21 0d jneq L9996 ! 697: 694 0002F663 1d effffff9d7 effffff9d2 cmpl _dbl_st_acc+4,_dbl_expected+4 ! 698: 695 0002F66E 31 42 jeql L280 ! 699: 696 0002F670 L9996: ! 700: 697 0002F670 # { ! 701: 698 0002F670 # errcnt++; /* bump the error count */ ! 702: 699 0002F670 6d effffff9c6 incl _errcnt ! 703: 700 0002F676 # if ( prt_error ) ! 704: 701 0002F676 5d effffff9c0 tstl _prt_error ! 705: 702 0002F67C 31 0d jeql L281 ! 706: 703 0002F67E # print_pipe14_er("Reg. Data, 3 NOPs"); ! 707: 704 0002F67E .data 1 ! 708: 705 00001023 * L282: ! 709: 706 00001023 * 5265672E20446174612C20332 .ascii "Reg. Data, 3 NOPs\0" ! 710: 04E4F507300 ! 711: 707 00001035 * .text ! 712: 708 0002F67E dd 8f00001023 pushl $L282 ! 713: 709 0002F684 fe 08 ef00000775 callf $8,_print_pipe14_er ! 714: 710 0002F68B # if ( halt_flg ) /* halt on error? */ ! 715: 711 0002F68B L281: ! 716: 712 0002F68B 5d effffff9ab tstl _halt_flg ! 717: 713 0002F691 31 0d jeql L283 ! 718: 714 0002F693 # pipe14_er_hlt( subtest ); ! 719: 715 0002F693 dd effffff9a3 pushl _subtest ! 720: 716 0002F699 fe 08 ef000008de callf $8,_pipe14_er_hlt ! 721: 717 0002F6A0 # if ( loop_on_err ) { ! 722: 718 0002F6A0 L283: ! 723: 719 0002F6A0 5d effffff996 tstl _loop_on_err ! 724: 720 0002F6A6 31 0a jeql L284 ! 725: 721 0002F6A8 # force_loop = TRUE; /* set the force loop flag */ ! 726: 722 0002F6A8 0d 01 effffff98d movl $1,_force_loop ! 727: 723 0002F6AF # asm("brw _pipe14_4_lp1"); /* and loop */ ! 728: 724 0002F6AF 13 ff28 brw _pipe14_4_lp1 ! 729: 725 0002F6B2 # } ! 730: 726 0002F6B2 # } /* end of compare error */ ! 731: 727 0002F6B2 L284: ! 732: 728 0002F6B2 # } while( index++ < max_divd_1_index ); ! 733: 729 0002F6B2 L280: ! 734: 730 0002F6B2 L277: ! 735: 731 0002F6B2 0d effffff984 50 movl _index,r0 ! 736: 732 0002F6B9 6d effffff97d incl _index ! 737: 733 0002F6BF 1d 50 effffff976 cmpl r0,_max_divd_1_index ! 738: 734 0002F6C6 81 03 13 fe94 jlss L278 ! 739: 735 0002F6CB L276: ! 740: 736 0002F6CB # } /* end of subtest 4 */ ! 741: 737 0002F6CB 40 ret#2 ! 742: 738 0002F6CC .set L272,0x0 ! 743: 739 0002F6CC L274: ! 744: 740 0002F6CC 13 fe84 jbr L275 ! 745: 741 0002F6CF .data ! 746: 742 00000fe4 * .text ! 747: 743 0002F6CF 00 .align 1 ! 748: 744 0002F6D0 .globl _pipe14_5 ! 749: 745 0002F6D0 _pipe14_5: ! 750: 746 0002F6D0 0000 .word L285 ! 751: 747 0002F6D2 # ! 752: 748 0002F6D2 # ! 753: 749 0002F6D2 # ! 754: 750 0002F6D2 # ! 755: 751 0002F6D2 # ! 756: 752 0002F6D2 # ! 757: 753 0002F6D2 # ! 758: 754 0002F6D2 # /************************************************************************ ! 759: 755 0002F6D2 # * ! 760: 756 0002F6D2 # * SUBTEST 5 ! 761: 757 0002F6D2 # * data in cache, no NO-OPs ! 762: 758 0002F6D2 # * ! 763: 759 0002F6D2 # ************************************************************************/ ! 764: 760 0002F6D2 # pipe14_5() ! 765: 761 0002F6D2 # { ! 766: 762 0002F6D2 13 0121 jbr L287 ! 767: 763 0002F6D5 L288: ! 768: 764 0002F6D5 # force_loop = FALSE; /* clear the force_loop flg */ ! 769: 765 0002F6D5 4d effffff961 clrl _force_loop ! 770: 766 0002F6DB # index = 0; ! 771: 767 0002F6DB 4d effffff95b clrl _index ! 772: 768 0002F6E1 # do ! 773: 769 0002F6E1 L291: ! 774: 770 0002F6E1 # { ! 775: 771 0002F6E1 # dbl_value_1 = divd_1_data[index].op_1; /* get dbl operand # 1 */ ! 776: 772 0002F6E1 5c 18 effffff954 50 mull3 $24,_index,r0 ! 777: 773 0002F6E9 0c 8f00000000 50 addl2 $_divd_1_data,r0 ! 778: 774 0002F6F0 0d a004 effffff948 movl 4(r0),_dbl_value_1+4 ! 779: 775 0002F6F8 0d 60 effffff93d movl (r0),_dbl_value_1 ! 780: 776 0002F6FF # dbl_value_2 = divd_1_data[index].op_2; /* get dbl operand # 2 */ ! 781: 777 0002F6FF 5c 18 effffff936 50 mull3 $24,_index,r0 ! 782: 778 0002F707 0c 8f00000008 50 addl2 $_divd_1_data+8,r0 ! 783: 779 0002F70E 0d a004 effffff92a movl 4(r0),_dbl_value_2+4 ! 784: 780 0002F716 0d 60 effffff91f movl (r0),_dbl_value_2 ! 785: 781 0002F71D # dbl_expected = divd_1_data[index].exp; /* get expected results */ ! 786: 782 0002F71D 5c 18 effffff918 50 mull3 $24,_index,r0 ! 787: 783 0002F725 0c 8f00000010 50 addl2 $_divd_1_data+16,r0 ! 788: 784 0002F72C 0d a004 effffff90c movl 4(r0),_dbl_expected+4 ! 789: 785 0002F734 0d 60 effffff901 movl (r0),_dbl_expected ! 790: 786 0002F73B # dbl_dummy1.m = 0x40800000; /* get dbl precision 1.0 */ ! 791: 787 0002F73B 0d 8f40800000 effffff8f6 movl $1082130432,_dbl_dummy1 ! 792: 788 0002F746 # dbl_dummy1.l = 0; ! 793: 789 0002F746 4d effffff8f4 clrl _dbl_dummy1+4 ! 794: 790 0002F74C # dbl_dummy2.m = 0; /* get dbl precision 0.0 */ ! 795: 791 0002F74C 4d effffff8ea clrl _dbl_dummy2 ! 796: 792 0002F752 # dbl_dummy2.l = 0; ! 797: 793 0002F752 4d effffff8e8 clrl _dbl_dummy2+4 ! 798: 794 0002F758 # /* ! 799: 795 0002F758 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 800: 796 0002F758 # * The force loop flag is set after the first error. ! 801: 797 0002F758 # */ ! 802: 798 0002F758 # asm("_pipe14_5_lp1:"); ! 803: 799 0002F758 _pipe14_5_lp1: ! 804: 800 0002F758 # asm("ldd _dbl_dummy2"); /* load a '0.0' ( 0 ) */ ! 805: 801 0002F758 07 effffff8de ldd _dbl_dummy2 ! 806: 802 0002F75E # asm("addd _dbl_value_1"); /* add operand 1 ( op1 ) */ ! 807: 803 0002F75E c7 effffff8d8 addd _dbl_value_1 ! 808: 804 0002F764 # asm("divd _dbl_value_2"); /* div by operand 2 ( exp ) */ ! 809: 805 0002F764 f7 effffff8d2 divd _dbl_value_2 ! 810: 806 0002F76A # asm("muld _dbl_dummy1"); /* multiply by 1.0 ( exp ) */ ! 811: 807 0002F76A e7 effffff8cc muld _dbl_dummy1 ! 812: 808 0002F770 # asm("std _dbl_st_acc"); /* store the result ( exp ) */ ! 813: 809 0002F770 27 effffff8c6 std _dbl_st_acc ! 814: 810 0002F776 # if( force_loop ) ! 815: 811 0002F776 5d effffff8c0 tstl _force_loop ! 816: 812 0002F77C 31 02 jeql L292 ! 817: 813 0002F77E # asm("brb _pipe14_5_lp1");; /* run the loop again */ ! 818: 814 0002F77E 11 d8 brb _pipe14_5_lp1 ! 819: 815 0002F780 L292: ! 820: 816 0002F780 # /* ! 821: 817 0002F780 # * verify the results ! 822: 818 0002F780 # */ ! 823: 819 0002F780 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */ ! 824: 820 0002F780 # (dbl_st_acc.l != dbl_expected.l) ) ! 825: 821 0002F780 1d effffff8b6 effffff8b1 cmpl _dbl_st_acc,_dbl_expected ! 826: 822 0002F78B 21 0d jneq L9995 ! 827: 823 0002F78D 1d effffff8ad effffff8a8 cmpl _dbl_st_acc+4,_dbl_expected+4 ! 828: 824 0002F798 31 42 jeql L293 ! 829: 825 0002F79A L9995: ! 830: 826 0002F79A # { ! 831: 827 0002F79A # errcnt++; /* bump the error count */ ! 832: 828 0002F79A 6d effffff89c incl _errcnt ! 833: 829 0002F7A0 # if ( prt_error ) ! 834: 830 0002F7A0 5d effffff896 tstl _prt_error ! 835: 831 0002F7A6 31 0d jeql L294 ! 836: 832 0002F7A8 # print_pipe14_er("Cache Data, no NOPs"); ! 837: 833 0002F7A8 .data 1 ! 838: 834 00001035 * L295: ! 839: 835 00001035 * 436163686520446174612C206 .ascii "Cache Data, no NOPs\0" ! 840: E6F204E4F507300 ! 841: 836 00001049 * .text ! 842: 837 0002F7A8 dd 8f00001035 pushl $L295 ! 843: 838 0002F7AE fe 08 ef0000064b callf $8,_print_pipe14_er ! 844: 839 0002F7B5 # if ( halt_flg ) /* halt on error? */ ! 845: 840 0002F7B5 L294: ! 846: 841 0002F7B5 5d effffff881 tstl _halt_flg ! 847: 842 0002F7BB 31 0d jeql L296 ! 848: 843 0002F7BD # pipe14_er_hlt( subtest ); ! 849: 844 0002F7BD dd effffff879 pushl _subtest ! 850: 845 0002F7C3 fe 08 ef000007b4 callf $8,_pipe14_er_hlt ! 851: 846 0002F7CA # if ( loop_on_err ) { ! 852: 847 0002F7CA L296: ! 853: 848 0002F7CA 5d effffff86c tstl _loop_on_err ! 854: 849 0002F7D0 31 0a jeql L297 ! 855: 850 0002F7D2 # force_loop = TRUE; /* set the force loop flag */ ! 856: 851 0002F7D2 0d 01 effffff863 movl $1,_force_loop ! 857: 852 0002F7D9 # asm("brw _pipe14_5_lp1"); /* and loop */ ! 858: 853 0002F7D9 13 ff7c brw _pipe14_5_lp1 ! 859: 854 0002F7DC # } ! 860: 855 0002F7DC # } /* end of compare error */ ! 861: 856 0002F7DC L297: ! 862: 857 0002F7DC # } while( index++ < max_divd_1_index ); ! 863: 858 0002F7DC L293: ! 864: 859 0002F7DC L290: ! 865: 860 0002F7DC 0d effffff85a 50 movl _index,r0 ! 866: 861 0002F7E3 6d effffff853 incl _index ! 867: 862 0002F7E9 1d 50 effffff84c cmpl r0,_max_divd_1_index ! 868: 863 0002F7F0 81 03 13 feec jlss L291 ! 869: 864 0002F7F5 L289: ! 870: 865 0002F7F5 # } /* end of subtest 5 */ ! 871: 866 0002F7F5 40 ret#2 ! 872: 867 0002F7F6 .set L285,0x0 ! 873: 868 0002F7F6 L287: ! 874: 869 0002F7F6 13 fedc jbr L288 ! 875: 870 0002F7F9 .data ! 876: 871 00000fe4 * .text ! 877: 872 0002F7F9 00 .align 1 ! 878: 873 0002F7FA .globl _pipe14_6 ! 879: 874 0002F7FA _pipe14_6: ! 880: 875 0002F7FA 0000 .word L298 ! 881: 876 0002F7FC # ! 882: 877 0002F7FC # ! 883: 878 0002F7FC # ! 884: 879 0002F7FC # ! 885: 880 0002F7FC # ! 886: 881 0002F7FC # ! 887: 882 0002F7FC # ! 888: 883 0002F7FC # /************************************************************************ ! 889: 884 0002F7FC # * ! 890: 885 0002F7FC # * SUBTEST 6 ! 891: 886 0002F7FC # * data in cache, 1 NO-OP ! 892: 887 0002F7FC # * ! 893: 888 0002F7FC # ************************************************************************/ ! 894: 889 0002F7FC # pipe14_6() ! 895: 890 0002F7FC # { ! 896: 891 0002F7FC 13 0125 jbr L300 ! 897: 892 0002F7FF L301: ! 898: 893 0002F7FF # force_loop = FALSE; /* clear the force_loop flg */ ! 899: 894 0002F7FF 4d effffff837 clrl _force_loop ! 900: 895 0002F805 # index = 0; ! 901: 896 0002F805 4d effffff831 clrl _index ! 902: 897 0002F80B # do ! 903: 898 0002F80B L304: ! 904: 899 0002F80B # { ! 905: 900 0002F80B # dbl_value_1 = divd_1_data[index].op_1; /* get dbl operand # 1 */ ! 906: 901 0002F80B 5c 18 effffff82a 50 mull3 $24,_index,r0 ! 907: 902 0002F813 0c 8f00000000 50 addl2 $_divd_1_data,r0 ! 908: 903 0002F81A 0d a004 effffff81e movl 4(r0),_dbl_value_1+4 ! 909: 904 0002F822 0d 60 effffff813 movl (r0),_dbl_value_1 ! 910: 905 0002F829 # dbl_value_2 = divd_1_data[index].op_2; /* get dbl operand # 2 */ ! 911: 906 0002F829 5c 18 effffff80c 50 mull3 $24,_index,r0 ! 912: 907 0002F831 0c 8f00000008 50 addl2 $_divd_1_data+8,r0 ! 913: 908 0002F838 0d a004 effffff800 movl 4(r0),_dbl_value_2+4 ! 914: 909 0002F840 0d 60 effffff7f5 movl (r0),_dbl_value_2 ! 915: 910 0002F847 # dbl_expected = divd_1_data[index].exp; /* get expected results */ ! 916: 911 0002F847 5c 18 effffff7ee 50 mull3 $24,_index,r0 ! 917: 912 0002F84F 0c 8f00000010 50 addl2 $_divd_1_data+16,r0 ! 918: 913 0002F856 0d a004 effffff7e2 movl 4(r0),_dbl_expected+4 ! 919: 914 0002F85E 0d 60 effffff7d7 movl (r0),_dbl_expected ! 920: 915 0002F865 # dbl_dummy1.m = 0x40800000; /* get dbl precision 1.0 */ ! 921: 916 0002F865 0d 8f40800000 effffff7cc movl $1082130432,_dbl_dummy1 ! 922: 917 0002F870 # dbl_dummy1.l = 0; ! 923: 918 0002F870 4d effffff7ca clrl _dbl_dummy1+4 ! 924: 919 0002F876 # dbl_dummy2.m = 0; /* get dbl precision 0.0 */ ! 925: 920 0002F876 4d effffff7c0 clrl _dbl_dummy2 ! 926: 921 0002F87C # dbl_dummy2.l = 0; ! 927: 922 0002F87C 4d effffff7be clrl _dbl_dummy2+4 ! 928: 923 0002F882 # /* ! 929: 924 0002F882 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 930: 925 0002F882 # * The force loop flag is set after the first error. ! 931: 926 0002F882 # */ ! 932: 927 0002F882 # asm("_pipe14_6_lp1:"); ! 933: 928 0002F882 _pipe14_6_lp1: ! 934: 929 0002F882 # asm("ldd _dbl_dummy2"); /* load a '0.0' ( 0 ) */ ! 935: 930 0002F882 07 effffff7b4 ldd _dbl_dummy2 ! 936: 931 0002F888 # asm("nop"); ! 937: 932 0002F888 10 nop ! 938: 933 0002F889 # asm("addd _dbl_value_1"); /* add operand 1 ( op1 ) */ ! 939: 934 0002F889 c7 effffff7ad addd _dbl_value_1 ! 940: 935 0002F88F # asm("nop"); ! 941: 936 0002F88F 10 nop ! 942: 937 0002F890 # asm("divd _dbl_value_2"); /* div by operand 2 ( exp ) */ ! 943: 938 0002F890 f7 effffff7a6 divd _dbl_value_2 ! 944: 939 0002F896 # asm("nop"); ! 945: 940 0002F896 10 nop ! 946: 941 0002F897 # asm("muld _dbl_dummy1"); /* multiply by 1.0 ( exp ) */ ! 947: 942 0002F897 e7 effffff79f muld _dbl_dummy1 ! 948: 943 0002F89D # asm("nop"); ! 949: 944 0002F89D 10 nop ! 950: 945 0002F89E # asm("std _dbl_st_acc"); /* store the result ( exp ) */ ! 951: 946 0002F89E 27 effffff798 std _dbl_st_acc ! 952: 947 0002F8A4 # if( force_loop ) ! 953: 948 0002F8A4 5d effffff792 tstl _force_loop ! 954: 949 0002F8AA 31 02 jeql L305 ! 955: 950 0002F8AC # asm("brb _pipe14_6_lp1");; /* run the loop again */ ! 956: 951 0002F8AC 11 d4 brb _pipe14_6_lp1 ! 957: 952 0002F8AE L305: ! 958: 953 0002F8AE # /* ! 959: 954 0002F8AE # * verify the results ! 960: 955 0002F8AE # */ ! 961: 956 0002F8AE # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */ ! 962: 957 0002F8AE # (dbl_st_acc.l != dbl_expected.l) ) ! 963: 958 0002F8AE 1d effffff788 effffff783 cmpl _dbl_st_acc,_dbl_expected ! 964: 959 0002F8B9 21 0d jneq L9994 ! 965: 960 0002F8BB 1d effffff77f effffff77a cmpl _dbl_st_acc+4,_dbl_expected+4 ! 966: 961 0002F8C6 31 42 jeql L306 ! 967: 962 0002F8C8 L9994: ! 968: 963 0002F8C8 # { ! 969: 964 0002F8C8 # errcnt++; /* bump the error count */ ! 970: 965 0002F8C8 6d effffff76e incl _errcnt ! 971: 966 0002F8CE # if ( prt_error ) ! 972: 967 0002F8CE 5d effffff768 tstl _prt_error ! 973: 968 0002F8D4 31 0d jeql L307 ! 974: 969 0002F8D6 # print_pipe14_er("Cache Data, 1 NOP"); ! 975: 970 0002F8D6 .data 1 ! 976: 971 00001049 * L308: ! 977: 972 00001049 * 436163686520446174612C203 .ascii "Cache Data, 1 NOP\0" ! 978: 1204E4F5000 ! 979: 973 0000105b * .text ! 980: 974 0002F8D6 dd 8f00001049 pushl $L308 ! 981: 975 0002F8DC fe 08 ef0000051d callf $8,_print_pipe14_er ! 982: 976 0002F8E3 # if ( halt_flg ) /* halt on error? */ ! 983: 977 0002F8E3 L307: ! 984: 978 0002F8E3 5d effffff753 tstl _halt_flg ! 985: 979 0002F8E9 31 0d jeql L309 ! 986: 980 0002F8EB # pipe14_er_hlt( subtest ); ! 987: 981 0002F8EB dd effffff74b pushl _subtest ! 988: 982 0002F8F1 fe 08 ef00000686 callf $8,_pipe14_er_hlt ! 989: 983 0002F8F8 # if ( loop_on_err ) { ! 990: 984 0002F8F8 L309: ! 991: 985 0002F8F8 5d effffff73e tstl _loop_on_err ! 992: 986 0002F8FE 31 0a jeql L310 ! 993: 987 0002F900 # force_loop = TRUE; /* set the force loop flag */ ! 994: 988 0002F900 0d 01 effffff735 movl $1,_force_loop ! 995: 989 0002F907 # asm("brw _pipe14_6_lp1"); /* and loop */ ! 996: 990 0002F907 13 ff78 brw _pipe14_6_lp1 ! 997: 991 0002F90A # } ! 998: 992 0002F90A # } /* end of compare error */ ! 999: 993 0002F90A L310: ! 1000: 994 0002F90A # } while( index++ < max_divd_1_index ); ! 1001: 995 0002F90A L306: ! 1002: 996 0002F90A L303: ! 1003: 997 0002F90A 0d effffff72c 50 movl _index,r0 ! 1004: 998 0002F911 6d effffff725 incl _index ! 1005: 999 0002F917 1d 50 effffff71e cmpl r0,_max_divd_1_index ! 1006: 1000 0002F91E 81 03 13 fee8 jlss L304 ! 1007: 1001 0002F923 L302: ! 1008: 1002 0002F923 # } /* end of subtest 6 */ ! 1009: 1003 0002F923 40 ret#2 ! 1010: 1004 0002F924 .set L298,0x0 ! 1011: 1005 0002F924 L300: ! 1012: 1006 0002F924 13 fed8 jbr L301 ! 1013: 1007 0002F927 .data ! 1014: 1008 00000fe4 * .text ! 1015: 1009 0002F927 00 .align 1 ! 1016: 1010 0002F928 .globl _pipe14_7 ! 1017: 1011 0002F928 _pipe14_7: ! 1018: 1012 0002F928 0000 .word L311 ! 1019: 1013 0002F92A # ! 1020: 1014 0002F92A # ! 1021: 1015 0002F92A # ! 1022: 1016 0002F92A # ! 1023: 1017 0002F92A # ! 1024: 1018 0002F92A # ! 1025: 1019 0002F92A # ! 1026: 1020 0002F92A # ! 1027: 1021 0002F92A # /************************************************************************ ! 1028: 1022 0002F92A # * ! 1029: 1023 0002F92A # * SUBTEST 7 ! 1030: 1024 0002F92A # * data in cache, 2 NO-OPs ! 1031: 1025 0002F92A # * ! 1032: 1026 0002F92A # ************************************************************************/ ! 1033: 1027 0002F92A # pipe14_7() ! 1034: 1028 0002F92A # { ! 1035: 1029 0002F92A 13 0129 jbr L313 ! 1036: 1030 0002F92D L314: ! 1037: 1031 0002F92D # force_loop = FALSE; /* clear the force_loop flg */ ! 1038: 1032 0002F92D 4d effffff709 clrl _force_loop ! 1039: 1033 0002F933 # index = 0; ! 1040: 1034 0002F933 4d effffff703 clrl _index ! 1041: 1035 0002F939 # do ! 1042: 1036 0002F939 L317: ! 1043: 1037 0002F939 # { ! 1044: 1038 0002F939 # dbl_value_1 = divd_1_data[index].op_1; /* get dbl operand # 1 */ ! 1045: 1039 0002F939 5c 18 effffff6fc 50 mull3 $24,_index,r0 ! 1046: 1040 0002F941 0c 8f00000000 50 addl2 $_divd_1_data,r0 ! 1047: 1041 0002F948 0d a004 effffff6f0 movl 4(r0),_dbl_value_1+4 ! 1048: 1042 0002F950 0d 60 effffff6e5 movl (r0),_dbl_value_1 ! 1049: 1043 0002F957 # dbl_value_2 = divd_1_data[index].op_2; /* get dbl operand # 2 */ ! 1050: 1044 0002F957 5c 18 effffff6de 50 mull3 $24,_index,r0 ! 1051: 1045 0002F95F 0c 8f00000008 50 addl2 $_divd_1_data+8,r0 ! 1052: 1046 0002F966 0d a004 effffff6d2 movl 4(r0),_dbl_value_2+4 ! 1053: 1047 0002F96E 0d 60 effffff6c7 movl (r0),_dbl_value_2 ! 1054: 1048 0002F975 # dbl_expected = divd_1_data[index].exp; /* get expected results */ ! 1055: 1049 0002F975 5c 18 effffff6c0 50 mull3 $24,_index,r0 ! 1056: 1050 0002F97D 0c 8f00000010 50 addl2 $_divd_1_data+16,r0 ! 1057: 1051 0002F984 0d a004 effffff6b4 movl 4(r0),_dbl_expected+4 ! 1058: 1052 0002F98C 0d 60 effffff6a9 movl (r0),_dbl_expected ! 1059: 1053 0002F993 # dbl_dummy1.m = 0x40800000; /* get dbl precision 1.0 */ ! 1060: 1054 0002F993 0d 8f40800000 effffff69e movl $1082130432,_dbl_dummy1 ! 1061: 1055 0002F99E # dbl_dummy1.l = 0; ! 1062: 1056 0002F99E 4d effffff69c clrl _dbl_dummy1+4 ! 1063: 1057 0002F9A4 # dbl_dummy2.m = 0; /* get dbl precision 0.0 */ ! 1064: 1058 0002F9A4 4d effffff692 clrl _dbl_dummy2 ! 1065: 1059 0002F9AA # dbl_dummy2.l = 0; ! 1066: 1060 0002F9AA 4d effffff690 clrl _dbl_dummy2+4 ! 1067: 1061 0002F9B0 # /* ! 1068: 1062 0002F9B0 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1069: 1063 0002F9B0 # * The force loop flag is set after the first error. ! 1070: 1064 0002F9B0 # */ ! 1071: 1065 0002F9B0 # asm("_pipe14_7_lp1:"); ! 1072: 1066 0002F9B0 _pipe14_7_lp1: ! 1073: 1067 0002F9B0 # asm("ldd _dbl_dummy2"); /* load a '0.0' ( 0 ) */ ! 1074: 1068 0002F9B0 07 effffff686 ldd _dbl_dummy2 ! 1075: 1069 0002F9B6 # asm("nop"); ! 1076: 1070 0002F9B6 10 nop ! 1077: 1071 0002F9B7 # asm("nop"); ! 1078: 1072 0002F9B7 10 nop ! 1079: 1073 0002F9B8 # asm("addd _dbl_value_1"); /* add operand 1 ( op1 ) */ ! 1080: 1074 0002F9B8 c7 effffff67e addd _dbl_value_1 ! 1081: 1075 0002F9BE # asm("nop"); ! 1082: 1076 0002F9BE 10 nop ! 1083: 1077 0002F9BF # asm("nop"); ! 1084: 1078 0002F9BF 10 nop ! 1085: 1079 0002F9C0 # asm("divd _dbl_value_2"); /* div by operand 2 ( exp ) */ ! 1086: 1080 0002F9C0 f7 effffff676 divd _dbl_value_2 ! 1087: 1081 0002F9C6 # asm("nop"); ! 1088: 1082 0002F9C6 10 nop ! 1089: 1083 0002F9C7 # asm("nop"); ! 1090: 1084 0002F9C7 10 nop ! 1091: 1085 0002F9C8 # asm("muld _dbl_dummy1"); /* multiply by 1.0 ( exp ) */ ! 1092: 1086 0002F9C8 e7 effffff66e muld _dbl_dummy1 ! 1093: 1087 0002F9CE # asm("nop"); ! 1094: 1088 0002F9CE 10 nop ! 1095: 1089 0002F9CF # asm("nop"); ! 1096: 1090 0002F9CF 10 nop ! 1097: 1091 0002F9D0 # asm("std _dbl_st_acc"); /* store the result ( exp ) */ ! 1098: 1092 0002F9D0 27 effffff666 std _dbl_st_acc ! 1099: 1093 0002F9D6 # if( force_loop ) ! 1100: 1094 0002F9D6 5d effffff660 tstl _force_loop ! 1101: 1095 0002F9DC 31 02 jeql L318 ! 1102: 1096 0002F9DE # asm("brb _pipe14_7_lp1");; /* run the loop again */ ! 1103: 1097 0002F9DE 11 d0 brb _pipe14_7_lp1 ! 1104: 1098 0002F9E0 L318: ! 1105: 1099 0002F9E0 # /* ! 1106: 1100 0002F9E0 # * verify the results ! 1107: 1101 0002F9E0 # */ ! 1108: 1102 0002F9E0 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */ ! 1109: 1103 0002F9E0 # (dbl_st_acc.l != dbl_expected.l) ) ! 1110: 1104 0002F9E0 1d effffff656 effffff651 cmpl _dbl_st_acc,_dbl_expected ! 1111: 1105 0002F9EB 21 0d jneq L9993 ! 1112: 1106 0002F9ED 1d effffff64d effffff648 cmpl _dbl_st_acc+4,_dbl_expected+4 ! 1113: 1107 0002F9F8 31 42 jeql L319 ! 1114: 1108 0002F9FA L9993: ! 1115: 1109 0002F9FA # { ! 1116: 1110 0002F9FA # errcnt++; /* bump the error count */ ! 1117: 1111 0002F9FA 6d effffff63c incl _errcnt ! 1118: 1112 0002FA00 # if ( prt_error ) ! 1119: 1113 0002FA00 5d effffff636 tstl _prt_error ! 1120: 1114 0002FA06 31 0d jeql L320 ! 1121: 1115 0002FA08 # print_pipe14_er("Cache Data, 2 NOPs"); ! 1122: 1116 0002FA08 .data 1 ! 1123: 1117 0000105b * L321: ! 1124: 1118 0000105b * 436163686520446174612C203 .ascii "Cache Data, 2 NOPs\0" ! 1125: 2204E4F507300 ! 1126: 1119 0000106e * .text ! 1127: 1120 0002FA08 dd 8f0000105b pushl $L321 ! 1128: 1121 0002FA0E fe 08 ef000003eb callf $8,_print_pipe14_er ! 1129: 1122 0002FA15 # if ( halt_flg ) /* halt on error? */ ! 1130: 1123 0002FA15 L320: ! 1131: 1124 0002FA15 5d effffff621 tstl _halt_flg ! 1132: 1125 0002FA1B 31 0d jeql L322 ! 1133: 1126 0002FA1D # pipe14_er_hlt( subtest ); ! 1134: 1127 0002FA1D dd effffff619 pushl _subtest ! 1135: 1128 0002FA23 fe 08 ef00000554 callf $8,_pipe14_er_hlt ! 1136: 1129 0002FA2A # if ( loop_on_err ) { ! 1137: 1130 0002FA2A L322: ! 1138: 1131 0002FA2A 5d effffff60c tstl _loop_on_err ! 1139: 1132 0002FA30 31 0a jeql L323 ! 1140: 1133 0002FA32 # force_loop = TRUE; /* set the force loop flag */ ! 1141: 1134 0002FA32 0d 01 effffff603 movl $1,_force_loop ! 1142: 1135 0002FA39 # asm("brw _pipe14_7_lp1"); /* and loop */ ! 1143: 1136 0002FA39 13 ff74 brw _pipe14_7_lp1 ! 1144: 1137 0002FA3C # } ! 1145: 1138 0002FA3C # } /* end of compare error */ ! 1146: 1139 0002FA3C L323: ! 1147: 1140 0002FA3C # } while( index++ < max_divd_1_index ); ! 1148: 1141 0002FA3C L319: ! 1149: 1142 0002FA3C L316: ! 1150: 1143 0002FA3C 0d effffff5fa 50 movl _index,r0 ! 1151: 1144 0002FA43 6d effffff5f3 incl _index ! 1152: 1145 0002FA49 1d 50 effffff5ec cmpl r0,_max_divd_1_index ! 1153: 1146 0002FA50 81 03 13 fee4 jlss L317 ! 1154: 1147 0002FA55 L315: ! 1155: 1148 0002FA55 # } /* end of subtest 7 */ ! 1156: 1149 0002FA55 40 ret#2 ! 1157: 1150 0002FA56 .set L311,0x0 ! 1158: 1151 0002FA56 L313: ! 1159: 1152 0002FA56 13 fed4 jbr L314 ! 1160: 1153 0002FA59 .data ! 1161: 1154 00000fe4 * .text ! 1162: 1155 0002FA59 00 .align 1 ! 1163: 1156 0002FA5A .globl _pipe14_8 ! 1164: 1157 0002FA5A _pipe14_8: ! 1165: 1158 0002FA5A 0000 .word L324 ! 1166: 1159 0002FA5C # ! 1167: 1160 0002FA5C # ! 1168: 1161 0002FA5C # ! 1169: 1162 0002FA5C # ! 1170: 1163 0002FA5C # ! 1171: 1164 0002FA5C # ! 1172: 1165 0002FA5C # /************************************************************************ ! 1173: 1166 0002FA5C # * ! 1174: 1167 0002FA5C # * SUBTEST 8 ! 1175: 1168 0002FA5C # * data in cache, 3 NO-OPs ! 1176: 1169 0002FA5C # * ! 1177: 1170 0002FA5C # ************************************************************************/ ! 1178: 1171 0002FA5C # pipe14_8() ! 1179: 1172 0002FA5C # { ! 1180: 1173 0002FA5C 13 012d jbr L326 ! 1181: 1174 0002FA5F L327: ! 1182: 1175 0002FA5F # force_loop = FALSE; /* clear the force_loop flg */ ! 1183: 1176 0002FA5F 4d effffff5d7 clrl _force_loop ! 1184: 1177 0002FA65 # index = 0; ! 1185: 1178 0002FA65 4d effffff5d1 clrl _index ! 1186: 1179 0002FA6B # do ! 1187: 1180 0002FA6B L330: ! 1188: 1181 0002FA6B # { ! 1189: 1182 0002FA6B # dbl_value_1 = divd_1_data[index].op_1; /* get dbl operand # 1 */ ! 1190: 1183 0002FA6B 5c 18 effffff5ca 50 mull3 $24,_index,r0 ! 1191: 1184 0002FA73 0c 8f00000000 50 addl2 $_divd_1_data,r0 ! 1192: 1185 0002FA7A 0d a004 effffff5be movl 4(r0),_dbl_value_1+4 ! 1193: 1186 0002FA82 0d 60 effffff5b3 movl (r0),_dbl_value_1 ! 1194: 1187 0002FA89 # dbl_value_2 = divd_1_data[index].op_2; /* get dbl operand # 2 */ ! 1195: 1188 0002FA89 5c 18 effffff5ac 50 mull3 $24,_index,r0 ! 1196: 1189 0002FA91 0c 8f00000008 50 addl2 $_divd_1_data+8,r0 ! 1197: 1190 0002FA98 0d a004 effffff5a0 movl 4(r0),_dbl_value_2+4 ! 1198: 1191 0002FAA0 0d 60 effffff595 movl (r0),_dbl_value_2 ! 1199: 1192 0002FAA7 # dbl_expected = divd_1_data[index].exp; /* get expected results */ ! 1200: 1193 0002FAA7 5c 18 effffff58e 50 mull3 $24,_index,r0 ! 1201: 1194 0002FAAF 0c 8f00000010 50 addl2 $_divd_1_data+16,r0 ! 1202: 1195 0002FAB6 0d a004 effffff582 movl 4(r0),_dbl_expected+4 ! 1203: 1196 0002FABE 0d 60 effffff577 movl (r0),_dbl_expected ! 1204: 1197 0002FAC5 # dbl_dummy1.m = 0x40800000; /* get dbl precision 1.0 */ ! 1205: 1198 0002FAC5 0d 8f40800000 effffff56c movl $1082130432,_dbl_dummy1 ! 1206: 1199 0002FAD0 # dbl_dummy1.l = 0; ! 1207: 1200 0002FAD0 4d effffff56a clrl _dbl_dummy1+4 ! 1208: 1201 0002FAD6 # dbl_dummy2.m = 0; /* get dbl precision 0.0 */ ! 1209: 1202 0002FAD6 4d effffff560 clrl _dbl_dummy2 ! 1210: 1203 0002FADC # dbl_dummy2.l = 0; ! 1211: 1204 0002FADC 4d effffff55e clrl _dbl_dummy2+4 ! 1212: 1205 0002FAE2 # /* ! 1213: 1206 0002FAE2 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1214: 1207 0002FAE2 # * The force loop flag is set after the first error. ! 1215: 1208 0002FAE2 # */ ! 1216: 1209 0002FAE2 # asm("_pipe14_8_lp1:"); ! 1217: 1210 0002FAE2 _pipe14_8_lp1: ! 1218: 1211 0002FAE2 # asm("ldd _dbl_dummy2"); /* load a '0.0' ( 0 ) */ ! 1219: 1212 0002FAE2 07 effffff554 ldd _dbl_dummy2 ! 1220: 1213 0002FAE8 # asm("nop"); ! 1221: 1214 0002FAE8 10 nop ! 1222: 1215 0002FAE9 # asm("nop"); ! 1223: 1216 0002FAE9 10 nop ! 1224: 1217 0002FAEA # asm("nop"); ! 1225: 1218 0002FAEA 10 nop ! 1226: 1219 0002FAEB # asm("addd _dbl_value_1"); /* add operand 1 ( op1 ) */ ! 1227: 1220 0002FAEB c7 effffff54b addd _dbl_value_1 ! 1228: 1221 0002FAF1 # asm("nop"); ! 1229: 1222 0002FAF1 10 nop ! 1230: 1223 0002FAF2 # asm("nop"); ! 1231: 1224 0002FAF2 10 nop ! 1232: 1225 0002FAF3 # asm("nop"); ! 1233: 1226 0002FAF3 10 nop ! 1234: 1227 0002FAF4 # asm("divd _dbl_value_2"); /* div by operand 2 ( exp ) */ ! 1235: 1228 0002FAF4 f7 effffff542 divd _dbl_value_2 ! 1236: 1229 0002FAFA # asm("nop"); ! 1237: 1230 0002FAFA 10 nop ! 1238: 1231 0002FAFB # asm("nop"); ! 1239: 1232 0002FAFB 10 nop ! 1240: 1233 0002FAFC # asm("nop"); ! 1241: 1234 0002FAFC 10 nop ! 1242: 1235 0002FAFD # asm("muld _dbl_dummy1"); /* multiply by 1.0 ( exp ) */ ! 1243: 1236 0002FAFD e7 effffff539 muld _dbl_dummy1 ! 1244: 1237 0002FB03 # asm("nop"); ! 1245: 1238 0002FB03 10 nop ! 1246: 1239 0002FB04 # asm("nop"); ! 1247: 1240 0002FB04 10 nop ! 1248: 1241 0002FB05 # asm("nop"); ! 1249: 1242 0002FB05 10 nop ! 1250: 1243 0002FB06 # asm("std _dbl_st_acc"); /* store the result ( exp ) */ ! 1251: 1244 0002FB06 27 effffff530 std _dbl_st_acc ! 1252: 1245 0002FB0C # if( force_loop ) ! 1253: 1246 0002FB0C 5d effffff52a tstl _force_loop ! 1254: 1247 0002FB12 31 02 jeql L331 ! 1255: 1248 0002FB14 # asm("brb _pipe14_8_lp1");; /* run the loop again */ ! 1256: 1249 0002FB14 11 cc brb _pipe14_8_lp1 ! 1257: 1250 0002FB16 L331: ! 1258: 1251 0002FB16 # /* ! 1259: 1252 0002FB16 # * verify the results ! 1260: 1253 0002FB16 # */ ! 1261: 1254 0002FB16 # if( (dbl_st_acc.m != dbl_expected.m) || /* compare the results */ ! 1262: 1255 0002FB16 # (dbl_st_acc.l != dbl_expected.l) ) ! 1263: 1256 0002FB16 1d effffff520 effffff51b cmpl _dbl_st_acc,_dbl_expected ! 1264: 1257 0002FB21 21 0d jneq L9992 ! 1265: 1258 0002FB23 1d effffff517 effffff512 cmpl _dbl_st_acc+4,_dbl_expected+4 ! 1266: 1259 0002FB2E 31 42 jeql L332 ! 1267: 1260 0002FB30 L9992: ! 1268: 1261 0002FB30 # { ! 1269: 1262 0002FB30 # errcnt++; /* bump the error count */ ! 1270: 1263 0002FB30 6d effffff506 incl _errcnt ! 1271: 1264 0002FB36 # if ( prt_error ) ! 1272: 1265 0002FB36 5d effffff500 tstl _prt_error ! 1273: 1266 0002FB3C 31 0d jeql L333 ! 1274: 1267 0002FB3E # print_pipe14_er("Cache Data, 3 NOPs"); ! 1275: 1268 0002FB3E .data 1 ! 1276: 1269 0000106e * L334: ! 1277: 1270 0000106e * 436163686520446174612C203 .ascii "Cache Data, 3 NOPs\0" ! 1278: 3204E4F507300 ! 1279: 1271 00001081 * .text ! 1280: 1272 0002FB3E dd 8f0000106e pushl $L334 ! 1281: 1273 0002FB44 fe 08 ef000002b5 callf $8,_print_pipe14_er ! 1282: 1274 0002FB4B # if ( halt_flg ) /* halt on error? */ ! 1283: 1275 0002FB4B L333: ! 1284: 1276 0002FB4B 5d effffff4eb tstl _halt_flg ! 1285: 1277 0002FB51 31 0d jeql L335 ! 1286: 1278 0002FB53 # pipe14_er_hlt( subtest ); ! 1287: 1279 0002FB53 dd effffff4e3 pushl _subtest ! 1288: 1280 0002FB59 fe 08 ef0000041e callf $8,_pipe14_er_hlt ! 1289: 1281 0002FB60 # if ( loop_on_err ) { ! 1290: 1282 0002FB60 L335: ! 1291: 1283 0002FB60 5d effffff4d6 tstl _loop_on_err ! 1292: 1284 0002FB66 31 0a jeql L336 ! 1293: 1285 0002FB68 # force_loop = TRUE; /* set the force loop flag */ ! 1294: 1286 0002FB68 0d 01 effffff4cd movl $1,_force_loop ! 1295: 1287 0002FB6F # asm("brw _pipe14_8_lp1"); /* and loop */ ! 1296: 1288 0002FB6F 13 ff70 brw _pipe14_8_lp1 ! 1297: 1289 0002FB72 # } ! 1298: 1290 0002FB72 # } /* end of compare error */ ! 1299: 1291 0002FB72 L336: ! 1300: 1292 0002FB72 # } while( index++ < max_divd_1_index ); ! 1301: 1293 0002FB72 L332: ! 1302: 1294 0002FB72 L329: ! 1303: 1295 0002FB72 0d effffff4c4 50 movl _index,r0 ! 1304: 1296 0002FB79 6d effffff4bd incl _index ! 1305: 1297 0002FB7F 1d 50 effffff4b6 cmpl r0,_max_divd_1_index ! 1306: 1298 0002FB86 81 03 13 fee0 jlss L330 ! 1307: 1299 0002FB8B L328: ! 1308: 1300 0002FB8B # } /* end of subtest 8 */ ! 1309: 1301 0002FB8B 40 ret#2 ! 1310: 1302 0002FB8C .set L324,0x0 ! 1311: 1303 0002FB8C L326: ! 1312: 1304 0002FB8C 13 fed0 jbr L327 ! 1313: 1305 0002FB8F .data ! 1314: 1306 00000fe4 * .text ! 1315: 1307 0002FB8F 00 .align 1 ! 1316: 1308 0002FB90 .globl _pipe14_9 ! 1317: 1309 0002FB90 _pipe14_9: ! 1318: 1310 0002FB90 0000 .word L337 ! 1319: 1311 0002FB92 # ! 1320: 1312 0002FB92 # ! 1321: 1313 0002FB92 # ! 1322: 1314 0002FB92 # ! 1323: 1315 0002FB92 # ! 1324: 1316 0002FB92 # ! 1325: 1317 0002FB92 # ! 1326: 1318 0002FB92 # ! 1327: 1319 0002FB92 # ! 1328: 1320 0002FB92 # /****************************************************************************** ! 1329: 1321 0002FB92 # * ! 1330: 1322 0002FB92 # * SUBTEST 9 ! 1331: 1323 0002FB92 # * ! 1332: 1324 0002FB92 # * Get the data via the FRAME POINTER ( quad word indexed ) ! 1333: 1325 0002FB92 # * ! 1334: 1326 0002FB92 # * ADDRESSES OF DATA OPERANDS INDEX DATA ! 1335: 1327 0002FB92 # * pointer_data,-4 ( FP+40 ) 5 the STF result goes here ! 1336: 1328 0002FB92 # * pointer_data-8,-12 ( FP+32 ) 4 <operand #1 data> ! 1337: 1329 0002FB92 # * pointer_data-16,-20 ( FP+24 ) 3 <operand #2 data> ! 1338: 1330 0002FB92 # * pointer_data-24,-28 ( FP+16 ) 2 < '1.0' data> ! 1339: 1331 0002FB92 # * pointer_data-32,-36 ( FP+8 ) 1 < '0.0' data> ! 1340: 1332 0002FB92 # * pointer_data-40,-44 ( FP ) 0 point the frame pointer here ! 1341: 1333 0002FB92 # * ! 1342: 1334 0002FB92 # * NOTE: The double precision instructions are using Quad Word indexing. ! 1343: 1335 0002FB92 # ******************************************************************************/ ! 1344: 1336 0002FB92 # pipe14_9() ! 1345: 1337 0002FB92 # { ! 1346: 1338 0002FB92 13 0267 jbr L339 ! 1347: 1339 0002FB95 L340: ! 1348: 1340 0002FB95 # asm("moval (r13),_pre_event_fp"); /* save the frame pointer */ ! 1349: 1341 0002FB95 ed 6d effffff4a0 moval (r13),_pre_event_fp ! 1350: 1342 0002FB9C # asm("moval (r14),_pre_event_sp"); /* save the stack pointer */ ! 1351: 1343 0002FB9C ed 6e effffff499 moval (r14),_pre_event_sp ! 1352: 1344 0002FBA3 # force_loop = FALSE; /* clear force_loop flag */ ! 1353: 1345 0002FBA3 4d effffff493 clrl _force_loop ! 1354: 1346 0002FBA9 # index = 0; ! 1355: 1347 0002FBA9 4d effffff48d clrl _index ! 1356: 1348 0002FBAF # do ! 1357: 1349 0002FBAF L343: ! 1358: 1350 0002FBAF # { ! 1359: 1351 0002FBAF # sgl_value_1 = divd_1_data[index].op_1.m; /* get op. #1's MSW */ ! 1360: 1352 0002FBAF 5c 18 effffff486 50 mull3 $24,_index,r0 ! 1361: 1353 0002FBB7 0d e000000000 effffff47a movl _divd_1_data(r0),_sgl_value_1 ! 1362: 1354 0002FBC2 # sgl_value_2 = divd_1_data[index].op_1.l; /* get op. #1's LSW */ ! 1363: 1355 0002FBC2 5c 18 effffff473 50 mull3 $24,_index,r0 ! 1364: 1356 0002FBCA 0d e000000004 effffff467 movl _divd_1_data+4(r0),_sgl_value_2 ! 1365: 1357 0002FBD5 # sgl_value_3 = divd_1_data[index].op_2.m; /* get op. #2's MSW */ ! 1366: 1358 0002FBD5 5c 18 effffff460 50 mull3 $24,_index,r0 ! 1367: 1359 0002FBDD 0d e000000008 effffff454 movl _divd_1_data+8(r0),_sgl_value_3 ! 1368: 1360 0002FBE8 # sgl_value_4 = divd_1_data[index].op_2.l; /* get op. #2's LSW */ ! 1369: 1361 0002FBE8 5c 18 effffff44d 50 mull3 $24,_index,r0 ! 1370: 1362 0002FBF0 0d e00000000c effffff441 movl _divd_1_data+12(r0),_sgl_value_4 ! 1371: 1363 0002FBFB # sgl_value_7 = 0x40800000; /* get the '1.0' data */ ! 1372: 1364 0002FBFB 0d 8f40800000 effffff436 movl $1082130432,_sgl_value_7 ! 1373: 1365 0002FC06 # sgl_value_8 = 0; ! 1374: 1366 0002FC06 4d effffff430 clrl _sgl_value_8 ! 1375: 1367 0002FC0C # dbl_expected = divd_1_data[index].exp; /* get expected results */ ! 1376: 1368 0002FC0C 5c 18 effffff429 50 mull3 $24,_index,r0 ! 1377: 1369 0002FC14 0c 8f00000010 50 addl2 $_divd_1_data+16,r0 ! 1378: 1370 0002FC1B 0d a004 effffff41d movl 4(r0),_dbl_expected+4 ! 1379: 1371 0002FC23 0d 60 effffff412 movl (r0),_dbl_expected ! 1380: 1372 0002FC2A # /* ! 1381: 1373 0002FC2A # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1382: 1374 0002FC2A # * The force loop flag is set after the first error. ! 1383: 1375 0002FC2A # */ ! 1384: 1376 0002FC2A # asm("_pipe14_9_lp1:"); ! 1385: 1377 0002FC2A _pipe14_9_lp1: ! 1386: 1378 0002FC2A # asm("moval _pointer_data,_sgl_value_9");/* get store data's addr */ ! 1387: 1379 0002FC2A ed effffff40c effffff407 moval _pointer_data,_sgl_value_9 ! 1388: 1380 0002FC35 # sgl_value_9 -= 8; ! 1389: 1381 0002FC35 2c 08 effffff400 subl2 $8,_sgl_value_9 ! 1390: 1382 0002FC3C # asm("movl _sgl_value_2,*_sgl_value_9"); /* set operand #1's LSW */ ! 1391: 1383 0002FC3C 0d effffff3fa fffffff3f5 movl _sgl_value_2,*_sgl_value_9 ! 1392: 1384 0002FC47 # sgl_value_9 -= 4; ! 1393: 1385 0002FC47 2c 04 effffff3ee subl2 $4,_sgl_value_9 ! 1394: 1386 0002FC4E # asm("movl _sgl_value_1,*_sgl_value_9"); /* set operand #1's MSW */ ! 1395: 1387 0002FC4E 0d effffff3e8 fffffff3e3 movl _sgl_value_1,*_sgl_value_9 ! 1396: 1388 0002FC59 # sgl_value_9 -= 4; ! 1397: 1389 0002FC59 2c 04 effffff3dc subl2 $4,_sgl_value_9 ! 1398: 1390 0002FC60 # asm("movl _sgl_value_4,*_sgl_value_9"); /* set operand #2's LSW */ ! 1399: 1391 0002FC60 0d effffff3d6 fffffff3d1 movl _sgl_value_4,*_sgl_value_9 ! 1400: 1392 0002FC6B # sgl_value_9 -= 4; ! 1401: 1393 0002FC6B 2c 04 effffff3ca subl2 $4,_sgl_value_9 ! 1402: 1394 0002FC72 # asm("movl _sgl_value_3,*_sgl_value_9"); /* set operand #2's MSW */ ! 1403: 1395 0002FC72 0d effffff3c4 fffffff3bf movl _sgl_value_3,*_sgl_value_9 ! 1404: 1396 0002FC7D # sgl_value_9 -= 4; ! 1405: 1397 0002FC7D 2c 04 effffff3b8 subl2 $4,_sgl_value_9 ! 1406: 1398 0002FC84 # asm("movl _sgl_value_8,*_sgl_value_9"); /* set '1.0' data's LSW */ ! 1407: 1399 0002FC84 0d effffff3b2 fffffff3ad movl _sgl_value_8,*_sgl_value_9 ! 1408: 1400 0002FC8F # sgl_value_9 -= 4; ! 1409: 1401 0002FC8F 2c 04 effffff3a6 subl2 $4,_sgl_value_9 ! 1410: 1402 0002FC96 # asm("movl _sgl_value_7,*_sgl_value_9"); /* set '1.0' data's MSW */ ! 1411: 1403 0002FC96 0d effffff3a0 fffffff39b movl _sgl_value_7,*_sgl_value_9 ! 1412: 1404 0002FCA1 # sgl_value_9 -= 4; ! 1413: 1405 0002FCA1 2c 04 effffff394 subl2 $4,_sgl_value_9 ! 1414: 1406 0002FCA8 # asm("movl _sgl_value_8,*_sgl_value_9"); /* set '0.0' data's LSW */ ! 1415: 1407 0002FCA8 0d effffff38e fffffff389 movl _sgl_value_8,*_sgl_value_9 ! 1416: 1408 0002FCB3 # sgl_value_9 -= 4; ! 1417: 1409 0002FCB3 2c 04 effffff382 subl2 $4,_sgl_value_9 ! 1418: 1410 0002FCBA # asm("movl _sgl_value_8,*_sgl_value_9"); /* set '0.0' data's MSW */ ! 1419: 1411 0002FCBA 0d effffff37c fffffff377 movl _sgl_value_8,*_sgl_value_9 ! 1420: 1412 0002FCC5 # sgl_value_9 -= 8; /* get FRAME PTR's value */ ! 1421: 1413 0002FCC5 2c 08 effffff370 subl2 $8,_sgl_value_9 ! 1422: 1414 0002FCCC # asm("movl _sgl_value_9,r13"); /* set the FRAME POINTER */ ! 1423: 1415 0002FCCC 0d effffff36a 5d movl _sgl_value_9,r13 ! 1424: 1416 0002FCD3 # asm("movl $1,r2"); /* r2 index = 1 quadwords */ ! 1425: 1417 0002FCD3 0d 01 52 movl $1,r2 ! 1426: 1418 0002FCD6 # asm("movl $2,r3"); /* r3 index = 2 quadwords */ ! 1427: 1419 0002FCD6 0d 02 53 movl $2,r3 ! 1428: 1420 0002FCD9 # asm("movl $3,r4"); /* r4 index = 3 quadwords */ ! 1429: 1421 0002FCD9 0d 03 54 movl $3,r4 ! 1430: 1422 0002FCDC # asm("movl $4,r5"); /* r5 index = 4 quadwords */ ! 1431: 1423 0002FCDC 0d 04 55 movl $4,r5 ! 1432: 1424 0002FCDF # asm("movl $5,r6"); /* r6 index = 5 quadwords */ ! 1433: 1425 0002FCDF 0d 05 56 movl $5,r6 ! 1434: 1426 0002FCE2 # asm("ldd (r13)[r2]"); /* load a '0.0' ( 0 ) */ ! 1435: 1427 0002FCE2 07 426d ldd (r13)[r2] ! 1436: 1428 0002FCE5 # asm("addd (r13)[r5]"); /* add op. #1 ( op1 ) */ ! 1437: 1429 0002FCE5 c7 456d addd (r13)[r5] ! 1438: 1430 0002FCE8 # asm("divd (r13)[r4]"); /* divide by op. #2 ( exp ) */ ! 1439: 1431 0002FCE8 f7 446d divd (r13)[r4] ! 1440: 1432 0002FCEB # asm("muld (r13)[r3]"); /* multiply by '1.0' ( exp ) */ ! 1441: 1433 0002FCEB e7 436d muld (r13)[r3] ! 1442: 1434 0002FCEE # asm("std (r13)[r6]"); /* store the result ( exp ) */ ! 1443: 1435 0002FCEE 27 466d std (r13)[r6] ! 1444: 1436 0002FCF1 # if( force_loop ) ! 1445: 1437 0002FCF1 5d effffff345 tstl _force_loop ! 1446: 1438 0002FCF7 31 03 jeql L344 ! 1447: 1439 0002FCF9 # asm("brw _pipe14_9_lp1");; /* run the loop again */ ! 1448: 1440 0002FCF9 13 ff2e brw _pipe14_9_lp1 ! 1449: 1441 0002FCFC L344: ! 1450: 1442 0002FCFC # /* ! 1451: 1443 0002FCFC # * verify the results ! 1452: 1444 0002FCFC # */ ! 1453: 1445 0002FCFC # asm("moval (r13),_sgl_value_10"); /* save the frame pointer */ ! 1454: 1446 0002FCFC ed 6d effffff339 moval (r13),_sgl_value_10 ! 1455: 1447 0002FD03 # asm("movl _pointer_data,_sgl_value_6"); /* save the LSW stored */ ! 1456: 1448 0002FD03 0d effffff333 effffff32e movl _pointer_data,_sgl_value_6 ! 1457: 1449 0002FD0E # asm("movl _pointer_data-4,_sgl_value_5"); /* and the MSW */ ! 1458: 1450 0002FD0E 0d effffff324 effffff323 movl _pointer_data-4,_sgl_value_5 ! 1459: 1451 0002FD19 # if( (sgl_value_5 != dbl_expected.m) || /* verify the result... */ ! 1460: 1452 0002FD19 # (sgl_value_6 != dbl_expected.l) || /* verify the result... */ ! 1461: 1453 0002FD19 # (sgl_value_10 != sgl_value_9) ) /* ... and the final FP */ ! 1462: 1454 0002FD19 1d effffff31d effffff318 cmpl _sgl_value_5,_dbl_expected ! 1463: 1455 0002FD24 21 1d jneq L9991 ! 1464: 1456 0002FD26 1d effffff310 effffff30f cmpl _sgl_value_6,_dbl_expected+4 ! 1465: 1457 0002FD31 21 10 jneq L9991 ! 1466: 1458 0002FD33 1d effffff303 effffff2fe cmpl _sgl_value_10,_sgl_value_9 ! 1467: 1459 0002FD3E 21 03 13 0091 jeql L345 ! 1468: 1460 0002FD43 L9991: ! 1469: 1461 0002FD43 # { ! 1470: 1462 0002FD43 # asm("movl _pre_event_fp,r13"); /* restore frame pointer */ ! 1471: 1463 0002FD43 0d effffff2f3 5d movl _pre_event_fp,r13 ! 1472: 1464 0002FD4A # asm("movl _pre_event_sp,r14"); /* restore stack pointer */ ! 1473: 1465 0002FD4A 0d effffff2ec 5e movl _pre_event_sp,r14 ! 1474: 1466 0002FD51 # errcnt++; /* bump the error count */ ! 1475: 1467 0002FD51 6d effffff2e5 incl _errcnt ! 1476: 1468 0002FD57 # if ( prt_error ) { ! 1477: 1469 0002FD57 5d effffff2df tstl _prt_error ! 1478: 1470 0002FD5D 31 4e jeql L346 ! 1479: 1471 0002FD5F # print_pipe14_er("indexed FP addressing.\n"); ! 1480: 1472 0002FD5F .data 1 ! 1481: 1473 00001081 * L347: ! 1482: 1474 00001081 * 696E646578656420465020616 .ascii "indexed FP addressing.\12\0" ! 1483: 46472657373696E672E0A00 ! 1484: 1475 00001099 * .text ! 1485: 1476 0002FD5F dd 8f00001081 pushl $L347 ! 1486: 1477 0002FD65 fe 08 ef00000094 callf $8,_print_pipe14_er ! 1487: 1478 0002FD6C # writes("final Frame Pointer = "); ! 1488: 1479 0002FD6C .data 1 ! 1489: 1480 00001099 * L348: ! 1490: 1481 00001099 * 66696E616C204672616D65205 .ascii "final Frame Pointer = \0" ! 1491: 06F696E746572203D2000 ! 1492: 1482 000010b0 * .text ! 1493: 1483 0002FD6C dd 8f00001099 pushl $L348 ! 1494: 1484 0002FD72 fe 08 effffff2c3 callf $8,_writes ! 1495: 1485 0002FD79 # write32h( sgl_value_10 ); ! 1496: 1486 0002FD79 dd effffff2bd pushl _sgl_value_10 ! 1497: 1487 0002FD7F fe 08 effffff2b6 callf $8,_write32h ! 1498: 1488 0002FD86 # writes(", expected FP = "); ! 1499: 1489 0002FD86 .data 1 ! 1500: 1490 000010b0 * L350: ! 1501: 1491 000010b0 * 2C20206578706563746564204 .ascii ", expected FP = \0" ! 1502: 650203D2000 ! 1503: 1492 000010c2 * .text ! 1504: 1493 0002FD86 dd 8f000010b0 pushl $L350 ! 1505: 1494 0002FD8C fe 08 effffff2a9 callf $8,_writes ! 1506: 1495 0002FD93 # write32h( sgl_value_9 ); ! 1507: 1496 0002FD93 dd effffff2a3 pushl _sgl_value_9 ! 1508: 1497 0002FD99 fe 08 effffff29c callf $8,_write32h ! 1509: 1498 0002FDA0 # writes(" \n"); ! 1510: 1499 0002FDA0 .data 1 ! 1511: 1500 000010c2 * L351: ! 1512: 1501 000010c2 * 200A00 .ascii " \12\0" ! 1513: 1502 000010c5 * .text ! 1514: 1503 0002FDA0 dd 8f000010c2 pushl $L351 ! 1515: 1504 0002FDA6 fe 08 effffff28f callf $8,_writes ! 1516: 1505 0002FDAD # } ! 1517: 1506 0002FDAD # if ( halt_flg ) ! 1518: 1507 0002FDAD L346: ! 1519: 1508 0002FDAD 5d effffff289 tstl _halt_flg ! 1520: 1509 0002FDB3 31 0d jeql L352 ! 1521: 1510 0002FDB5 # pipe14_er_hlt( subtest ); ! 1522: 1511 0002FDB5 dd effffff281 pushl _subtest ! 1523: 1512 0002FDBB fe 08 ef000001bc callf $8,_pipe14_er_hlt ! 1524: 1513 0002FDC2 # if ( loop_on_err ) { ! 1525: 1514 0002FDC2 L352: ! 1526: 1515 0002FDC2 5d effffff274 tstl _loop_on_err ! 1527: 1516 0002FDC8 31 0a jeql L353 ! 1528: 1517 0002FDCA # force_loop = TRUE; /* set the force loop flag */ ! 1529: 1518 0002FDCA 0d 01 effffff26b movl $1,_force_loop ! 1530: 1519 0002FDD1 # asm("brw _pipe14_9_lp1"); /* and loop */ ! 1531: 1520 0002FDD1 13 fe56 brw _pipe14_9_lp1 ! 1532: 1521 0002FDD4 # } ! 1533: 1522 0002FDD4 # } /* end of compare error */ ! 1534: 1523 0002FDD4 L353: ! 1535: 1524 0002FDD4 # } while( index++ < max_divd_1_index ); ! 1536: 1525 0002FDD4 L345: ! 1537: 1526 0002FDD4 L342: ! 1538: 1527 0002FDD4 0d effffff262 50 movl _index,r0 ! 1539: 1528 0002FDDB 6d effffff25b incl _index ! 1540: 1529 0002FDE1 1d 50 effffff254 cmpl r0,_max_divd_1_index ! 1541: 1530 0002FDE8 81 03 13 fdc2 jlss L343 ! 1542: 1531 0002FDED L341: ! 1543: 1532 0002FDED # asm("movl _pre_event_fp,r13"); /* restore the frame pointer */ ! 1544: 1533 0002FDED 0d effffff249 5d movl _pre_event_fp,r13 ! 1545: 1534 0002FDF4 # asm("movl _pre_event_sp,r14"); /* restore the stack pointer */ ! 1546: 1535 0002FDF4 0d effffff242 5e movl _pre_event_sp,r14 ! 1547: 1536 0002FDFB # } /* end of subtest 9 */ ! 1548: 1537 0002FDFB 40 ret#2 ! 1549: 1538 0002FDFC .set L337,0x0 ! 1550: 1539 0002FDFC L339: ! 1551: 1540 0002FDFC 13 fd96 jbr L340 ! 1552: 1541 0002FDFF .data ! 1553: 1542 00000fe4 * .text ! 1554: 1543 0002FDFF 00 .align 1 ! 1555: 1544 0002FE00 .globl _print_pipe14_er ! 1556: 1545 0002FE00 _print_pipe14_er: ! 1557: 1546 0002FE00 0000 .word L354 ! 1558: 1547 0002FE02 # ! 1559: 1548 0002FE02 # ! 1560: 1549 0002FE02 # /****************************************************************************** ! 1561: 1550 0002FE02 # * ! 1562: 1551 0002FE02 # * ERROR ROUTINE ! 1563: 1552 0002FE02 # * ! 1564: 1553 0002FE02 # * print an error in the following form ! 1565: 1554 0002FE02 # * ! 1566: 1555 0002FE02 # *operand 1 = xxxxxxxx xxxxxxxx, final Acc = xxxxxxxx xxxxxxxx, index = dd ! 1567: 1556 0002FE02 # *operand 2 = xxxxxxxx xxxxxxxx, expected Acc = xxxxxxxx xxxxxxxx ! 1568: 1557 0002FE02 # * ! 1569: 1558 0002FE02 # ******************************************************************************/ ! 1570: 1559 0002FE02 # print_pipe14_er(msg) ! 1571: 1560 0002FE02 # char *msg; ! 1572: 1561 0002FE02 # { ! 1573: 1562 0002FE02 13 0175 jbr L356 ! 1574: 1563 0002FE05 L357: ! 1575: 1564 0002FE05 # writes(" \n"); /* start a new print line */ ! 1576: 1565 0002FE05 .data 1 ! 1577: 1566 000010c5 * L358: ! 1578: 1567 000010c5 * 200A00 .ascii " \12\0" ! 1579: 1568 000010c8 * .text ! 1580: 1569 0002FE05 dd 8f000010c5 pushl $L358 ! 1581: 1570 0002FE0B fe 08 effffff22a callf $8,_writes ! 1582: 1571 0002FE12 # writes("cycle: "); ! 1583: 1572 0002FE12 .data 1 ! 1584: 1573 000010c8 * L359: ! 1585: 1574 000010c8 * 6379636C653A2000 .ascii "cycle: \0" ! 1586: 1575 000010d0 * .text ! 1587: 1576 0002FE12 dd 8f000010c8 pushl $L359 ! 1588: 1577 0002FE18 fe 08 effffff21d callf $8,_writes ! 1589: 1578 0002FE1F # writed( cycle ); ! 1590: 1579 0002FE1F dd effffff217 pushl _cycle ! 1591: 1580 0002FE25 fe 08 effffff210 callf $8,_writed ! 1592: 1581 0002FE2C # writes(" test "); ! 1593: 1582 0002FE2C .data 1 ! 1594: 1583 000010d0 * L361: ! 1595: 1584 000010d0 * 20746573742000 .ascii " test \0" ! 1596: 1585 000010d7 * .text ! 1597: 1586 0002FE2C dd 8f000010d0 pushl $L361 ! 1598: 1587 0002FE32 fe 08 effffff203 callf $8,_writes ! 1599: 1588 0002FE39 # writed( test_no ); ! 1600: 1589 0002FE39 dd effffff1fd pushl _test_no ! 1601: 1590 0002FE3F fe 08 effffff1f6 callf $8,_writed ! 1602: 1591 0002FE46 # writes(" (Pipe 14), subtest "); ! 1603: 1592 0002FE46 .data 1 ! 1604: 1593 000010d7 * L362: ! 1605: 1594 000010d7 * 20202850697065203134292C2 .ascii " (Pipe 14), subtest \0" ! 1606: 0737562746573742000 ! 1607: 1595 000010ed * .text ! 1608: 1596 0002FE46 dd 8f000010d7 pushl $L362 ! 1609: 1597 0002FE4C fe 08 effffff1e9 callf $8,_writes ! 1610: 1598 0002FE53 # writed( subtest ); ! 1611: 1599 0002FE53 dd effffff1e3 pushl _subtest ! 1612: 1600 0002FE59 fe 08 effffff1dc callf $8,_writed ! 1613: 1601 0002FE60 # writes(" error - "); ! 1614: 1602 0002FE60 .data 1 ! 1615: 1603 000010ed * L363: ! 1616: 1604 000010ed * 206572726F72202D2000 .ascii " error - \0" ! 1617: 1605 000010f7 * .text ! 1618: 1606 0002FE60 dd 8f000010ed pushl $L363 ! 1619: 1607 0002FE66 fe 08 effffff1cf callf $8,_writes ! 1620: 1608 0002FE6D # writes( msg ); ! 1621: 1609 0002FE6D dd ad04 pushl 4(fp) ! 1622: 1610 0002FE70 fe 08 effffff1c5 callf $8,_writes ! 1623: 1611 0002FE77 # writec('\n'); ! 1624: 1612 0002FE77 dd 0a pushl $10 ! 1625: 1613 0002FE79 fe 08 effffff1bc callf $8,_writec ! 1626: 1614 0002FE80 # writes(" LDD(0.0) ADDD(op1) DIVD(op2) MULD(1.0) STD\n"); ! 1627: 1615 0002FE80 .data 1 ! 1628: 1616 000010f7 * L365: ! 1629: 1617 000010f7 * 204C444428302E30292020414 .ascii " LDD(0.0) ADDD(op1) DIVD(op2) MULD(1.0) STD\12\0" ! 1630: 44444286F7031292020444956 ! 1631: 44286F70322920204D554C442 ! 1632: 8312E302920205354440A00 ! 1633: 1618 00001128 * .text ! 1634: 1619 0002FE80 dd 8f000010f7 pushl $L365 ! 1635: 1620 0002FE86 fe 08 effffff1af callf $8,_writes ! 1636: 1621 0002FE8D # writes("operand 1 = "); ! 1637: 1622 0002FE8D .data 1 ! 1638: 1623 00001128 * L366: ! 1639: 1624 00001128 * 6F706572616E642031203D200 .ascii "operand 1 = \0" ! 1640: 0 ! 1641: 1625 00001135 * .text ! 1642: 1626 0002FE8D dd 8f00001128 pushl $L366 ! 1643: 1627 0002FE93 fe 08 effffff1a2 callf $8,_writes ! 1644: 1628 0002FE9A # write32h( sgl_value_1 ); ! 1645: 1629 0002FE9A dd effffff19c pushl _sgl_value_1 ! 1646: 1630 0002FEA0 fe 08 effffff195 callf $8,_write32h ! 1647: 1631 0002FEA7 # writec(' '); ! 1648: 1632 0002FEA7 dd 20 pushl $32 ! 1649: 1633 0002FEA9 fe 08 effffff18c callf $8,_writec ! 1650: 1634 0002FEB0 # write32h( sgl_value_2 ); ! 1651: 1635 0002FEB0 dd effffff186 pushl _sgl_value_2 ! 1652: 1636 0002FEB6 fe 08 effffff17f callf $8,_write32h ! 1653: 1637 0002FEBD # writes(", final Acc = "); ! 1654: 1638 0002FEBD .data 1 ! 1655: 1639 00001135 * L367: ! 1656: 1640 00001135 * 2C2020202066696E616C20416 .ascii ", final Acc = \0" ! 1657: 363203D2000 ! 1658: 1641 00001147 * .text ! 1659: 1642 0002FEBD dd 8f00001135 pushl $L367 ! 1660: 1643 0002FEC3 fe 08 effffff172 callf $8,_writes ! 1661: 1644 0002FECA # write32h( dbl_st_acc.m ); ! 1662: 1645 0002FECA dd effffff16c pushl _dbl_st_acc ! 1663: 1646 0002FED0 fe 08 effffff165 callf $8,_write32h ! 1664: 1647 0002FED7 # writec(' '); ! 1665: 1648 0002FED7 dd 20 pushl $32 ! 1666: 1649 0002FED9 fe 08 effffff15c callf $8,_writec ! 1667: 1650 0002FEE0 # write32h( dbl_st_acc.l ); ! 1668: 1651 0002FEE0 dd effffff15a pushl _dbl_st_acc+4 ! 1669: 1652 0002FEE6 fe 08 effffff14f callf $8,_write32h ! 1670: 1653 0002FEED # writes(", index = "); ! 1671: 1654 0002FEED .data 1 ! 1672: 1655 00001147 * L368: ! 1673: 1656 00001147 * 2C202020696E646578203D200 .ascii ", index = \0" ! 1674: 0 ! 1675: 1657 00001154 * .text ! 1676: 1658 0002FEED dd 8f00001147 pushl $L368 ! 1677: 1659 0002FEF3 fe 08 effffff142 callf $8,_writes ! 1678: 1660 0002FEFA # writed( index ); ! 1679: 1661 0002FEFA dd effffff13c pushl _index ! 1680: 1662 0002FF00 fe 08 effffff135 callf $8,_writed ! 1681: 1663 0002FF07 # writec('\n'); ! 1682: 1664 0002FF07 dd 0a pushl $10 ! 1683: 1665 0002FF09 fe 08 effffff12c callf $8,_writec ! 1684: 1666 0002FF10 # writes("operand 2 = "); ! 1685: 1667 0002FF10 .data 1 ! 1686: 1668 00001154 * L369: ! 1687: 1669 00001154 * 6F706572616E642032203D200 .ascii "operand 2 = \0" ! 1688: 0 ! 1689: 1670 00001161 * .text ! 1690: 1671 0002FF10 dd 8f00001154 pushl $L369 ! 1691: 1672 0002FF16 fe 08 effffff11f callf $8,_writes ! 1692: 1673 0002FF1D # write32h( sgl_value_3 ); ! 1693: 1674 0002FF1D dd effffff119 pushl _sgl_value_3 ! 1694: 1675 0002FF23 fe 08 effffff112 callf $8,_write32h ! 1695: 1676 0002FF2A # writec(' '); ! 1696: 1677 0002FF2A dd 20 pushl $32 ! 1697: 1678 0002FF2C fe 08 effffff109 callf $8,_writec ! 1698: 1679 0002FF33 # write32h( sgl_value_4 ); ! 1699: 1680 0002FF33 dd effffff103 pushl _sgl_value_4 ! 1700: 1681 0002FF39 fe 08 effffff0fc callf $8,_write32h ! 1701: 1682 0002FF40 # writes(", expected Acc = "); ! 1702: 1683 0002FF40 .data 1 ! 1703: 1684 00001161 * L370: ! 1704: 1685 00001161 * 2C20657870656374656420416 .ascii ", expected Acc = \0" ! 1705: 363203D2000 ! 1706: 1686 00001173 * .text ! 1707: 1687 0002FF40 dd 8f00001161 pushl $L370 ! 1708: 1688 0002FF46 fe 08 effffff0ef callf $8,_writes ! 1709: 1689 0002FF4D # write32h( dbl_expected.m ); ! 1710: 1690 0002FF4D dd effffff0e9 pushl _dbl_expected ! 1711: 1691 0002FF53 fe 08 effffff0e2 callf $8,_write32h ! 1712: 1692 0002FF5A # writec(' '); ! 1713: 1693 0002FF5A dd 20 pushl $32 ! 1714: 1694 0002FF5C fe 08 effffff0d9 callf $8,_writec ! 1715: 1695 0002FF63 # write32h( dbl_expected.l ); ! 1716: 1696 0002FF63 dd effffff0d7 pushl _dbl_expected+4 ! 1717: 1697 0002FF69 fe 08 effffff0cc callf $8,_write32h ! 1718: 1698 0002FF70 # writec('\n'); ! 1719: 1699 0002FF70 dd 0a pushl $10 ! 1720: 1700 0002FF72 fe 08 effffff0c3 callf $8,_writec ! 1721: 1701 0002FF79 # } ! 1722: 1702 0002FF79 40 ret#2 ! 1723: 1703 0002FF7A .set L354,0x0 ! 1724: 1704 0002FF7A L356: ! 1725: 1705 0002FF7A 13 fe88 jbr L357 ! 1726: 1706 0002FF7D .data ! 1727: 1707 00000fe4 * .text ! 1728: 1708 0002FF7D 00 .align 1 ! 1729: 1709 0002FF7E .globl _pipe14_er_hlt ! 1730: 1710 0002FF7E _pipe14_er_hlt: ! 1731: 1711 0002FF7E 0000 .word L371 ! 1732: 1712 0002FF80 # ! 1733: 1713 0002FF80 # ! 1734: 1714 0002FF80 # ! 1735: 1715 0002FF80 # ! 1736: 1716 0002FF80 # ! 1737: 1717 0002FF80 # /****************************************************************************** ! 1738: 1718 0002FF80 # * ! 1739: 1719 0002FF80 # * HALT ON ERROR ROUTINE ! 1740: 1720 0002FF80 # * ! 1741: 1721 0002FF80 # * halt with the necessary information saved in the registers ! 1742: 1722 0002FF80 # * ! 1743: 1723 0002FF80 # ******************************************************************************/ ! 1744: 1724 0002FF80 # pipe14_er_hlt( subtest ) ! 1745: 1725 0002FF80 # int subtest; ! 1746: 1726 0002FF80 # { ! 1747: 1727 0002FF80 13 0099 jbr L373 ! 1748: 1728 0002FF83 L374: ! 1749: 1729 0002FF83 # sgl_value_5 = dbl_st_acc.m; ! 1750: 1730 0002FF83 0d effffff0b3 effffff0ae movl _dbl_st_acc,_sgl_value_5 ! 1751: 1731 0002FF8E # sgl_value_6 = dbl_st_acc.l; ! 1752: 1732 0002FF8E 0d effffff0ac effffff0a3 movl _dbl_st_acc+4,_sgl_value_6 ! 1753: 1733 0002FF99 # sgl_value_7 = dbl_expected.m; ! 1754: 1734 0002FF99 0d effffff09d effffff098 movl _dbl_expected,_sgl_value_7 ! 1755: 1735 0002FFA4 # sgl_value_8 = dbl_expected.l; ! 1756: 1736 0002FFA4 0d effffff096 effffff08d movl _dbl_expected+4,_sgl_value_8 ! 1757: 1737 0002FFAF # asm("movl _test_no,r0"); /* r0 = test number */ ! 1758: 1738 0002FFAF 0d effffff087 50 movl _test_no,r0 ! 1759: 1739 0002FFB6 # asm("movl _subtest,r1"); /* r1 = subtest number */ ! 1760: 1740 0002FFB6 0d effffff080 51 movl _subtest,r1 ! 1761: 1741 0002FFBD # asm("movl $1,r2"); /* r2 = error code */ ! 1762: 1742 0002FFBD 0d 01 52 movl $1,r2 ! 1763: 1743 0002FFC0 # asm("movl _cycle,r3"); /* r3 = cycle count */ ! 1764: 1744 0002FFC0 0d effffff076 53 movl _cycle,r3 ! 1765: 1745 0002FFC7 # asm("movl _sgl_value_1,r4"); /* r4 = MSW operand one */ ! 1766: 1746 0002FFC7 0d effffff06f 54 movl _sgl_value_1,r4 ! 1767: 1747 0002FFCE # asm("movl _sgl_value_2,r5"); /* r5 = LSW operand one */ ! 1768: 1748 0002FFCE 0d effffff068 55 movl _sgl_value_2,r5 ! 1769: 1749 0002FFD5 # asm("movl _sgl_value_3,r6"); /* r6 = MSW operand two */ ! 1770: 1750 0002FFD5 0d effffff061 56 movl _sgl_value_3,r6 ! 1771: 1751 0002FFDC # asm("movl _sgl_value_4,r7"); /* r7 = LSW operand two */ ! 1772: 1752 0002FFDC 0d effffff05a 57 movl _sgl_value_4,r7 ! 1773: 1753 0002FFE3 # asm("movl _sgl_value_5,r8"); /* r8 = MSW operand stored */ ! 1774: 1754 0002FFE3 0d effffff053 58 movl _sgl_value_5,r8 ! 1775: 1755 0002FFEA # asm("movl _sgl_value_6,r9"); /* r9 = LSW operand stored */ ! 1776: 1756 0002FFEA 0d effffff04c 59 movl _sgl_value_6,r9 ! 1777: 1757 0002FFF1 # asm("movl _sgl_value_7,r10"); /* r10 = MSW operand exp */ ! 1778: 1758 0002FFF1 0d effffff045 5a movl _sgl_value_7,r10 ! 1779: 1759 0002FFF8 # asm("movl _sgl_value_8,r11"); /* r11 = LSW operand exp */ ! 1780: 1760 0002FFF8 0d effffff03e 5b movl _sgl_value_8,r11 ! 1781: 1761 0002FFFF # asm("movl _index,r12"); /* r12 = data index */ ! 1782: 1762 0002FFFF 0d effffff037 5c movl _index,r12 ! 1783: 1763 00030006 # if( subtest == 9 ) { ! 1784: 1764 00030006 1d ad04 09 cmpl 4(fp),$9 ! 1785: 1765 0003000A 21 0e jneq L375 ! 1786: 1766 0003000C # asm("movl _sgl_value_10,r13"); /* r13 = final FP value */ ! 1787: 1767 0003000C 0d effffff02a 5d movl _sgl_value_10,r13 ! 1788: 1768 00030013 # asm("movl _sgl_value_9,r14"); /* r14 = expected FP value */ ! 1789: 1769 00030013 0d effffff023 5e movl _sgl_value_9,r14 ! 1790: 1770 0003001A # }; ! 1791: 1771 0003001A L375: ! 1792: 1772 0003001A # asm(".globl _pipe14_1_hlt"); ! 1793: 1773 0003001A .globl _pipe14_1_hlt ! 1794: 1774 0003001A # asm("_pipe14_1_hlt:"); /* PC after the halt */ ! 1795: 1775 0003001A _pipe14_1_hlt: ! 1796: 1776 0003001A # asm("halt"); /* HALT ... */ ! 1797: 1777 0003001A 00 halt ! 1798: 1778 0003001B # } /* end of halt on error */ ! 1799: 1779 0003001B 40 ret#2 ! 1800: 1780 0003001C .set L371,0x0 ! 1801: 1781 0003001C L373: ! 1802: 1782 0003001C 13 ff64 jbr L374 ! 1803: 1783 0003001F .data ! 1804: 1783 0005F05B .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.