|
|
1.1 ! root 1: 1 00000000 LL0: ! 2: 2 00000000 .data ! 3: 3 00000a60 * .text ! 4: 4 00000000 .align 1 ! 5: 5 00000000 .globl _sqrtf ! 6: 6 00000000 _sqrtf: ! 7: 7 000200FC 0000 .word L215 ! 8: 8 000200FE # #include "fpp_defs.h" ! 9: 9 000200FE # ! 10: 10 000200FE # ! 11: 11 000200FE # ! 12: 12 000200FE # /*************************************************************************** ! 13: 13 000200FE # * ! 14: 14 000200FE # * SQRTF - SINGLE PRECISION FLOATING POINT SQUARE-ROOT FUNCTION TEST ! 15: 15 000200FE # * ! 16: 16 000200FE # * SQRTF TEST MONITOR ! 17: 17 000200FE # * ! 18: 18 000200FE # *****************************************************************************/ ! 19: 19 000200FE # sqrtf() ! 20: 20 000200FE # { ! 21: 21 000200FE 11 4f jbr L217 ! 22: 22 00020100 L218: ! 23: 23 00020100 # asm(".globl _sqrtf_t"); ! 24: 24 00020100 .globl _sqrtf_t ! 25: 25 00020100 # asm("_sqrtf_t:"); /* entry address */ ! 26: 26 00020100 _sqrtf_t: ! 27: 27 00020100 # if( ( cycle == 1 ) && ( prt_hdrs ) ) /* print headers on 1st pass */ ! 28: 28 00020100 1d effffffff6 01 cmpl _cycle,$1 ! 29: 29 00020107 21 15 jneq L219 ! 30: 30 00020109 5d efffffffed tstl _prt_hdrs ! 31: 31 0002010F 31 0d jeql L219 ! 32: 32 00020111 # { ! 33: 33 00020111 # writes(" SQRTF"); ! 34: 34 00020111 .data 1 ! 35: 35 00000a60 * L221: ! 36: 36 00000a60 * 20535152544600 .ascii " SQRTF\0" ! 37: 37 00000a67 * .text ! 38: 38 00020111 dd 8f00000a60 pushl $L221 ! 39: 39 00020117 fe 08 efffffffde callf $8,_writes ! 40: 40 0002011E # } ! 41: 41 0002011E # sqrtf_1(); /* test square root w/ delay */ ! 42: 42 0002011E L219: ! 43: 43 0002011E fe 04 ef0000002d callf $4,_sqrtf_1 ! 44: 44 00020125 # sqrtf_2(); /* test square root */ ! 45: 45 00020125 fe 04 ef00000198 callf $4,_sqrtf_2 ! 46: 46 0002012C # sqrtf_3(); /* register corruption */ ! 47: 47 0002012C fe 04 ef000002f1 callf $4,_sqrtf_3 ! 48: 48 00020133 # sqrtf_4(); /* test the PSL */ ! 49: 49 00020133 fe 04 ef000004d4 callf $4,_sqrtf_4 ! 50: 50 0002013A # sqrtf_5(); /* pipelined entry */ ! 51: 51 0002013A fe 04 ef0000067d callf $4,_sqrtf_5 ! 52: 52 00020141 # sqrtf_6(); /* pipelined exit */ ! 53: 53 00020141 fe 04 ef000007d2 callf $4,_sqrtf_6 ! 54: 54 00020148 # asm("jmp *return"); /* return to the test monitor */ ! 55: 55 00020148 71 ffffffffae jmp *return ! 56: 56 0002014E # } ! 57: 57 0002014E 40 ret#2 ! 58: 58 0002014F .set L215,0x0 ! 59: 59 0002014F L217: ! 60: 60 0002014F 11 af jbr L218 ! 61: 61 00020151 .data ! 62: 62 00000a60 * .text ! 63: 63 00020151 00 .align 1 ! 64: 64 00020152 .globl _sqrtf_1 ! 65: 65 00020152 _sqrtf_1: ! 66: 66 00020152 0000 .word L228 ! 67: 67 00020154 # ! 68: 68 00020154 # /*************************************************************************** ! 69: 69 00020154 # * ! 70: 70 00020154 # * SUBTEST 1 - SQUARE-ROOT FUNCTION ! 71: 71 00020154 # * ! 72: 72 00020154 # ***************************************************************************/ ! 73: 73 00020154 # sqrtf_1() ! 74: 74 00020154 # { ! 75: 75 00020154 13 016a jbr L230 ! 76: 76 00020157 L231: ! 77: 77 00020157 # #define DELAY 5 /* wait 10 ticks between SQRTF & STF */ ! 78: 78 00020157 # force_loop = FALSE; /* clear the LOOP flag */ ! 79: 79 00020157 4d efffffff9f clrl _force_loop ! 80: 80 0002015D # subtest = 1; ! 81: 81 0002015D 0d 01 efffffff98 movl $1,_subtest ! 82: 82 00020164 # index = 0; ! 83: 83 00020164 4d efffffff92 clrl _index ! 84: 84 0002016A # do ! 85: 85 0002016A L234: ! 86: 86 0002016A # { ! 87: 87 0002016A # sgl_ld_acc = sqrtf_1_data[index].ld; /* get the operand */ ! 88: 88 0002016A 0d efffffff8c 50 movl _index,r0 ! 89: 89 00020171 48 03 50 50 shll $3,r0,r0 ! 90: 90 00020175 0d e000000000 efffffff7c movl _sqrtf_1_data(r0),_sgl_ld_acc ! 91: 91 00020180 # sgl_expected = sqrtf_1_data[index].exp; /* get expected results */ ! 92: 92 00020180 0d efffffff76 50 movl _index,r0 ! 93: 93 00020187 48 03 50 50 shll $3,r0,r0 ! 94: 94 0002018B 0d e000000004 efffffff66 movl _sqrtf_1_data+4(r0),_sgl_expected ! 95: 95 00020196 # sgl_dummy1 = DELAY; ! 96: 96 00020196 0d 05 efffffff5f movl $5,_sgl_dummy1 ! 97: 97 0002019D # /* ! 98: 98 0002019D # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 99: 99 0002019D # * The force loop flag is set after the first error. ! 100: 100 0002019D # */ ! 101: 101 0002019D # asm("_sqrtf_1_lp1:"); ! 102: 102 0002019D _sqrtf_1_lp1: ! 103: 103 0002019D # asm("movl _sgl_ld_acc,r4"); /* set the data to load */ ! 104: 104 0002019D 0d efffffff59 54 movl _sgl_ld_acc,r4 ! 105: 105 000201A4 # asm("ldf r4"); /* load the accumulator */ ! 106: 106 000201A4 06 54 ldf r4 ! 107: 107 000201A6 # asm("movl _sgl_dummy1,r0"); /* get the delay factor */ ! 108: 108 000201A6 0d efffffff50 50 movl _sgl_dummy1,r0 ! 109: 109 000201AD # asm("sqrtf"); /* get ACC.'s square root */ ! 110: 110 000201AD 45 sqrtf ! 111: 111 000201AE # asm("1:"); ! 112: 112 000201AE 1: ! 113: 113 000201AE # asm("decl r0"); /* delay to let the SQRTF */ ! 114: 114 000201AE 7d 50 decl r0 ! 115: 115 000201B0 # asm("bgtr 1b"); /* instruction finish */ ! 116: 116 000201B0 41 fc bgtr 1b ! 117: 117 000201B2 # asm("stf r5"); /* store the result */ ! 118: 118 000201B2 26 55 stf r5 ! 119: 119 000201B4 # if( force_loop ) ! 120: 120 000201B4 5d efffffff42 tstl _force_loop ! 121: 121 000201BA 31 02 jeql L235 ! 122: 122 000201BC # asm("brb _sqrtf_1_lp1");; /* loop on the error */ ! 123: 123 000201BC 11 df brb _sqrtf_1_lp1 ! 124: 124 000201BE L235: ! 125: 125 000201BE # /* ! 126: 126 000201BE # * end error loop ! 127: 127 000201BE # */ ! 128: 128 000201BE # asm("movl r5,_sgl_st_acc"); /* save the result */ ! 129: 129 000201BE 0d 55 efffffff37 movl r5,_sgl_st_acc ! 130: 130 000201C5 # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */ ! 131: 131 000201C5 1d efffffff31 efffffff2c cmpl _sgl_st_acc,_sgl_expected ! 132: 132 000201D0 21 03 13 00d2 jeql L236 ! 133: 133 000201D5 # { ! 134: 134 000201D5 # errcnt++; /* bump the error count */ ! 135: 135 000201D5 6d efffffff21 incl _errcnt ! 136: 136 000201DB # if ( prt_error ) { ! 137: 137 000201DB 5d efffffff1b tstl _prt_error ! 138: 138 000201E1 21 03 13 009b jeql L237 ! 139: 139 000201E6 # writes(" \n"); /* start a new print line */ ! 140: 140 000201E6 .data 1 ! 141: 141 00000a67 * L238: ! 142: 142 00000a67 * 200A00 .ascii " \12\0" ! 143: 143 00000a6a * .text ! 144: 144 000201E6 dd 8f00000a67 pushl $L238 ! 145: 145 000201EC fe 08 efffffff09 callf $8,_writes ! 146: 146 000201F3 # writes("cycle: "); ! 147: 147 000201F3 .data 1 ! 148: 148 00000a6a * L239: ! 149: 149 00000a6a * 6379636C653A2000 .ascii "cycle: \0" ! 150: 150 00000a72 * .text ! 151: 151 000201F3 dd 8f00000a6a pushl $L239 ! 152: 152 000201F9 fe 08 effffffefc callf $8,_writes ! 153: 153 00020200 # writed( cycle ); ! 154: 154 00020200 dd effffffef6 pushl _cycle ! 155: 155 00020206 fe 08 effffffeef callf $8,_writed ! 156: 156 0002020D # writes(" SQRTF test "); ! 157: 157 0002020D .data 1 ! 158: 158 00000a72 * L241: ! 159: 159 00000a72 * 2020535152544620746573742 .ascii " SQRTF test \0" ! 160: 000 ! 161: 160 00000a80 * .text ! 162: 161 0002020D dd 8f00000a72 pushl $L241 ! 163: 162 00020213 fe 08 effffffee2 callf $8,_writes ! 164: 163 0002021A # writed( test_no ); ! 165: 164 0002021A dd effffffedc pushl _test_no ! 166: 165 00020220 fe 08 effffffed5 callf $8,_writed ! 167: 166 00020227 # writes(", subtest 1 (delayed store) - BAD FINAL ACC\n"); ! 168: 167 00020227 .data 1 ! 169: 168 00000a80 * L242: ! 170: 169 00000a80 * 2C20737562746573742031202 .ascii ", subtest 1 (delayed store) - BAD FINAL ACC\12\0" ! 171: 864656C617965642073746F72 ! 172: 6529202D204241442046494E4 ! 173: 14C204143430A00 ! 174: 170 00000aad * .text ! 175: 171 00020227 dd 8f00000a80 pushl $L242 ! 176: 172 0002022D fe 08 effffffec8 callf $8,_writes ! 177: 173 00020234 # print_sqrtf_data(); ! 178: 174 00020234 fe 04 ef0000083b callf $4,_print_sqrtf_data ! 179: 175 0002023B # writes(", data index = "); ! 180: 176 0002023B .data 1 ! 181: 177 00000aad * L244: ! 182: 178 00000aad * 2C20206461746120696E64657 .ascii ", data index = \0" ! 183: 8203D2000 ! 184: 179 00000abe * .text ! 185: 180 0002023B dd 8f00000aad pushl $L244 ! 186: 181 00020241 fe 08 effffffeb4 callf $8,_writes ! 187: 182 00020248 # writed( index ); ! 188: 183 00020248 dd effffffeae pushl _index ! 189: 184 0002024E fe 08 effffffea7 callf $8,_writed ! 190: 185 00020255 # writec('\n'); ! 191: 186 00020255 dd 0a pushl $10 ! 192: 187 00020257 fe 08 effffffe9e callf $8,_writec ! 193: 188 0002025E # writes(" Acc expected = "); ! 194: 189 0002025E .data 1 ! 195: 190 00000abe * L246: ! 196: 191 00000abe * 2020202020202020202020202 .ascii " Acc expected = \0" ! 197: 0202020202020202020416363 ! 198: 206578706563746564203D200 ! 199: 0 ! 200: 192 00000ae4 * .text ! 201: 193 0002025E dd 8f00000abe pushl $L246 ! 202: 194 00020264 fe 08 effffffe91 callf $8,_writes ! 203: 195 0002026B # write32h( sgl_expected ); ! 204: 196 0002026B dd effffffe8b pushl _sgl_expected ! 205: 197 00020271 fe 08 effffffe84 callf $8,_write32h ! 206: 198 00020278 # writec('\n'); ! 207: 199 00020278 dd 0a pushl $10 ! 208: 200 0002027A fe 08 effffffe7b callf $8,_writec ! 209: 201 00020281 # } ! 210: 202 00020281 # if ( halt_flg ) /* halt on error? */ ! 211: 203 00020281 L237: ! 212: 204 00020281 5d effffffe75 tstl _halt_flg ! 213: 205 00020287 31 09 jeql L248 ! 214: 206 00020289 # sqrtf_er_halt( BAD_ACC_HLT ); ! 215: 207 00020289 dd 01 pushl $1 ! 216: 208 0002028B fe 08 ef00000820 callf $8,_sqrtf_er_halt ! 217: 209 00020292 # if ( loop_on_err ) ! 218: 210 00020292 L248: ! 219: 211 00020292 5d effffffe64 tstl _loop_on_err ! 220: 212 00020298 31 0d jeql L250 ! 221: 213 0002029A # { ! 222: 214 0002029A # force_loop = TRUE; /* set the force loop flag */ ! 223: 215 0002029A 0d 01 effffffe5b movl $1,_force_loop ! 224: 216 000202A1 # asm("jmp _sqrtf_1_lp1"); /* and loop */ ! 225: 217 000202A1 71 effffffef6 jmp _sqrtf_1_lp1 ! 226: 218 000202A7 # } ! 227: 219 000202A7 # } /* end of compare error */ ! 228: 220 000202A7 L250: ! 229: 221 000202A7 # } while( index++ < max_sqrtf_1_index ); ! 230: 222 000202A7 L236: ! 231: 223 000202A7 L233: ! 232: 224 000202A7 0d effffffe4f 50 movl _index,r0 ! 233: 225 000202AE 6d effffffe48 incl _index ! 234: 226 000202B4 1d 50 effffffe41 cmpl r0,_max_sqrtf_1_index ! 235: 227 000202BB 81 03 13 feaa jlss L234 ! 236: 228 000202C0 L232: ! 237: 229 000202C0 # } /* end of subtest 1 */ ! 238: 230 000202C0 40 ret#2 ! 239: 231 000202C1 .set L228,0x0 ! 240: 232 000202C1 L230: ! 241: 233 000202C1 13 fe93 jbr L231 ! 242: 234 000202C4 .data ! 243: 235 00000a60 * .text ! 244: 236 000202C4 .align 1 ! 245: 237 000202C4 .globl _sqrtf_2 ! 246: 238 000202C4 _sqrtf_2: ! 247: 239 000202C4 0000 .word L251 ! 248: 240 000202C6 # ! 249: 241 000202C6 # ! 250: 242 000202C6 # ! 251: 243 000202C6 # /*************************************************************************** ! 252: 244 000202C6 # * ! 253: 245 000202C6 # * SUBTEST 2 - SQUARE-ROOT FUNCTION ! 254: 246 000202C6 # * ! 255: 247 000202C6 # ***************************************************************************/ ! 256: 248 000202C6 # sqrtf_2() ! 257: 249 000202C6 # { ! 258: 250 000202C6 13 0158 jbr L253 ! 259: 251 000202C9 L254: ! 260: 252 000202C9 # force_loop = FALSE; /* clear the LOOP flag */ ! 261: 253 000202C9 4d effffffe2d clrl _force_loop ! 262: 254 000202CF # subtest = 2; ! 263: 255 000202CF 0d 02 effffffe26 movl $2,_subtest ! 264: 256 000202D6 # index = 0; ! 265: 257 000202D6 4d effffffe20 clrl _index ! 266: 258 000202DC # do ! 267: 259 000202DC L257: ! 268: 260 000202DC # { ! 269: 261 000202DC # sgl_ld_acc = sqrtf_1_data[index].ld; /* get the operand */ ! 270: 262 000202DC 0d effffffe1a 50 movl _index,r0 ! 271: 263 000202E3 48 03 50 50 shll $3,r0,r0 ! 272: 264 000202E7 0d e000000000 effffffe0a movl _sqrtf_1_data(r0),_sgl_ld_acc ! 273: 265 000202F2 # sgl_expected = sqrtf_1_data[index].exp; /* get expected results */ ! 274: 266 000202F2 0d effffffe04 50 movl _index,r0 ! 275: 267 000202F9 48 03 50 50 shll $3,r0,r0 ! 276: 268 000202FD 0d e000000004 effffffdf4 movl _sqrtf_1_data+4(r0),_sgl_expected ! 277: 269 00020308 # /* ! 278: 270 00020308 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 279: 271 00020308 # * The force loop flag is set after the first error. ! 280: 272 00020308 # */ ! 281: 273 00020308 # asm("_sqrtf_2_lp1:"); ! 282: 274 00020308 _sqrtf_2_lp1: ! 283: 275 00020308 # asm("movl _sgl_ld_acc,r4"); /* set the data to load */ ! 284: 276 00020308 0d effffffdee 54 movl _sgl_ld_acc,r4 ! 285: 277 0002030F # asm("ldf r4"); /* load the accumulator */ ! 286: 278 0002030F 06 54 ldf r4 ! 287: 279 00020311 # asm("sqrtf"); /* get ACC.'s square root */ ! 288: 280 00020311 45 sqrtf ! 289: 281 00020312 # asm("stf r5"); /* store the result */ ! 290: 282 00020312 26 55 stf r5 ! 291: 283 00020314 # if( force_loop ) ! 292: 284 00020314 5d effffffde2 tstl _force_loop ! 293: 285 0002031A 31 02 jeql L258 ! 294: 286 0002031C # asm("brb _sqrtf_2_lp1");; /* loop on the error */ ! 295: 287 0002031C 11 ea brb _sqrtf_2_lp1 ! 296: 288 0002031E L258: ! 297: 289 0002031E # /* ! 298: 290 0002031E # * end error loop ! 299: 291 0002031E # */ ! 300: 292 0002031E # asm("movl r5,_sgl_st_acc"); /* save the result */ ! 301: 293 0002031E 0d 55 effffffdd7 movl r5,_sgl_st_acc ! 302: 294 00020325 # if( sgl_st_acc != sgl_expected ) /* COMPARE the values */ ! 303: 295 00020325 1d effffffdd1 effffffdcc cmpl _sgl_st_acc,_sgl_expected ! 304: 296 00020330 21 03 13 00d2 jeql L259 ! 305: 297 00020335 # { ! 306: 298 00020335 # errcnt++; /* bump the error count */ ! 307: 299 00020335 6d effffffdc1 incl _errcnt ! 308: 300 0002033B # if ( prt_error ) { ! 309: 301 0002033B 5d effffffdbb tstl _prt_error ! 310: 302 00020341 21 03 13 009b jeql L260 ! 311: 303 00020346 # writes(" \n"); /* start a new print line */ ! 312: 304 00020346 .data 1 ! 313: 305 00000ae4 * L261: ! 314: 306 00000ae4 * 200A00 .ascii " \12\0" ! 315: 307 00000ae7 * .text ! 316: 308 00020346 dd 8f00000ae4 pushl $L261 ! 317: 309 0002034C fe 08 effffffda9 callf $8,_writes ! 318: 310 00020353 # writes("cycle: "); ! 319: 311 00020353 .data 1 ! 320: 312 00000ae7 * L262: ! 321: 313 00000ae7 * 6379636C653A2000 .ascii "cycle: \0" ! 322: 314 00000aef * .text ! 323: 315 00020353 dd 8f00000ae7 pushl $L262 ! 324: 316 00020359 fe 08 effffffd9c callf $8,_writes ! 325: 317 00020360 # writed( cycle ); ! 326: 318 00020360 dd effffffd96 pushl _cycle ! 327: 319 00020366 fe 08 effffffd8f callf $8,_writed ! 328: 320 0002036D # writes(" SQRTF test "); ! 329: 321 0002036D .data 1 ! 330: 322 00000aef * L263: ! 331: 323 00000aef * 2020535152544620746573742 .ascii " SQRTF test \0" ! 332: 000 ! 333: 324 00000afd * .text ! 334: 325 0002036D dd 8f00000aef pushl $L263 ! 335: 326 00020373 fe 08 effffffd82 callf $8,_writes ! 336: 327 0002037A # writed( test_no ); ! 337: 328 0002037A dd effffffd7c pushl _test_no ! 338: 329 00020380 fe 08 effffffd75 callf $8,_writed ! 339: 330 00020387 # writes(", subtest 2 (immediate store) - BAD FINAL ACC\n"); ! 340: 331 00020387 .data 1 ! 341: 332 00000afd * L264: ! 342: 333 00000afd * 2C20737562746573742032202 .ascii ", subtest 2 (immediate store) - BAD FINAL ACC\12\0" ! 343: 8696D6D656469617465207374 ! 344: 6F726529202D2042414420464 ! 345: 94E414C204143430A00 ! 346: 334 00000b2c * .text ! 347: 335 00020387 dd 8f00000afd pushl $L264 ! 348: 336 0002038D fe 08 effffffd68 callf $8,_writes ! 349: 337 00020394 # print_sqrtf_data(); ! 350: 338 00020394 fe 04 ef000006db callf $4,_print_sqrtf_data ! 351: 339 0002039B # writes(", data index = "); ! 352: 340 0002039B .data 1 ! 353: 341 00000b2c * L265: ! 354: 342 00000b2c * 2C20206461746120696E64657 .ascii ", data index = \0" ! 355: 8203D2000 ! 356: 343 00000b3d * .text ! 357: 344 0002039B dd 8f00000b2c pushl $L265 ! 358: 345 000203A1 fe 08 effffffd54 callf $8,_writes ! 359: 346 000203A8 # writed( index ); ! 360: 347 000203A8 dd effffffd4e pushl _index ! 361: 348 000203AE fe 08 effffffd47 callf $8,_writed ! 362: 349 000203B5 # writec('\n'); ! 363: 350 000203B5 dd 0a pushl $10 ! 364: 351 000203B7 fe 08 effffffd3e callf $8,_writec ! 365: 352 000203BE # writes(" Acc expected = "); ! 366: 353 000203BE .data 1 ! 367: 354 00000b3d * L266: ! 368: 355 00000b3d * 2020202020202020202020202 .ascii " Acc expected = \0" ! 369: 0202020202020202020416363 ! 370: 206578706563746564203D200 ! 371: 0 ! 372: 356 00000b63 * .text ! 373: 357 000203BE dd 8f00000b3d pushl $L266 ! 374: 358 000203C4 fe 08 effffffd31 callf $8,_writes ! 375: 359 000203CB # write32h( sgl_expected ); ! 376: 360 000203CB dd effffffd2b pushl _sgl_expected ! 377: 361 000203D1 fe 08 effffffd24 callf $8,_write32h ! 378: 362 000203D8 # writec('\n'); ! 379: 363 000203D8 dd 0a pushl $10 ! 380: 364 000203DA fe 08 effffffd1b callf $8,_writec ! 381: 365 000203E1 # } ! 382: 366 000203E1 # if ( halt_flg ) /* halt on error? */ ! 383: 367 000203E1 L260: ! 384: 368 000203E1 5d effffffd15 tstl _halt_flg ! 385: 369 000203E7 31 09 jeql L267 ! 386: 370 000203E9 # sqrtf_er_halt( BAD_ACC_HLT ); ! 387: 371 000203E9 dd 01 pushl $1 ! 388: 372 000203EB fe 08 ef000006c0 callf $8,_sqrtf_er_halt ! 389: 373 000203F2 # if ( loop_on_err ) ! 390: 374 000203F2 L267: ! 391: 375 000203F2 5d effffffd04 tstl _loop_on_err ! 392: 376 000203F8 31 0d jeql L268 ! 393: 377 000203FA # { ! 394: 378 000203FA # force_loop = TRUE; /* set the force loop flag */ ! 395: 379 000203FA 0d 01 effffffcfb movl $1,_force_loop ! 396: 380 00020401 # asm("jmp _sqrtf_2_lp1"); /* and loop */ ! 397: 381 00020401 71 efffffff01 jmp _sqrtf_2_lp1 ! 398: 382 00020407 # } ! 399: 383 00020407 # } /* end of compare error */ ! 400: 384 00020407 L268: ! 401: 385 00020407 # } while( index++ < max_sqrtf_1_index ); ! 402: 386 00020407 L259: ! 403: 387 00020407 L256: ! 404: 388 00020407 0d effffffcef 50 movl _index,r0 ! 405: 389 0002040E 6d effffffce8 incl _index ! 406: 390 00020414 1d 50 effffffce1 cmpl r0,_max_sqrtf_1_index ! 407: 391 0002041B 81 03 13 febc jlss L257 ! 408: 392 00020420 L255: ! 409: 393 00020420 # } /* end of subtest 2 */ ! 410: 394 00020420 40 ret#2 ! 411: 395 00020421 .set L251,0x0 ! 412: 396 00020421 L253: ! 413: 397 00020421 13 fea5 jbr L254 ! 414: 398 00020424 .data ! 415: 399 00000a60 * .text ! 416: 400 00020424 .align 1 ! 417: 401 00020424 .globl _sqrtf_3 ! 418: 402 00020424 _sqrtf_3: ! 419: 403 00020424 0000 .word L269 ! 420: 404 00020426 # ! 421: 405 00020426 # ! 422: 406 00020426 # ! 423: 407 00020426 # /*************************************************************************** ! 424: 408 00020426 # * ! 425: 409 00020426 # * SUBTEST 3 - REGISTER INTEGRITY WITH THE SQRTF FUNCTION ! 426: 410 00020426 # * ! 427: 411 00020426 # ***************************************************************************/ ! 428: 412 00020426 # sqrtf_3() ! 429: 413 00020426 # { ! 430: 414 00020426 13 01e1 jbr L271 ! 431: 415 00020429 L272: ! 432: 416 00020429 # fill_reg_buf( load_regs ); /* set reg values to load */ ! 433: 417 00020429 dd 8f00000000 pushl $_load_regs ! 434: 418 0002042F fe 08 effffffcc6 callf $8,_fill_reg_buf ! 435: 419 00020436 # force_loop = FALSE; /* clear the LOOP flag */ ! 436: 420 00020436 4d effffffcc0 clrl _force_loop ! 437: 421 0002043C # subtest = 3; ! 438: 422 0002043C 0d 03 effffffcb9 movl $3,_subtest ! 439: 423 00020443 # index = 0; ! 440: 424 00020443 4d effffffcb3 clrl _index ! 441: 425 00020449 # do ! 442: 426 00020449 L276: ! 443: 427 00020449 # { ! 444: 428 00020449 # sgl_ld_acc = sqrtf_1_data[index].ld; /* get the operand */ ! 445: 429 00020449 0d effffffcad 50 movl _index,r0 ! 446: 430 00020450 48 03 50 50 shll $3,r0,r0 ! 447: 431 00020454 0d e000000000 effffffc9d movl _sqrtf_1_data(r0),_sgl_ld_acc ! 448: 432 0002045F # sgl_expected = sqrtf_1_data[index].exp; /* get expected results */ ! 449: 433 0002045F 0d effffffc97 50 movl _index,r0 ! 450: 434 00020466 48 03 50 50 shll $3,r0,r0 ! 451: 435 0002046A 0d e000000004 effffffc87 movl _sqrtf_1_data+4(r0),_sgl_expected ! 452: 436 00020475 # /* ! 453: 437 00020475 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 454: 438 00020475 # * The force loop flag is set after the first error. ! 455: 439 00020475 # */ ! 456: 440 00020475 # asm("_sqrtf_3_lp1:"); ! 457: 441 00020475 _sqrtf_3_lp1: ! 458: 442 00020475 # asm("loadr $0x1fff,_load_regs"); /* load regs 0 - 12 */ ! 459: 443 00020475 ab 891fff effffffc7e loadr $0x1fff,_load_regs ! 460: 444 0002047E # asm("ldf _sgl_ld_acc"); /* load the accumulator */ ! 461: 445 0002047E 06 effffffc78 ldf _sgl_ld_acc ! 462: 446 00020484 # asm("sqrtf"); /* get ACC.'s sqrt */ ! 463: 447 00020484 45 sqrtf ! 464: 448 00020485 # asm("stf _sgl_st_acc"); /* store the result */ ! 465: 449 00020485 26 effffffc71 stf _sgl_st_acc ! 466: 450 0002048B # asm("storer $0x1fff,_store_regs"); /* store regs 0 - 12 */ ! 467: 451 0002048B bb 891fff effffffc68 storer $0x1fff,_store_regs ! 468: 452 00020494 # if( force_loop ) ! 469: 453 00020494 5d effffffc62 tstl _force_loop ! 470: 454 0002049A 31 02 jeql L277 ! 471: 455 0002049C # asm("brb _sqrtf_3_lp1");; /* loop on the error */ ! 472: 456 0002049C 11 d7 brb _sqrtf_3_lp1 ! 473: 457 0002049E L277: ! 474: 458 0002049E # /* ! 475: 459 0002049E # * end error loop ! 476: 460 0002049E # */ ! 477: 461 0002049E # reg_no = 0; ! 478: 462 0002049E 4d effffffc58 clrl _reg_no ! 479: 463 000204A4 # regs_ok = TRUE; ! 480: 464 000204A4 0d 01 effffffc51 movl $1,_regs_ok ! 481: 465 000204AB # while( (reg_no < 13) && (regs_ok) ) /* check 1st 12 regs */ ! 482: 466 000204AB L278: ! 483: 467 000204AB 1d effffffc4b 0d cmpl _reg_no,$13 ! 484: 468 000204B2 81 35 jgeq L279 ! 485: 469 000204B4 5d effffffc42 tstl _regs_ok ! 486: 470 000204BA 31 2d jeql L279 ! 487: 471 000204BC # if( store_regs[ reg_no ] == load_regs[ reg_no ] ) ! 488: 472 000204BC 0d effffffc3a 50 movl _reg_no,r0 ! 489: 473 000204C3 0d effffffc33 51 movl _reg_no,r1 ! 490: 474 000204CA 1d 40effffffc2b cmpl _store_regs[r0],_load_regs[r1] ! 491: 41effffffc25 ! 492: 475 000204D7 21 08 jneq L280 ! 493: 476 000204D9 # reg_no++; ! 494: 477 000204D9 6d effffffc1d incl _reg_no ! 495: 478 000204DF # else ! 496: 479 000204DF 11 06 jbr L281 ! 497: 480 000204E1 L280: ! 498: 481 000204E1 # regs_ok = FALSE; ! 499: 482 000204E1 4d effffffc15 clrl _regs_ok ! 500: 483 000204E7 L281: ! 501: 484 000204E7 11 c2 jbr L278 ! 502: 485 000204E9 L279: ! 503: 486 000204E9 # if( !regs_ok ) ! 504: 487 000204E9 5d effffffc0d tstl _regs_ok ! 505: 488 000204EF 31 03 13 00fc jneq L282 ! 506: 489 000204F4 # { ! 507: 490 000204F4 # errcnt++; /* bump the error count */ ! 508: 491 000204F4 6d effffffc02 incl _errcnt ! 509: 492 000204FA # if ( prt_error ) { ! 510: 493 000204FA 5d effffffbfc tstl _prt_error ! 511: 494 00020500 21 03 13 00eb jeql L283 ! 512: 495 00020505 # writes(" \n"); /* start a new print line */ ! 513: 496 00020505 .data 1 ! 514: 497 00000b63 * L284: ! 515: 498 00000b63 * 200A00 .ascii " \12\0" ! 516: 499 00000b66 * .text ! 517: 500 00020505 dd 8f00000b63 pushl $L284 ! 518: 501 0002050B fe 08 effffffbea callf $8,_writes ! 519: 502 00020512 # writes("cycle: "); ! 520: 503 00020512 .data 1 ! 521: 504 00000b66 * L285: ! 522: 505 00000b66 * 6379636C653A2000 .ascii "cycle: \0" ! 523: 506 00000b6e * .text ! 524: 507 00020512 dd 8f00000b66 pushl $L285 ! 525: 508 00020518 fe 08 effffffbdd callf $8,_writes ! 526: 509 0002051F # writed( cycle ); ! 527: 510 0002051F dd effffffbd7 pushl _cycle ! 528: 511 00020525 fe 08 effffffbd0 callf $8,_writed ! 529: 512 0002052C # writes(" SQRTF test "); ! 530: 513 0002052C .data 1 ! 531: 514 00000b6e * L286: ! 532: 515 00000b6e * 2020535152544620746573742 .ascii " SQRTF test \0" ! 533: 000 ! 534: 516 00000b7c * .text ! 535: 517 0002052C dd 8f00000b6e pushl $L286 ! 536: 518 00020532 fe 08 effffffbc3 callf $8,_writes ! 537: 519 00020539 # writed( test_no ); ! 538: 520 00020539 dd effffffbbd pushl _test_no ! 539: 521 0002053F fe 08 effffffbb6 callf $8,_writed ! 540: 522 00020546 # writes(", subtest 3 - A REGISTER WAS MODIFIED\n"); { ! 541: 523 00020546 .data 1 ! 542: 524 00000b7c * L287: ! 543: 525 00000b7c * 2C20737562746573742033202 .ascii ", subtest 3 - A REGISTER WAS MODIFIED\12\0" ! 544: D204120524547495354455220 ! 545: 574153204D4F4449464945440 ! 546: A00 ! 547: 526 00000ba3 * .text ! 548: 527 00020546 dd 8f00000b7c pushl $L287 ! 549: 528 0002054C fe 08 effffffba9 callf $8,_writes ! 550: 529 00020553 # print_sqrtf_data(); ! 551: 530 00020553 fe 04 ef0000051c callf $4,_print_sqrtf_data ! 552: 531 0002055A # writec('\n'); ! 553: 532 0002055A dd 0a pushl $10 ! 554: 533 0002055C fe 08 effffffb99 callf $8,_writec ! 555: 534 00020563 # writes("register "); ! 556: 535 00020563 .data 1 ! 557: 536 00000ba3 * L288: ! 558: 537 00000ba3 * 72656769737465722000 .ascii "register \0" ! 559: 538 00000bad * .text ! 560: 539 00020563 dd 8f00000ba3 pushl $L288 ! 561: 540 00020569 fe 08 effffffb8c callf $8,_writes ! 562: 541 00020570 # writed( reg_no ); ! 563: 542 00020570 dd effffffb86 pushl _reg_no ! 564: 543 00020576 fe 08 effffffb7f callf $8,_writed ! 565: 544 0002057D # writes(" = "); ! 566: 545 0002057D .data 1 ! 567: 546 00000bad * L289: ! 568: 547 00000bad * 203D2000 .ascii " = \0" ! 569: 548 00000bb1 * .text ! 570: 549 0002057D dd 8f00000bad pushl $L289 ! 571: 550 00020583 fe 08 effffffb72 callf $8,_writes ! 572: 551 0002058A # write32h( load_regs[reg_no] ); ! 573: 552 0002058A 0d effffffb6c 50 movl _reg_no,r0 ! 574: 553 00020591 dd 40effffffb64 pushl _load_regs[r0] ! 575: 554 00020598 fe 08 effffffb5d callf $8,_write32h ! 576: 555 0002059F # writes(", should be = "); ! 577: 556 0002059F .data 1 ! 578: 557 00000bb1 * L290: ! 579: 558 00000bb1 * 2C202073686F756C642062652 .ascii ", should be = \0" ! 580: 03D2000 ! 581: 559 00000bc1 * .text ! 582: 560 0002059F dd 8f00000bb1 pushl $L290 ! 583: 561 000205A5 fe 08 effffffb50 callf $8,_writes ! 584: 562 000205AC # write32h( store_regs[reg_no] ); ! 585: 563 000205AC 0d effffffb4a 50 movl _reg_no,r0 ! 586: 564 000205B3 dd 40effffffb42 pushl _store_regs[r0] ! 587: 565 000205BA fe 08 effffffb3b callf $8,_write32h ! 588: 566 000205C1 # writec('\n'); ! 589: 567 000205C1 dd 0a pushl $10 ! 590: 568 000205C3 fe 08 effffffb32 callf $8,_writec ! 591: 569 000205CA # } ! 592: 570 000205CA # if ( halt_flg ) /* halt on error? */ ! 593: 571 000205CA 5d effffffb2c tstl _halt_flg ! 594: 572 000205D0 31 09 jeql L291 ! 595: 573 000205D2 # sqrtf_er_halt( BAD_REG_HLT ); ! 596: 574 000205D2 dd 02 pushl $2 ! 597: 575 000205D4 fe 08 ef000004d7 callf $8,_sqrtf_er_halt ! 598: 576 000205DB # if ( loop_on_err ) ! 599: 577 000205DB L291: ! 600: 578 000205DB 5d effffffb1b tstl _loop_on_err ! 601: 579 000205E1 31 0d jeql L292 ! 602: 580 000205E3 # { ! 603: 581 000205E3 # force_loop = TRUE; /* get the force loop flag */ ! 604: 582 000205E3 0d 01 effffffb12 movl $1,_force_loop ! 605: 583 000205EA # asm("jmp _sqrtf_3_lp1"); /* and loop */ ! 606: 584 000205EA 71 effffffe85 jmp _sqrtf_3_lp1 ! 607: 585 000205F0 # } ! 608: 586 000205F0 # } /* end of compare error */ ! 609: 587 000205F0 L292: ! 610: 588 000205F0 # } /* end of while loop */ ! 611: 589 000205F0 L283: ! 612: 590 000205F0 # } while( index++ < max_sqrtf_1_index ); ! 613: 591 000205F0 L282: ! 614: 592 000205F0 L275: ! 615: 593 000205F0 0d effffffb06 50 movl _index,r0 ! 616: 594 000205F7 6d effffffaff incl _index ! 617: 595 000205FD 1d 50 effffffaf8 cmpl r0,_max_sqrtf_1_index ! 618: 596 00020604 81 03 13 fe40 jlss L276 ! 619: 597 00020609 L274: ! 620: 598 00020609 # } /* end of subtest 3 */ ! 621: 599 00020609 40 ret#2 ! 622: 600 0002060A .set L269,0x0 ! 623: 601 0002060A L271: ! 624: 602 0002060A 13 fe1c jbr L272 ! 625: 603 0002060D .data ! 626: 604 00000a60 * .text ! 627: 605 0002060D 00 .align 1 ! 628: 606 0002060E .globl _sqrtf_4 ! 629: 607 0002060E _sqrtf_4: ! 630: 608 0002060E 0000 .word L293 ! 631: 609 00020610 # ! 632: 610 00020610 # ! 633: 611 00020610 # ! 634: 612 00020610 # /************************************************************************ ! 635: 613 00020610 # * ! 636: 614 00020610 # * SUBTEST 4 - Check for PSL corruption ! 637: 615 00020610 # * ! 638: 616 00020610 # ************************************************************************/ ! 639: 617 00020610 # sqrtf_4() ! 640: 618 00020610 # { ! 641: 619 00020610 13 01a8 jbr L295 ! 642: 620 00020613 L296: ! 643: 621 00020613 # force_loop = FALSE; /* clear force_loop flg */ ! 644: 622 00020613 4d effffffae3 clrl _force_loop ! 645: 623 00020619 # subtest = 4; ! 646: 624 00020619 0d 04 effffffadc movl $4,_subtest ! 647: 625 00020620 # fill_reg_buf( load_regs ); /* get patterns for regs */ ! 648: 626 00020620 dd 8f00000000 pushl $_load_regs ! 649: 627 00020626 fe 08 effffffacf callf $8,_fill_reg_buf ! 650: 628 0002062D # for( index = 0; index < 3; index++ ) { ! 651: 629 0002062D 4d effffffac9 clrl _index ! 652: 630 00020633 L299: ! 653: 631 00020633 1d effffffac3 03 cmpl _index,$3 ! 654: 632 0002063A 91 03 13 017b jgeq L298 ! 655: 633 0002063F # sgl_ld_acc = sqrtf_1_data[index].ld; /* get operand 1 */ ! 656: 634 0002063F 0d effffffab7 50 movl _index,r0 ! 657: 635 00020646 48 03 50 50 shll $3,r0,r0 ! 658: 636 0002064A 0d e000000000 effffffaa7 movl _sqrtf_1_data(r0),_sgl_ld_acc ! 659: 637 00020655 # sgl_expected = sqrtf_1_data[index].exp; /* get expected */ ! 660: 638 00020655 0d effffffaa1 50 movl _index,r0 ! 661: 639 0002065C 48 03 50 50 shll $3,r0,r0 ! 662: 640 00020660 0d e000000004 effffffa91 movl _sqrtf_1_data+4(r0),_sgl_expected ! 663: 641 0002066B # sgl_dummy1 = status_array[status_index]; /* status = +, -, 0 */ ! 664: 642 0002066B 0d effffffa8b 50 movl _status_index,r0 ! 665: 643 00020672 0d 40effffffa83 movl _status_array[r0],_sgl_dummy1 ! 666: effffffa7e ! 667: 644 0002067E # /* ! 668: 645 0002067E # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 669: 646 0002067E # * The force loop flag is set after the first error. ! 670: 647 0002067E # */ ! 671: 648 0002067E # asm("_sqrtf_4_lp1:"); ! 672: 649 0002067E _sqrtf_4_lp1: ! 673: 650 0002067E # asm("ldf _sgl_ld_acc"); /* LOAD the accumulator */ ! 674: 651 0002067E 06 effffffa78 ldf _sgl_ld_acc ! 675: 652 00020684 # asm("nop"); ! 676: 653 00020684 10 nop ! 677: 654 00020685 # asm("tstl _sgl_dummy1"); /* set the PSL status */ ! 678: 655 00020685 5d effffffa71 tstl _sgl_dummy1 ! 679: 656 0002068B # asm("movpsl _init_psl"); /* save the initial PSL */ ! 680: 657 0002068B cd effffffa6b movpsl _init_psl ! 681: 658 00020691 # asm("sqrtf"); /* do the sqrt */ ! 682: 659 00020691 45 sqrtf ! 683: 660 00020692 # asm("nop"); ! 684: 661 00020692 10 nop ! 685: 662 00020693 # asm("movpsl _psl_val"); /* save the final PSL */ ! 686: 663 00020693 cd effffffa63 movpsl _psl_val ! 687: 664 00020699 # asm("stf _sgl_st_acc"); /* save the accumulator */ ! 688: 665 00020699 26 effffffa5d stf _sgl_st_acc ! 689: 666 0002069F # if( force_loop ) ! 690: 667 0002069F 5d effffffa57 tstl _force_loop ! 691: 668 000206A5 31 02 jeql L300 ! 692: 669 000206A7 # asm("brb _sqrtf_4_lp1");; /* loop on the error */ ! 693: 670 000206A7 11 d5 brb _sqrtf_4_lp1 ! 694: 671 000206A9 L300: ! 695: 672 000206A9 # /* ! 696: 673 000206A9 # * Now compare the final PSL to the initial PSL -they should be the same ! 697: 674 000206A9 # */ ! 698: 675 000206A9 # exp_psl = init_psl; ! 699: 676 000206A9 0d effffffa4d effffffa48 movl _init_psl,_exp_psl ! 700: 677 000206B4 # if( psl_val != exp_psl ) { ! 701: 678 000206B4 1d effffffa42 effffffa3d cmpl _psl_val,_exp_psl ! 702: 679 000206BF 21 03 13 00ed jeql L301 ! 703: 680 000206C4 # errcnt++; /* bump the error count */ ! 704: 681 000206C4 6d effffffa32 incl _errcnt ! 705: 682 000206CA # if( prt_error ) { ! 706: 683 000206CA 5d effffffa2c tstl _prt_error ! 707: 684 000206D0 21 03 13 00b9 jeql L302 ! 708: 685 000206D5 # writes(" \n"); /* start a new print line */ ! 709: 686 000206D5 .data 1 ! 710: 687 00000bc1 * L303: ! 711: 688 00000bc1 * 200A00 .ascii " \12\0" ! 712: 689 00000bc4 * .text ! 713: 690 000206D5 dd 8f00000bc1 pushl $L303 ! 714: 691 000206DB fe 08 effffffa1a callf $8,_writes ! 715: 692 000206E2 # writes("cycle: "); ! 716: 693 000206E2 .data 1 ! 717: 694 00000bc4 * L304: ! 718: 695 00000bc4 * 6379636C653A2000 .ascii "cycle: \0" ! 719: 696 00000bcc * .text ! 720: 697 000206E2 dd 8f00000bc4 pushl $L304 ! 721: 698 000206E8 fe 08 effffffa0d callf $8,_writes ! 722: 699 000206EF # writed( cycle ); ! 723: 700 000206EF dd effffffa07 pushl _cycle ! 724: 701 000206F5 fe 08 effffffa00 callf $8,_writed ! 725: 702 000206FC # writes(" SQRTF test "); ! 726: 703 000206FC .data 1 ! 727: 704 00000bcc * L305: ! 728: 705 00000bcc * 2020535152544620746573742 .ascii " SQRTF test \0" ! 729: 000 ! 730: 706 00000bda * .text ! 731: 707 000206FC dd 8f00000bcc pushl $L305 ! 732: 708 00020702 fe 08 effffff9f3 callf $8,_writes ! 733: 709 00020709 # writed( test_no ); ! 734: 710 00020709 dd effffff9ed pushl _test_no ! 735: 711 0002070F fe 08 effffff9e6 callf $8,_writed ! 736: 712 00020716 # writes(", subtest 4 - INCORRECT FINAL PSL\n"); ! 737: 713 00020716 .data 1 ! 738: 714 00000bda * L306: ! 739: 715 00000bda * 2C20737562746573742034202 .ascii ", subtest 4 - INCORRECT FINAL PSL\12\0" ! 740: D20494E434F52524543542046 ! 741: 494E414C2050534C0A00 ! 742: 716 00000bfd * .text ! 743: 717 00020716 dd 8f00000bda pushl $L306 ! 744: 718 0002071C fe 08 effffff9d9 callf $8,_writes ! 745: 719 00020723 # print_sqrtf_data(); /* print the operands */ ! 746: 720 00020723 fe 04 ef0000034c callf $4,_print_sqrtf_data ! 747: 721 0002072A # writec('\n'); ! 748: 722 0002072A dd 0a pushl $10 ! 749: 723 0002072C fe 08 effffff9c9 callf $8,_writec ! 750: 724 00020733 # writes("initial PSL = "); ! 751: 725 00020733 .data 1 ! 752: 726 00000bfd * L307: ! 753: 727 00000bfd * 696E697469616C2050534C203 .ascii "initial PSL = \0" ! 754: D2000 ! 755: 728 00000c0c * .text ! 756: 729 00020733 dd 8f00000bfd pushl $L307 ! 757: 730 00020739 fe 08 effffff9bc callf $8,_writes ! 758: 731 00020740 # write32h( init_psl ); ! 759: 732 00020740 dd effffff9b6 pushl _init_psl ! 760: 733 00020746 fe 08 effffff9af callf $8,_write32h ! 761: 734 0002074D # writes(", final PSL = "); ! 762: 735 0002074D .data 1 ! 763: 736 00000c0c * L308: ! 764: 737 00000c0c * 2C202066696E616C2050534C2 .ascii ", final PSL = \0" ! 765: 03D2000 ! 766: 738 00000c1c * .text ! 767: 739 0002074D dd 8f00000c0c pushl $L308 ! 768: 740 00020753 fe 08 effffff9a2 callf $8,_writes ! 769: 741 0002075A # write32h( psl_val ); ! 770: 742 0002075A dd effffff99c pushl _psl_val ! 771: 743 00020760 fe 08 effffff995 callf $8,_write32h ! 772: 744 00020767 # writes(", expected PSL = "); ! 773: 745 00020767 .data 1 ! 774: 746 00000c1c * L309: ! 775: 747 00000c1c * 2C20206578706563746564205 .ascii ", expected PSL = \0" ! 776: 0534C203D2000 ! 777: 748 00000c2f * .text ! 778: 749 00020767 dd 8f00000c1c pushl $L309 ! 779: 750 0002076D fe 08 effffff988 callf $8,_writes ! 780: 751 00020774 # write32h( exp_psl ); ! 781: 752 00020774 dd effffff982 pushl _exp_psl ! 782: 753 0002077A fe 08 effffff97b callf $8,_write32h ! 783: 754 00020781 # writes("\n"); ! 784: 755 00020781 .data 1 ! 785: 756 00000c2f * L310: ! 786: 757 00000c2f * 0A00 .ascii "\12\0" ! 787: 758 00000c31 * .text ! 788: 759 00020781 dd 8f00000c2f pushl $L310 ! 789: 760 00020787 fe 08 effffff96e callf $8,_writes ! 790: 761 0002078E # } ! 791: 762 0002078E # if( halt_flg ) ! 792: 763 0002078E L302: ! 793: 764 0002078E 5d effffff968 tstl _halt_flg ! 794: 765 00020794 31 09 jeql L311 ! 795: 766 00020796 # sqrtf_er_halt( BAD_PSL_HLT ); /* halt on the error */ ! 796: 767 00020796 dd 03 pushl $3 ! 797: 768 00020798 fe 08 ef00000313 callf $8,_sqrtf_er_halt ! 798: 769 0002079F # if( loop_on_err ) { ! 799: 770 0002079F L311: ! 800: 771 0002079F 5d effffff957 tstl _loop_on_err ! 801: 772 000207A5 31 0a jeql L312 ! 802: 773 000207A7 # force_loop = TRUE; /* set the force loop flag */ ! 803: 774 000207A7 0d 01 effffff94e movl $1,_force_loop ! 804: 775 000207AE # asm("brw _sqrtf_4_lp1");; /* and loop on the error */ ! 805: 776 000207AE 13 fecd brw _sqrtf_4_lp1 ! 806: 777 000207B1 # } /* end of loop on error */ ! 807: 778 000207B1 # } /* end of PSL corruption error */ ! 808: 779 000207B1 L312: ! 809: 780 000207B1 # } /* end of WHILE loop */ ! 810: 781 000207B1 L301: ! 811: 782 000207B1 L297: ! 812: 783 000207B1 6d effffff945 incl _index ! 813: 784 000207B7 13 fe79 jbr L299 ! 814: 785 000207BA L298: ! 815: 786 000207BA # } /* end of subtest 4 */ ! 816: 787 000207BA 40 ret#2 ! 817: 788 000207BB .set L293,0x0 ! 818: 789 000207BB L295: ! 819: 790 000207BB 13 fe55 jbr L296 ! 820: 791 000207BE .data ! 821: 792 00000a60 * .text ! 822: 793 000207BE .align 1 ! 823: 794 000207BE .globl _sqrtf_5 ! 824: 795 000207BE _sqrtf_5: ! 825: 796 000207BE 0000 .word L313 ! 826: 797 000207C0 # ! 827: 798 000207C0 # ! 828: 799 000207C0 # ! 829: 800 000207C0 # /************************************************************************ ! 830: 801 000207C0 # * ! 831: 802 000207C0 # * SUBTEST 5 - pipelined entry test ! 832: 803 000207C0 # * ! 833: 804 000207C0 # ************************************************************************/ ! 834: 805 000207C0 # sqrtf_5() ! 835: 806 000207C0 # { ! 836: 807 000207C0 13 0154 jbr L315 ! 837: 808 000207C3 L316: ! 838: 809 000207C3 # force_loop = FALSE; ! 839: 810 000207C3 4d effffff933 clrl _force_loop ! 840: 811 000207C9 # subtest = 8; ! 841: 812 000207C9 0d 08 effffff92c movl $8,_subtest ! 842: 813 000207D0 # for( index = 0; index < max_sqrtf_1_index; index++ ) { ! 843: 814 000207D0 4d effffff926 clrl _index ! 844: 815 000207D6 L319: ! 845: 816 000207D6 1d effffff920 effffff91b cmpl _index,_max_sqrtf_1_index ! 846: 817 000207E1 91 03 13 0130 jgeq L318 ! 847: 818 000207E6 # sgl_ld_acc = sqrtf_1_data[index].ld; /* get operand 1 */ ! 848: 819 000207E6 0d effffff910 50 movl _index,r0 ! 849: 820 000207ED 48 03 50 50 shll $3,r0,r0 ! 850: 821 000207F1 0d e000000000 effffff900 movl _sqrtf_1_data(r0),_sgl_ld_acc ! 851: 822 000207FC # sgl_expected = sqrtf_1_data[index].exp; /* get expected result */ ! 852: 823 000207FC 0d effffff8fa 50 movl _index,r0 ! 853: 824 00020803 48 03 50 50 shll $3,r0,r0 ! 854: 825 00020807 0d e000000004 effffff8ea movl _sqrtf_1_data+4(r0),_sgl_expected ! 855: 826 00020812 # /* ! 856: 827 00020812 # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 857: 828 00020812 # * The force loop flag is set after the first error. ! 858: 829 00020812 # */ ! 859: 830 00020812 # asm("_sqrtf_5_lp1:"); ! 860: 831 00020812 _sqrtf_5_lp1: ! 861: 832 00020812 # asm("movl $0,r0"); /* clear r0 */ ! 862: 833 00020812 0d 00 50 movl $0,r0 ! 863: 834 00020815 # asm("ldf r0"); /* load the Acc. with 0.0 */ ! 864: 835 00020815 06 50 ldf r0 ! 865: 836 00020817 # asm("addf _sgl_ld_acc"); /* add the 1st operand */ ! 866: 837 00020817 c6 effffff8df addf _sgl_ld_acc ! 867: 838 0002081D # asm("sqrtf"); /* get the sqrt */ ! 868: 839 0002081D 45 sqrtf ! 869: 840 0002081E # asm("stf _sgl_st_acc"); /* store the result */ ! 870: 841 0002081E 26 effffff8d8 stf _sgl_st_acc ! 871: 842 00020824 # if( force_loop ) ! 872: 843 00020824 5d effffff8d2 tstl _force_loop ! 873: 844 0002082A 31 02 jeql L320 ! 874: 845 0002082C # asm("brb _sqrtf_5_lp1");; /* loop on the error */ ! 875: 846 0002082C 11 e4 brb _sqrtf_5_lp1 ! 876: 847 0002082E L320: ! 877: 848 0002082E # /* ! 878: 849 0002082E # * end error loop - test the results ! 879: 850 0002082E # */ ! 880: 851 0002082E # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */ ! 881: 852 0002082E 1d effffff8c8 effffff8c3 cmpl _sgl_st_acc,_sgl_expected ! 882: 853 00020839 21 03 13 00cf jeql L321 ! 883: 854 0002083E # errcnt++; /* bump the error count */ ! 884: 855 0002083E 6d effffff8b8 incl _errcnt ! 885: 856 00020844 # if( prt_error ) { ! 886: 857 00020844 5d effffff8b2 tstl _prt_error ! 887: 858 0002084A 21 03 13 009b jeql L322 ! 888: 859 0002084F # writes(" \n"); /* start a new print line */ ! 889: 860 0002084F .data 1 ! 890: 861 00000c31 * L323: ! 891: 862 00000c31 * 200A00 .ascii " \12\0" ! 892: 863 00000c34 * .text ! 893: 864 0002084F dd 8f00000c31 pushl $L323 ! 894: 865 00020855 fe 08 effffff8a0 callf $8,_writes ! 895: 866 0002085C # writes("cycle: "); ! 896: 867 0002085C .data 1 ! 897: 868 00000c34 * L324: ! 898: 869 00000c34 * 6379636C653A2000 .ascii "cycle: \0" ! 899: 870 00000c3c * .text ! 900: 871 0002085C dd 8f00000c34 pushl $L324 ! 901: 872 00020862 fe 08 effffff893 callf $8,_writes ! 902: 873 00020869 # writed( cycle ); ! 903: 874 00020869 dd effffff88d pushl _cycle ! 904: 875 0002086F fe 08 effffff886 callf $8,_writed ! 905: 876 00020876 # writes(" SQRTF test "); ! 906: 877 00020876 .data 1 ! 907: 878 00000c3c * L325: ! 908: 879 00000c3c * 2020535152544620746573742 .ascii " SQRTF test \0" ! 909: 000 ! 910: 880 00000c4a * .text ! 911: 881 00020876 dd 8f00000c3c pushl $L325 ! 912: 882 0002087C fe 08 effffff879 callf $8,_writes ! 913: 883 00020883 # writed( test_no ); ! 914: 884 00020883 dd effffff873 pushl _test_no ! 915: 885 00020889 fe 08 effffff86c callf $8,_writed ! 916: 886 00020890 # writes(", subtest 5 (Piped Entry) - BAD FINAL ACC\n"); ! 917: 887 00020890 .data 1 ! 918: 888 00000c4a * L326: ! 919: 889 00000c4a * 2C20737562746573742035202 .ascii ", subtest 5 (Piped Entry) - BAD FINAL ACC\12\0" ! 920: 8506970656420456E74727929 ! 921: 202D204241442046494E414C2 ! 922: 04143430A00 ! 923: 890 00000c75 * .text ! 924: 891 00020890 dd 8f00000c4a pushl $L326 ! 925: 892 00020896 fe 08 effffff85f callf $8,_writes ! 926: 893 0002089D # print_sqrtf_data(); ! 927: 894 0002089D fe 04 ef000001d2 callf $4,_print_sqrtf_data ! 928: 895 000208A4 # writes(", data index = "); ! 929: 896 000208A4 .data 1 ! 930: 897 00000c75 * L327: ! 931: 898 00000c75 * 2C20206461746120696E64657 .ascii ", data index = \0" ! 932: 8203D2000 ! 933: 899 00000c86 * .text ! 934: 900 000208A4 dd 8f00000c75 pushl $L327 ! 935: 901 000208AA fe 08 effffff84b callf $8,_writes ! 936: 902 000208B1 # writed( index ); ! 937: 903 000208B1 dd effffff845 pushl _index ! 938: 904 000208B7 fe 08 effffff83e callf $8,_writed ! 939: 905 000208BE # writec('\n'); ! 940: 906 000208BE dd 0a pushl $10 ! 941: 907 000208C0 fe 08 effffff835 callf $8,_writec ! 942: 908 000208C7 # writes(" Acc expected = "); ! 943: 909 000208C7 .data 1 ! 944: 910 00000c86 * L328: ! 945: 911 00000c86 * 2020202020202020202020202 .ascii " Acc expected = \0" ! 946: 0202020202020202020416363 ! 947: 206578706563746564203D200 ! 948: 0 ! 949: 912 00000cac * .text ! 950: 913 000208C7 dd 8f00000c86 pushl $L328 ! 951: 914 000208CD fe 08 effffff828 callf $8,_writes ! 952: 915 000208D4 # write32h( sgl_expected ); ! 953: 916 000208D4 dd effffff822 pushl _sgl_expected ! 954: 917 000208DA fe 08 effffff81b callf $8,_write32h ! 955: 918 000208E1 # writec('\n'); ! 956: 919 000208E1 dd 0a pushl $10 ! 957: 920 000208E3 fe 08 effffff812 callf $8,_writec ! 958: 921 000208EA # } ! 959: 922 000208EA # if( halt_flg ) ! 960: 923 000208EA L322: ! 961: 924 000208EA 5d effffff80c tstl _halt_flg ! 962: 925 000208F0 31 09 jeql L329 ! 963: 926 000208F2 # sqrtf_er_halt( BAD_ACC_HLT ); /* halt on the error */ ! 964: 927 000208F2 dd 01 pushl $1 ! 965: 928 000208F4 fe 08 ef000001b7 callf $8,_sqrtf_er_halt ! 966: 929 000208FB # if( loop_on_err ) { ! 967: 930 000208FB L329: ! 968: 931 000208FB 5d effffff7fb tstl _loop_on_err ! 969: 932 00020901 31 0a jeql L330 ! 970: 933 00020903 # force_loop = TRUE; /* set the force loop flag */ ! 971: 934 00020903 0d 01 effffff7f2 movl $1,_force_loop ! 972: 935 0002090A # asm("brw _sqrtf_5_lp1");; /* and loop on the error */ ! 973: 936 0002090A 13 ff05 brw _sqrtf_5_lp1 ! 974: 937 0002090D # } /* end of loop on error */ ! 975: 938 0002090D # } /* end of compare error */ ! 976: 939 0002090D L330: ! 977: 940 0002090D # } /* end of WHILE loop */ ! 978: 941 0002090D L321: ! 979: 942 0002090D L317: ! 980: 943 0002090D 6d effffff7e9 incl _index ! 981: 944 00020913 13 fec0 jbr L319 ! 982: 945 00020916 L318: ! 983: 946 00020916 # } /* end of subtest 5 */ ! 984: 947 00020916 40 ret#2 ! 985: 948 00020917 .set L313,0x0 ! 986: 949 00020917 L315: ! 987: 950 00020917 13 fea9 jbr L316 ! 988: 951 0002091A .data ! 989: 952 00000a60 * .text ! 990: 953 0002091A .align 1 ! 991: 954 0002091A .globl _sqrtf_6 ! 992: 955 0002091A _sqrtf_6: ! 993: 956 0002091A 0000 .word L331 ! 994: 957 0002091C # ! 995: 958 0002091C # ! 996: 959 0002091C # ! 997: 960 0002091C # /************************************************************************ ! 998: 961 0002091C # * ! 999: 962 0002091C # * SUBTEST 6 - pipelined exit test ! 1000: 963 0002091C # * ! 1001: 964 0002091C # ************************************************************************/ ! 1002: 965 0002091C # sqrtf_6() ! 1003: 966 0002091C # { ! 1004: 967 0002091C 13 0154 jbr L333 ! 1005: 968 0002091F L334: ! 1006: 969 0002091F # force_loop = FALSE; ! 1007: 970 0002091F 4d effffff7d7 clrl _force_loop ! 1008: 971 00020925 # subtest = 8; ! 1009: 972 00020925 0d 08 effffff7d0 movl $8,_subtest ! 1010: 973 0002092C # for( index = 0; index < max_sqrtf_1_index; index++ ) { ! 1011: 974 0002092C 4d effffff7ca clrl _index ! 1012: 975 00020932 L337: ! 1013: 976 00020932 1d effffff7c4 effffff7bf cmpl _index,_max_sqrtf_1_index ! 1014: 977 0002093D 91 03 13 0130 jgeq L336 ! 1015: 978 00020942 # sgl_ld_acc = sqrtf_1_data[index].ld; /* get operand 1 */ ! 1016: 979 00020942 0d effffff7b4 50 movl _index,r0 ! 1017: 980 00020949 48 03 50 50 shll $3,r0,r0 ! 1018: 981 0002094D 0d e000000000 effffff7a4 movl _sqrtf_1_data(r0),_sgl_ld_acc ! 1019: 982 00020958 # sgl_expected = sqrtf_1_data[index].exp; /* get expected result */ ! 1020: 983 00020958 0d effffff79e 50 movl _index,r0 ! 1021: 984 0002095F 48 03 50 50 shll $3,r0,r0 ! 1022: 985 00020963 0d e000000004 effffff78e movl _sqrtf_1_data+4(r0),_sgl_expected ! 1023: 986 0002096E # /* ! 1024: 987 0002096E # * If LOOP ON ERROR is set, this is the loop for this subtest. ! 1025: 988 0002096E # * The force loop flag is set after the first error. ! 1026: 989 0002096E # */ ! 1027: 990 0002096E # asm("_sqrtf_6_lp1:"); ! 1028: 991 0002096E _sqrtf_6_lp1: ! 1029: 992 0002096E # asm("movl $0,r0"); /* clear r0 */ ! 1030: 993 0002096E 0d 00 50 movl $0,r0 ! 1031: 994 00020971 # asm("ldf _sgl_ld_acc"); /* load the Acc. */ ! 1032: 995 00020971 06 effffff785 ldf _sgl_ld_acc ! 1033: 996 00020977 # asm("sqrtf"); /* get the sqrt */ ! 1034: 997 00020977 45 sqrtf ! 1035: 998 00020978 # asm("addf r0"); /* add a zero to the acc */ ! 1036: 999 00020978 c6 50 addf r0 ! 1037: 1000 0002097A # asm("stf _sgl_st_acc"); /* store the result */ ! 1038: 1001 0002097A 26 effffff77c stf _sgl_st_acc ! 1039: 1002 00020980 # if( force_loop ) ! 1040: 1003 00020980 5d effffff776 tstl _force_loop ! 1041: 1004 00020986 31 02 jeql L338 ! 1042: 1005 00020988 # asm("brb _sqrtf_6_lp1");; /* loop on the error */ ! 1043: 1006 00020988 11 e4 brb _sqrtf_6_lp1 ! 1044: 1007 0002098A L338: ! 1045: 1008 0002098A # /* ! 1046: 1009 0002098A # * end error loop - test the results ! 1047: 1010 0002098A # */ ! 1048: 1011 0002098A # if( sgl_st_acc != sgl_expected ) { /* COMPARE the values */ ! 1049: 1012 0002098A 1d effffff76c effffff767 cmpl _sgl_st_acc,_sgl_expected ! 1050: 1013 00020995 21 03 13 00cf jeql L339 ! 1051: 1014 0002099A # errcnt++; /* bump the error count */ ! 1052: 1015 0002099A 6d effffff75c incl _errcnt ! 1053: 1016 000209A0 # if( prt_error ) { ! 1054: 1017 000209A0 5d effffff756 tstl _prt_error ! 1055: 1018 000209A6 21 03 13 009b jeql L340 ! 1056: 1019 000209AB # writes(" \n"); /* start a new print line */ ! 1057: 1020 000209AB .data 1 ! 1058: 1021 00000cac * L341: ! 1059: 1022 00000cac * 200A00 .ascii " \12\0" ! 1060: 1023 00000caf * .text ! 1061: 1024 000209AB dd 8f00000cac pushl $L341 ! 1062: 1025 000209B1 fe 08 effffff744 callf $8,_writes ! 1063: 1026 000209B8 # writes("cycle: "); ! 1064: 1027 000209B8 .data 1 ! 1065: 1028 00000caf * L342: ! 1066: 1029 00000caf * 6379636C653A2000 .ascii "cycle: \0" ! 1067: 1030 00000cb7 * .text ! 1068: 1031 000209B8 dd 8f00000caf pushl $L342 ! 1069: 1032 000209BE fe 08 effffff737 callf $8,_writes ! 1070: 1033 000209C5 # writed( cycle ); ! 1071: 1034 000209C5 dd effffff731 pushl _cycle ! 1072: 1035 000209CB fe 08 effffff72a callf $8,_writed ! 1073: 1036 000209D2 # writes(" SQRTF test "); ! 1074: 1037 000209D2 .data 1 ! 1075: 1038 00000cb7 * L343: ! 1076: 1039 00000cb7 * 2020535152544620746573742 .ascii " SQRTF test \0" ! 1077: 000 ! 1078: 1040 00000cc5 * .text ! 1079: 1041 000209D2 dd 8f00000cb7 pushl $L343 ! 1080: 1042 000209D8 fe 08 effffff71d callf $8,_writes ! 1081: 1043 000209DF # writed( test_no ); ! 1082: 1044 000209DF dd effffff717 pushl _test_no ! 1083: 1045 000209E5 fe 08 effffff710 callf $8,_writed ! 1084: 1046 000209EC # writes(", subtest 6 (Piped Exit) - BAD FINAL ACC\n"); ! 1085: 1047 000209EC .data 1 ! 1086: 1048 00000cc5 * L344: ! 1087: 1049 00000cc5 * 2C20737562746573742036202 .ascii ", subtest 6 (Piped Exit) - BAD FINAL ACC\12\0" ! 1088: 8506970656420457869742920 ! 1089: 2D204241442046494E414C204 ! 1090: 143430A00 ! 1091: 1050 00000cef * .text ! 1092: 1051 000209EC dd 8f00000cc5 pushl $L344 ! 1093: 1052 000209F2 fe 08 effffff703 callf $8,_writes ! 1094: 1053 000209F9 # print_sqrtf_data(); ! 1095: 1054 000209F9 fe 04 ef00000076 callf $4,_print_sqrtf_data ! 1096: 1055 00020A00 # writes(", data index = "); ! 1097: 1056 00020A00 .data 1 ! 1098: 1057 00000cef * L345: ! 1099: 1058 00000cef * 2C20206461746120696E64657 .ascii ", data index = \0" ! 1100: 8203D2000 ! 1101: 1059 00000d00 * .text ! 1102: 1060 00020A00 dd 8f00000cef pushl $L345 ! 1103: 1061 00020A06 fe 08 effffff6ef callf $8,_writes ! 1104: 1062 00020A0D # writed( index ); ! 1105: 1063 00020A0D dd effffff6e9 pushl _index ! 1106: 1064 00020A13 fe 08 effffff6e2 callf $8,_writed ! 1107: 1065 00020A1A # writec('\n'); ! 1108: 1066 00020A1A dd 0a pushl $10 ! 1109: 1067 00020A1C fe 08 effffff6d9 callf $8,_writec ! 1110: 1068 00020A23 # writes(" Acc expected = "); ! 1111: 1069 00020A23 .data 1 ! 1112: 1070 00000d00 * L346: ! 1113: 1071 00000d00 * 2020202020202020202020202 .ascii " Acc expected = \0" ! 1114: 0202020202020202020416363 ! 1115: 206578706563746564203D200 ! 1116: 0 ! 1117: 1072 00000d26 * .text ! 1118: 1073 00020A23 dd 8f00000d00 pushl $L346 ! 1119: 1074 00020A29 fe 08 effffff6cc callf $8,_writes ! 1120: 1075 00020A30 # write32h( sgl_expected ); ! 1121: 1076 00020A30 dd effffff6c6 pushl _sgl_expected ! 1122: 1077 00020A36 fe 08 effffff6bf callf $8,_write32h ! 1123: 1078 00020A3D # writec('\n'); ! 1124: 1079 00020A3D dd 0a pushl $10 ! 1125: 1080 00020A3F fe 08 effffff6b6 callf $8,_writec ! 1126: 1081 00020A46 # } ! 1127: 1082 00020A46 # if( halt_flg ) ! 1128: 1083 00020A46 L340: ! 1129: 1084 00020A46 5d effffff6b0 tstl _halt_flg ! 1130: 1085 00020A4C 31 09 jeql L347 ! 1131: 1086 00020A4E # sqrtf_er_halt( BAD_ACC_HLT ); /* halt on the error */ ! 1132: 1087 00020A4E dd 01 pushl $1 ! 1133: 1088 00020A50 fe 08 ef0000005b callf $8,_sqrtf_er_halt ! 1134: 1089 00020A57 # if( loop_on_err ) { ! 1135: 1090 00020A57 L347: ! 1136: 1091 00020A57 5d effffff69f tstl _loop_on_err ! 1137: 1092 00020A5D 31 0a jeql L348 ! 1138: 1093 00020A5F # force_loop = TRUE; /* set the force loop flag */ ! 1139: 1094 00020A5F 0d 01 effffff696 movl $1,_force_loop ! 1140: 1095 00020A66 # asm("brw _sqrtf_6_lp1");; /* and loop on the error */ ! 1141: 1096 00020A66 13 ff05 brw _sqrtf_6_lp1 ! 1142: 1097 00020A69 # } /* end of loop on error */ ! 1143: 1098 00020A69 # } /* end of compare error */ ! 1144: 1099 00020A69 L348: ! 1145: 1100 00020A69 # } /* end of WHILE loop */ ! 1146: 1101 00020A69 L339: ! 1147: 1102 00020A69 L335: ! 1148: 1103 00020A69 6d effffff68d incl _index ! 1149: 1104 00020A6F 13 fec0 jbr L337 ! 1150: 1105 00020A72 L336: ! 1151: 1106 00020A72 # } /* end of subtest 6 */ ! 1152: 1107 00020A72 40 ret#2 ! 1153: 1108 00020A73 .set L331,0x0 ! 1154: 1109 00020A73 L333: ! 1155: 1110 00020A73 13 fea9 jbr L334 ! 1156: 1111 00020A76 .data ! 1157: 1112 00000a60 * .text ! 1158: 1113 00020A76 .align 1 ! 1159: 1114 00020A76 .globl _print_sqrtf_data ! 1160: 1115 00020A76 _print_sqrtf_data: ! 1161: 1116 00020A76 0000 .word L349 ! 1162: 1117 00020A78 # ! 1163: 1118 00020A78 # ! 1164: 1119 00020A78 # ! 1165: 1120 00020A78 # /************************************************************************** ! 1166: 1121 00020A78 # * ! 1167: 1122 00020A78 # * PRINT THE DATA AND STORE RESULTS ! 1168: 1123 00020A78 # * ! 1169: 1124 00020A78 # * initial Acc = xxxxxxxx, stored = xxxxxxxx, data index = xx ! 1170: 1125 00020A78 # * Acc expected = xxxxxxxx ! 1171: 1126 00020A78 # **************************************************************************/ ! 1172: 1127 00020A78 # print_sqrtf_data() ! 1173: 1128 00020A78 # { ! 1174: 1129 00020A78 11 35 jbr L351 ! 1175: 1130 00020A7A L352: ! 1176: 1131 00020A7A # writes("initial Acc = "); ! 1177: 1132 00020A7A .data 1 ! 1178: 1133 00000d26 * L353: ! 1179: 1134 00000d26 * 696E697469616C20416363203 .ascii "initial Acc = \0" ! 1180: D2000 ! 1181: 1135 00000d35 * .text ! 1182: 1136 00020A7A dd 8f00000d26 pushl $L353 ! 1183: 1137 00020A80 fe 08 effffff675 callf $8,_writes ! 1184: 1138 00020A87 # write32h( sgl_ld_acc ); ! 1185: 1139 00020A87 dd effffff66f pushl _sgl_ld_acc ! 1186: 1140 00020A8D fe 08 effffff668 callf $8,_write32h ! 1187: 1141 00020A94 # writes(", final Acc = "); ! 1188: 1142 00020A94 .data 1 ! 1189: 1143 00000d35 * L354: ! 1190: 1144 00000d35 * 2C202066696E616C204163632 .ascii ", final Acc = \0" ! 1191: 03D2000 ! 1192: 1145 00000d45 * .text ! 1193: 1146 00020A94 dd 8f00000d35 pushl $L354 ! 1194: 1147 00020A9A fe 08 effffff65b callf $8,_writes ! 1195: 1148 00020AA1 # write32h( sgl_st_acc ); ! 1196: 1149 00020AA1 dd effffff655 pushl _sgl_st_acc ! 1197: 1150 00020AA7 fe 08 effffff64e callf $8,_write32h ! 1198: 1151 00020AAE # } ! 1199: 1152 00020AAE 40 ret#2 ! 1200: 1153 00020AAF .set L349,0x0 ! 1201: 1154 00020AAF L351: ! 1202: 1155 00020AAF 11 c9 jbr L352 ! 1203: 1156 00020AB1 .data ! 1204: 1157 00000a60 * .text ! 1205: 1158 00020AB1 00 .align 1 ! 1206: 1159 00020AB2 .globl _sqrtf_er_halt ! 1207: 1160 00020AB2 _sqrtf_er_halt: ! 1208: 1161 00020AB2 0000 .word L355 ! 1209: 1162 00020AB4 # ! 1210: 1163 00020AB4 # ! 1211: 1164 00020AB4 # ! 1212: 1165 00020AB4 # /************************************************************************** ! 1213: 1166 00020AB4 # * ! 1214: 1167 00020AB4 # * HALT ON ERROR ROUTINE ! 1215: 1168 00020AB4 # * ! 1216: 1169 00020AB4 # **************************************************************************/ ! 1217: 1170 00020AB4 # sqrtf_er_halt( halt_code ) ! 1218: 1171 00020AB4 # int halt_code; ! 1219: 1172 00020AB4 # { ! 1220: 1173 00020AB4 13 00a0 jbr L357 ! 1221: 1174 00020AB7 L358: ! 1222: 1175 00020AB7 # sgl_dummy1 = halt_code; /* get the error type */ ! 1223: 1176 00020AB7 0d ad04 effffff63d movl 4(fp),_sgl_dummy1 ! 1224: 1177 00020ABF # asm("movl _test_no,r0"); /* r0 = test number */ ! 1225: 1178 00020ABF 0d effffff637 50 movl _test_no,r0 ! 1226: 1179 00020AC6 # asm("movl _subtest,r1"); /* r1 = subtest number */ ! 1227: 1180 00020AC6 0d effffff630 51 movl _subtest,r1 ! 1228: 1181 00020ACD # asm("movl _sgl_dummy1,r2"); /* r2 = error code */ ! 1229: 1182 00020ACD 0d effffff629 52 movl _sgl_dummy1,r2 ! 1230: 1183 00020AD4 # asm("movl _cycle,r3"); /* r3 = cycle count */ ! 1231: 1184 00020AD4 0d effffff622 53 movl _cycle,r3 ! 1232: 1185 00020ADB # asm("movl _sgl_ld_acc,r4"); /* r4 = initial data */ ! 1233: 1186 00020ADB 0d effffff61b 54 movl _sgl_ld_acc,r4 ! 1234: 1187 00020AE2 # asm("movl _sgl_st_acc,r5"); /* r5 = data stored */ ! 1235: 1188 00020AE2 0d effffff614 55 movl _sgl_st_acc,r5 ! 1236: 1189 00020AE9 # asm("movl _sgl_expected,r6"); /* r6 = data expected */ ! 1237: 1190 00020AE9 0d effffff60d 56 movl _sgl_expected,r6 ! 1238: 1191 00020AF0 # asm("movl _index,r7"); /* r7 = data index */ ! 1239: 1192 00020AF0 0d effffff606 57 movl _index,r7 ! 1240: 1193 00020AF7 # if( halt_code == BAD_REG_HLT ) { ! 1241: 1194 00020AF7 1d ad04 02 cmpl 4(fp),$2 ! 1242: 1195 00020AFB 21 3d jneq L359 ! 1243: 1196 00020AFD # sgl_dummy1 = load_regs[index2]; ! 1244: 1197 00020AFD 0d effffff5f9 50 movl _index2,r0 ! 1245: 1198 00020B04 0d 40effffff5f1 movl _load_regs[r0],_sgl_dummy1 ! 1246: effffff5ec ! 1247: 1199 00020B10 # sgl_dummy2 = store_regs[index2]; ! 1248: 1200 00020B10 0d effffff5e6 50 movl _index2,r0 ! 1249: 1201 00020B17 0d 40effffff5de movl _store_regs[r0],_sgl_dummy2 ! 1250: effffff5d9 ! 1251: 1202 00020B23 # asm("movl _index2,r6"); /* r6 = bad register # */ ! 1252: 1203 00020B23 0d effffff5d3 56 movl _index2,r6 ! 1253: 1204 00020B2A # asm("movl _sgl_dummy2,r7"); /* r7 = actual value */ ! 1254: 1205 00020B2A 0d effffff5cc 57 movl _sgl_dummy2,r7 ! 1255: 1206 00020B31 # asm("movl _sgl_dummy1,r8"); /* r8 = expected value */ ! 1256: 1207 00020B31 0d effffff5c5 58 movl _sgl_dummy1,r8 ! 1257: 1208 00020B38 # } else ! 1258: 1209 00020B38 11 1b jbr L360 ! 1259: 1210 00020B3A L359: ! 1260: 1211 00020B3A # if( halt_code == BAD_PSL_HLT ) { ! 1261: 1212 00020B3A 1d ad04 03 cmpl 4(fp),$3 ! 1262: 1213 00020B3E 21 15 jneq L361 ! 1263: 1214 00020B40 # asm("movl _init_psl,r6"); /* r6 = initial PSL */ ! 1264: 1215 00020B40 0d effffff5b6 56 movl _init_psl,r6 ! 1265: 1216 00020B47 # asm("movl _psl_val,r7"); /* r7 = final PSL */ ! 1266: 1217 00020B47 0d effffff5af 57 movl _psl_val,r7 ! 1267: 1218 00020B4E # asm("movl _exp_psl,r8"); /* r8 = expected PSL */ ! 1268: 1219 00020B4E 0d effffff5a8 58 movl _exp_psl,r8 ! 1269: 1220 00020B55 # }; ! 1270: 1221 00020B55 L361: ! 1271: 1222 00020B55 L360: ! 1272: 1223 00020B55 # asm("halt"); /* HALT ... */ ! 1273: 1224 00020B55 00 halt ! 1274: 1225 00020B56 # } ! 1275: 1226 00020B56 40 ret#2 ! 1276: 1227 00020B57 .set L355,0x0 ! 1277: 1228 00020B57 L357: ! 1278: 1229 00020B57 13 ff5d jbr L358 ! 1279: 1230 00020B5A .data ! 1280: 1230 00040C56 .data
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.