Lines Matching refs:l

921 	bsr.l		load_fpn2		# load dst into FP_DST
924 bsr.l set_tag_x # tag the operand type
927 bsr.l unnorm_fix # yes; convert to NORM,DENORM,or ZERO
933 #$# mov.l FP_SRC_EX(%a6),TRAP_SRCOP_EX(%a6)
934 #$# mov.l FP_SRC_HI(%a6),TRAP_SRCOP_HI(%a6)
935 #$# mov.l FP_SRC_LO(%a6),TRAP_SRCOP_LO(%a6)
936 #$# mov.l FP_DST_EX(%a6),TRAP_DSTOP_EX(%a6)
937 #$# mov.l FP_DST_HI(%a6),TRAP_DSTOP_HI(%a6)
938 #$# mov.l FP_DST_LO(%a6),TRAP_DSTOP_LO(%a6)
940 clr.l %d0
946 andi.l &0x00ff01ff,USER_FPSR(%a6)
948 fmov.l &0x0,%fpcr # zero current control regs
949 fmov.l &0x0,%fpsr
955 mov.l (tbl_unsupp.l,%pc,%d1.w*4),%d1 # fetch routine addr
956 jsr (tbl_unsupp.l,%pc,%d1.l*1)
959 bsr.l store_fpreg
982 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
983 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
986 #$# add.l &24,%sp
987 bra.l _fpsp_done
1225 mov.l %a0,EXC_A7(%a6) # save on stack
1232 mov.l USER_FPIAR(%a6),EXC_EXTWPTR(%a6)
1233 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
1234 addq.l &0x4,EXC_EXTWPTR(%a6) # incr instruction ptr
1235 bsr.l _imem_read_long # fetch the instruction words
1236 mov.l %d0,EXC_OPWORD(%a6) # store OPWORD and EXTWORD
1270 bsr.l set_tag_x # tag the operand type
1273 bsr.l unnorm_fix # yes; convert to NORM,DENORM,or ZERO
1334 bsr.l store_fpreg # store the result
1339 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
1340 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
1344 bra.l _fpsp_done
1385 subi.l &24,%d0 # fix offset to be 0-8
1399 mov.l %d0,-(%sp) # save d0
1400 bsr.l funimp_skew # skew sgl or dbl inputs
1401 mov.l (%sp)+,%d0 # restore d0
1406 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
1407 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
1413 bra.l _fpsp_done
1449 andi.l &0x7fffffff,LOCAL_HI(%a0) # clear j-bit
1481 tst.l LOCAL_LO(%a0) # is it a zero?
1485 bsr.l norm # normalize mantissa
1510 and.l &0xffff00ff,USER_FPSR(%a6) # zero exception field
1512 fmov.l &0x0,%fpcr # zero current control regs
1513 fmov.l &0x0,%fpsr
1522 bsr.l unnorm_fix # yes; fix it
1531 clr.l %d0
1536 mov.l (%a6),EXC_A6(%a6) # in case a6 changes
1537 bsr.l fout # call fmove out routine
1542 # OPERR : fmove.{b,w,l} out of large UNNORM
1566 mov.l EXC_A7(%a6),%a0 # restore a7
1567 mov.l %a0,%usp
1571 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
1572 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
1579 bra.l _fpsp_done
1678 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
1679 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
1689 bra.l _real_snan
1693 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
1694 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
1704 bra.l _real_operr
1710 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
1711 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
1720 bra.l _real_ovfl
1763 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
1764 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
1771 mov.l (%a6),%a6 # restore frame pointer
1773 mov.l LOCAL_SIZE+EXC_SR(%sp),LOCAL_SIZE+EXC_SR-0xc(%sp)
1774 mov.l LOCAL_SIZE+2+EXC_PC(%sp),LOCAL_SIZE+2+EXC_PC-0xc(%sp)
1775 mov.l LOCAL_SIZE+EXC_EA(%sp),LOCAL_SIZE+EXC_EA-0xc(%sp)
1778 mov.l LOCAL_SIZE+FP_SRC_EX(%sp),LOCAL_SIZE+EXC_SR+0x0(%sp)
1779 mov.l LOCAL_SIZE+FP_SRC_HI(%sp),LOCAL_SIZE+EXC_SR+0x4(%sp)
1780 mov.l LOCAL_SIZE+FP_SRC_LO(%sp),LOCAL_SIZE+EXC_SR+0x8(%sp)
1782 add.l &LOCAL_SIZE-0x8,%sp
1784 bra.l _real_unfl
1791 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
1792 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
1802 bra.l _real_inex
1832 bsr.l load_fpn2 # load dst into FP_DST
1835 bsr.l set_tag_x # tag the operand type
1838 bsr.l unnorm_fix # yes; convert to NORM,DENORM,or ZERO
1843 clr.l %d0
1851 mov.l (tbl_unsupp.l,%pc,%d1.l*4),%d1 # fetch routine addr
1852 jsr (tbl_unsupp.l,%pc,%d1.l*1)
1879 bsr.l store_fpreg # store the result
1886 mov.l EXC_A7(%a6),%a0 # update user a7
1887 mov.l %a0,%usp
1891 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
1892 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
1899 bra.l _fpsp_done # exit to os
1915 mov.l 0x4(%sp),0x10(%sp)
1916 mov.l 0x0(%sp),0xc(%sp)
1917 add.l &0xc,%sp
1922 bra.l _fpsp_done # exit to os
1963 subi.l &24,%d0 # fix offset to be 0-8
1983 mov.l EXC_A7(%a6),%a0 # update user a7
1984 mov.l %a0,%usp
1990 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
1991 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
2000 bra.l _fpsp_done
2021 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
2022 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
2029 mov.l 0x4(%sp),0x10(%sp)
2030 mov.l 0x0(%sp),0xc(%sp)
2031 add.l &0xc,%sp
2036 bra.l _fpsp_done # exit to os
2057 fmov.l %fpiar,0x8(%sp)
2059 bra.l _real_trace
2069 and.l &0xffff00ff,USER_FPSR(%a6) # zero exception field
2071 fmov.l &0x0,%fpcr # zero current control regs
2072 fmov.l &0x0,%fpsr
2075 bsr.l load_fpn1
2080 bsr.l set_tag_x # tag the operand type
2083 bsr.l unnorm_fix # yes; convert to NORM,DENORM,or ZERO
2088 clr.l %d0
2093 mov.l (%a6),EXC_A6(%a6) # in case a6 changes
2094 bsr.l fout # call fmove out routine
2112 mov.l EXC_A6(%a6),(%a6) # restore a6
2117 mov.l EXC_A7(%a6),%a0 # update user a7
2118 mov.l %a0,%usp
2122 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
2123 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
2130 bra.l _fpsp_done # exit to os
2318 mov.l FP_SRC_HI(%a6),%d1 # fetch DENORM hi(man)
2319 lsr.l %d0,%d1 # shift it
2321 mov.l %d1,FP_SRC_HI(%a6) # insert new hi(man)
2337 clr.l %d0 # clear g,r,s
2340 bsr.l dnrm_lp # denorm it
2355 beq.l _dmem_write
2356 mov.l 0x0(%a0),FP_DST_EX(%a6)
2357 mov.l 0x4(%a0),FP_DST_HI(%a6)
2358 mov.l 0x8(%a0),FP_DST_LO(%a6)
2359 clr.l %d1
2458 mov.l %d0,-(%sp) # save d0
2462 mov.l (%sp)+,%d0 # restore d0
2466 movm.l &0x0303,EXC_DREGS(%a6) # save d0-d1/a0-a1
2467 fmovm.l %fpcr,%fpsr,%fpiar,USER_FPCR(%a6) # save ctrl regs
2471 mov.l EXC_PC(%a6),EXC_EXTWPTR(%a6)
2473 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
2474 addq.l &0x4,EXC_EXTWPTR(%a6) # incr instruction ptr
2475 bsr.l _imem_read_long # fetch the instruction words
2476 mov.l %d0,EXC_OPWORD(%a6) # store OPWORD and EXTWORD
2539 tst.l FP_SRC_HI(%a6) # is lw 2 zero?
2541 tst.l FP_SRC_LO(%a6) # is lw 3 zero?
2545 bsr.l decbin # convert to extended
2549 addi.l &0xc,EXC_EXTWPTR(%a6) # update extension word pointer
2553 bsr.l set_tag_x # tag the operand type
2557 bsr.l unnorm_fix # yes; convert to NORM/DENORM/ZERO
2569 bsr.l load_fpn2 # load dst operand
2572 bsr.l set_tag_x # tag the operand type
2576 bsr.l unnorm_fix # yes; convert to NORM/DENORM/ZERO
2591 clr.l %d0
2597 fmov.l &0x0,%fpcr
2598 fmov.l &0x0,%fpsr
2603 mov.l (tbl_unsupp.l,%pc,%d1.w*4),%d1 # fetch routine addr
2604 jsr (tbl_unsupp.l,%pc,%d1.l*1)
2934 mov.l (%a6),%a6 # restore frame pointer
2936 mov.l EXC_PC+LOCAL_SIZE(%sp),0x8+LOCAL_SIZE(%sp)
2937 mov.l EXC_EXTWPTR+LOCAL_SIZE(%sp),0x2+LOCAL_SIZE(%sp)
2939 add.l &LOCAL_SIZE,%sp # clear stack frame
2941 bra.l _real_trace
2951 mov.l (%sp)+,%d0 # restore d0
2955 movm.l &0x0303,EXC_DREGS(%a6) # save d0-d1/a0-a1
2958 mov.l EXC_PC(%a6),EXC_EXTWPTR(%a6)
2959 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
2960 addq.l &0x4,EXC_EXTWPTR(%a6) # incr instruction ptr
2961 bsr.l _imem_read_long # fetch the instruction words
2962 mov.l %d0,EXC_OPWORD(%a6) # store OPWORD and EXTWORD
2969 mov.l &0x10,%d0 # 16 bytes of instruction
2974 # the instruction is a fmovm.l with 2 or 3 registers.
2976 mov.l &0xc,%d0
2979 addq.l &0x4,%d0
2986 clr.l %d0
2987 bsr.l fmovm_calc_ea
2988 mov.l EXC_EXTWPTR(%a6),%d0
2989 sub.l EXC_PC(%a6),%d0
2993 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
3000 subq.l &0x8,%sp # make room for new stack
3001 mov.l %d0,-(%sp) # save d0
3003 mov.l 0xe(%sp),0x6(%sp) # move Current PC
3004 clr.l %d0
3006 mov.l 0x6(%sp),0x10(%sp) # move Current PC
3007 add.l %d0,0x6(%sp) # make Next PC
3009 mov.l (%sp)+,%d0 # restore d0
3011 bra.l _real_fpu_disabled
3019 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
3022 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
3027 mov.l 0x8(%sp),(%sp) # store SR,hi(PC)
3030 mov.l 0x2(%sp),0x8(%sp) # store ea
3031 mov.l &0x09428001,0xc(%sp) # store fslw
3039 bra.l _real_access
3048 fmovm.l LOCAL_SIZE+USER_FPCR(%sp),%fpcr,%fpsr,%fpiar # restore ctrl regs
3050 mov.l (%a6),%a6
3052 mov.l 0x4+LOCAL_SIZE(%sp),-0x8+0x4+LOCAL_SIZE(%sp)
3055 mov.l %a0,-0x8+0xc+LOCAL_SIZE(%sp)
3059 movm.l LOCAL_SIZE+EXC_DREGS(%sp),&0x0303 # restore d0-d1/a0-a1
3076 # store_dreg_{b,w,l}() - store data to data regfile (opclass 3) #
3077 # facc_out_{b,w,l}() - store to memory took access error (opcl 3) #
3172 tst.l FP_SRC_LO(%a6)
3174 mov.l FP_SRC_HI(%a6),%d1
3175 andi.l &0x7fffffff,%d1
3178 mov.l FP_SRC_HI(%a6),L_SCR1(%a6)
3182 mov.l &0x7fffffff,%d1
3185 addq.l &0x1,%d1
3187 mov.l %d1,L_SCR1(%a6)
3309 movm.l &0x0303,EXC_DREGS(%a6) # save d0-d1/a0-a1
3310 fmovm.l %fpcr,%fpsr,%fpiar,USER_FPCR(%a6) # save ctrl regs
3314 mov.l USER_FPIAR(%a6),EXC_EXTWPTR(%a6)
3316 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
3317 addq.l &0x4,EXC_EXTWPTR(%a6) # incr instruction ptr
3318 bsr.l _imem_read_long # fetch the instruction words
3319 mov.l %d0,EXC_OPWORD(%a6)
3332 bsr.l fix_skewed_ops # fix src op
3336 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
3337 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
3342 bra.l _real_snan
3727 clr.l %d0
3730 andi.l &0xffff00ff,USER_FPSR(%a6) # zero exception field
3734 bsr.l fout # store the default result
3775 movm.l &0x0303,EXC_DREGS(%a6) # save d0-d1/a0-a1
3776 fmovm.l %fpcr,%fpsr,%fpiar,USER_FPCR(%a6) # save ctrl regs
3780 mov.l USER_FPIAR(%a6),EXC_EXTWPTR(%a6)
3782 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
3783 addq.l &0x4,EXC_EXTWPTR(%a6) # incr instruction ptr
3784 bsr.l _imem_read_long # fetch the instruction words
3785 mov.l %d0,EXC_OPWORD(%a6)
3794 bsr.l fix_skewed_ops # fix src op
3798 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
3799 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
3804 bra.l _real_dz
3849 beq.l _fpsp_unimp
3854 beq.l _real_fpu_disabled
3863 movm.l &0x0303,EXC_DREGS(%a6) # save d0-d1/a0-a1
3865 mov.l EXC_PC(%a6),EXC_EXTWPTR(%a6)
3866 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
3867 addq.l &0x4,EXC_EXTWPTR(%a6) # incr instruction ptr
3868 bsr.l _imem_read_long # fetch instruction words
4038 mov.l %a0,EXC_A7(%a6) # store a7'
4073 andi.l &0x00ff00ff,USER_FPSR(%a6)
4080 bsr.l _load_fop # load
4082 clr.l %d0
4102 bsr.l store_fpreg # store result to fp regfile
4106 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
4107 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
4121 beq.l _fpsp_done # no
4124 # into the machine. the frestore has already been executed...so, the fmov.l
4150 sub.l OLD_A7(%a6),%d0 # subtract old a7'
4200 subi.l &24,%d0 # fix offset to be 0-8
4219 mov.l %d0,-(%sp) # save d0
4220 bsr.l funimp_skew # check for special case
4221 mov.l (%sp)+,%d0 # restore d0
4231 bsr.l funimp_skew # check for special case
4237 bsr.l funimp_skew # check for special case
4244 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
4245 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
4363 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
4364 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
4371 subq.l &0x2,%sp
4372 mov.l 0x2(%sp),(%sp) # shift SR,hi(PC) "down"
4373 mov.l 0x6(%sp),0x4(%sp) # shift lo(PC),voff "down"
4374 bra.l _fpsp_done
4377 subq.l &0x2,%sp
4378 mov.l 0x2(%sp),(%sp) # shift SR,hi(PC) "down"
4381 fmov.l %fpiar,0x8(%sp) # insert "current PC"
4383 bra.l _real_trace
4405 mov.l USER_FPIAR(%a6),EXC_VOFF(%a6) # PC = Current PC
4411 fmovm.l USER_FPCR(%a6),%fpcr,%fpsr,%fpiar # restore ctrl regs
4412 movm.l EXC_DREGS(%a6),&0x0303 # restore d0-d1/a0-a1
4418 addq.l &0x4,%sp # erase sludge
4420 bra.l _real_bsun # branch to user bsun hook
5200 ror.l &1,%d1
5201 and.l &0x80000000,%d1
5203 eor.l %d1,X(%a6) # X IS NOW R'= SGN*R
5229 fmov.l %d0,%fpcr # restore users round mode,prec
5261 and.l &0x80000000,%d1
5265 or.l &0x3F800000,%d1 # D0 IS SGN IN SINGLE
5266 mov.l %d1,POSNEG1(%a6)
5291 fmov.l %d0,%fpcr # restore users round mode,prec
5301 cmp.l %d1,&0x3FFF8000
5302 bgt.l SREDUCEX
5305 mov.l ADJN(%a6),%d1
5306 cmp.l %d1,&0
5314 fmov.l %d0,%fpcr # restore users round mode,prec
5321 fmov.l %d0,%fpcr # restore users round mode,prec
5343 mov.l &4,ADJN(%a6)
5348 mov.l (%a0),%d1
5350 and.l &0x7FFFFFFF,%d1 # COMPACTIFY X
5352 cmp.l %d1,&0x3FD78000 # |X| >= 2**(-40)?
5357 cmp.l %d1,&0x4004BC7E # |X| < 15 PI?
5371 fmov.l %fp1,INT(%a6) # CONVERT TO INTEGER
5373 mov.l INT(%a6),%d1
5374 asl.l &4,%d1
5375 add.l %d1,%a1 # ADDRESS OF N*PIBY2, IN Y1, Y2
5383 mov.l INT(%a6),%d1
5384 ror.l &1,%d1
5385 cmp.l %d1,&0 # D0 < 0 IFF N IS ODD
5399 mov.l %d2,-(%sp)
5400 mov.l %d1,%d2
5401 ror.l &1,%d2
5402 and.l &0x80000000,%d2
5403 eor.l %d1,%d2
5404 and.l &0x80000000,%d2
5410 eor.l %d2,RPRIME(%a6)
5411 mov.l (%sp)+,%d2
5413 ror.l &1,%d1
5414 and.l &0x80000000,%d1
5415 mov.l &0x3F800000,POSNEG1(%a6)
5416 eor.l %d1,POSNEG1(%a6)
5426 eor.l %d1,SPRIME(%a6)
5456 fmov.l %d0,%fpcr
5476 ror.l &1,%d1
5477 and.l &0x80000000,%d1
5482 eor.l %d1,RPRIME(%a6)
5483 eor.l %d1,SPRIME(%a6)
5487 or.l &0x3F800000,%d1
5488 mov.l %d1,POSNEG1(%a6)
5529 fmov.l %d0,%fpcr
5538 cmp.l %d1,&0x3FFF8000
5547 fmov.l %d0,%fpcr
5550 fmov.l %fpcr,%d0 # d0 must have fpcr,too
5560 mov.l %d0,-(%sp) # save d0
5563 mov.l (%sp)+,%d0 # restore d0
5573 mov.l %d2,-(%sp) # save d2
5580 cmp.l %d1,&0x7ffeffff # is arg dangerously large?
5585 mov.l &0xc90fdaa2,FP_SCR0_HI(%a6)
5586 clr.l FP_SCR0_LO(%a6)
5590 mov.l &0x85a308d3,FP_SCR1_HI(%a6)
5591 clr.l FP_SCR1_LO(%a6)
5611 mov.l %d1,%a1 # save a copy of D0
5612 and.l &0x00007FFF,%d1
5613 sub.l &0x00003FFF,%d1 # d0 = K
5614 cmp.l %d1,&28
5617 sub.l &27,%d1 # d0 = L := K-27
5621 clr.l %d1 # d0 = L := 0
5631 mov.l &0x00003FFE,%d2 # BIASED EXP OF 2/PI
5632 sub.l %d1,%d2 # BIASED EXP OF 2**(-L)*(2/PI)
5634 mov.l &0xA2F9836E,FP_SCR0_HI(%a6)
5635 mov.l &0x4E44152A,FP_SCR0_LO(%a6)
6077 mov.l %a1,%d2
6079 and.l &0x80000000,%d2
6080 or.l &0x5F000000,%d2 # d2 = SIGN(INARG)*2**63 IN SGL
6081 mov.l %d2,TWOTO63(%a6)
6087 mov.l %d1,%d2 # d2 = L
6089 add.l &0x00003FFF,%d2 # BIASED EXP OF 2**L * (PI/2)
6091 mov.l &0xC90FDAA2,FP_SCR0_HI(%a6)
6092 clr.l FP_SCR0_LO(%a6) # FP_SCR0 = 2**(L) * Piby2_1
6094 add.l &0x00003FDD,%d1
6096 mov.l &0x85A308D3,FP_SCR1_HI(%a6)
6097 clr.l FP_SCR1_LO(%a6) # FP_SCR1 = 2**(L) * Piby2_2
6133 fmov.l %fp2,INT(%a6)
6134 mov.l (%sp)+,%d2 # restore d2
6137 mov.l INT(%a6),%d1
6138 ror.l &1,%d1
6387 and.l &0xF8000000,XFRAC(%a6) # FIRST 5 BITS
6388 or.l &0x04000000,XFRAC(%a6) # SET 6-TH BIT TO 1
6389 mov.l &0x00000000,XFRACLO(%a6) # LOCATION OF X IS NOW F
6401 mov.l %d2,-(%sp) # SAVE d2 TEMPORARILY
6402 mov.l %d1,%d2 # THE EXP AND 16 BITS OF X
6403 and.l &0x00007800,%d1 # 4 VARYING BITS OF F'S FRACTION
6445 fmov.l %d0,%fpcr # restore users rnd mode,prec
6452 cmp.l %d1,&0x3FFF8000
6462 cmp.l %d1,&0x3FD78000
6497 fmov.l %d0,%fpcr # restore users rnd mode,prec
6504 fmov.l %d0,%fpcr # restore users rnd mode,prec
6513 cmp.l %d1,&0x40638000
6643 cmp.l %d1,&0x3FD78000
6662 add.l &0xc,%sp # clear X/SQRT(...) from stack
6673 mov.l (%a0),%d1
6674 and.l &0x80000000,%d1 # SIGN BIT OF X
6675 or.l &0x3F800000,%d1 # +-1 IN SGL FORMAT
6676 mov.l %d1,-(%sp) # push SIGN(X) IN SGL-FMT
6677 fmov.l %d0,%fpcr
6683 fmov.l %d0,%fpcr # restore users rnd mode,prec
6733 mov.l (%a0),%d1 # pack exp w/ upper 16 fraction
6735 and.l &0x7FFFFFFF,%d1
6736 cmp.l %d1,&0x3FFF8000
6749 mov.l %d0,-(%sp) # save original users fpcr
6750 clr.l %d0
6754 add.l &0xc,%sp # clear SQRT(...) from stack
6756 fmov.l (%sp)+,%fpcr # restore users round prec,mode
6773 fmov.l %d0,%fpcr # load round mode,prec
6783 fmov.l %d0,%fpcr # load user's rnd mode/prec
7636 bsr.l norm # normalize
7650 mov.l SRC_HI(%a0),FP_SCR0_HI(%a6) # copy to tmp loc
7651 mov.l SRC_LO(%a0),FP_SCR0_LO(%a6) # copy to tmp loc
8431 fbeq.l ld_pzero # yes
8476 fmov.l %d0,%fpcr
8488 mov.l &-100,ADJK(%a6) # INPUT = 2^(ADJK) * FP0
8495 movm.l &0x3f00,-(%sp) # save some registers {d2-d7}
8496 mov.l (%a0),%d3 # D3 is exponent of smallest norm. #
8497 mov.l 4(%a0),%d4
8498 mov.l 8(%a0),%d5 # (D4,D5) is (Hi_X,Lo_X)
8499 clr.l %d2 # D2 used for holding K
8501 tst.l %d4
8505 mov.l %d5,%d4
8506 clr.l %d5
8507 mov.l &32,%d2
8508 clr.l %d6
8510 lsl.l %d6,%d4
8511 add.l %d6,%d2 # (D3,D4,D5) is normalized
8513 mov.l %d3,X(%a6)
8514 mov.l %d4,XFRAC(%a6)
8515 mov.l %d5,XFRAC+4(%a6)
8516 neg.l %d2
8517 mov.l %d2,ADJK(%a6)
8519 movm.l (%sp)+,&0xfc # restore registers {d2-d7}
8524 clr.l %d6
8526 mov.l %d6,%d2 # get k
8527 lsl.l %d6,%d4
8528 mov.l %d5,%d7 # a copy of D5
8529 lsl.l %d6,%d5
8530 neg.l %d6
8531 add.l &32,%d6
8532 lsr.l %d6,%d7
8533 or.l %d7,%d4 # (D3,D4,D5) normalized
8535 mov.l %d3,X(%a6)
8536 mov.l %d4,XFRAC(%a6)
8537 mov.l %d5,XFRAC+4(%a6)
8538 neg.l %d2
8539 mov.l %d2,ADJK(%a6)
8541 movm.l (%sp)+,&0xfc # restore registers {d2-d7}
9181 mov.l (%a0),%d1
9182 or.l &0x00800001,%d1
9305 mov.l (%a0),%d1
9306 or.l &0x00800001,%d1
9451 ori.l &inx2a_mask,USER_FPSR(%a6) # set INEX2/AINEX
9471 mov.l 0x4(%a0,%d1.w),FP_SCR1_HI(%a6) # load second word
9472 mov.l 0x8(%a0,%d1.w),FP_SCR1_LO(%a6) # load third word
9473 mov.l %d0,%d1
9474 clr.l %d0 # clear g,r,s
9477 bsr.l _round # round the mantissa
9581 mov.l %d0,-(%sp) # store off ctrl bits for now
9585 andi.l &0x00007fff,%d1 # strip sign from dst exp
9599 fmov.l %fp0,%d0 # int src to d0
9632 fmov.l (%sp)+,%fpcr # restore user fpcr
9633 mov.l &0x80000000,%d1 # load normalized mantissa
9634 subi.l &-0x3fff,%d0 # how many should we shift?
9635 neg.l %d0 # make it positive
9638 lsr.l %d0,%d1 # no; bit stays in upper lw
9639 clr.l -(%sp) # insert zero low mantissa
9640 mov.l %d1,-(%sp) # insert new high mantissa
9641 clr.l -(%sp) # make zero exponent
9645 lsr.l %d0,%d1 # make low mantissa longword
9646 mov.l %d1,-(%sp) # insert new low mantissa
9647 clr.l -(%sp) # insert zero high mantissa
9648 clr.l -(%sp) # make zero exponent
10077 addq.l &1,%d3
10078 cmp.l %d0,&8 # D0 is j
10081 lsl.l %d0,%d3
10085 clr.l %d3
10094 mov.l %d3,%d6
10095 and.l &0x00000001,%d6
10096 tst.l %d6
10100 addq.l &1,%d3
10102 eor.l &0x00008000,%d6
10138 ori.l &dzinf_mask,USER_FPSR(%a6) # set I/DZ/ADZ
10144 ori.l &dzinf_mask+neg_mask,USER_FPSR(%a6) # set N/I/DZ/ADZ
10154 ori.l &opnan_mask,USER_FPSR(%a6) # set NaN/OPERR/AIOP
10170 ori.l &unfl_mask,USER_FPSR(%a6) # set UNFL
10175 ori.l &unfinx_mask,USER_FPSR(%a6) # set UNFL/INEX2/AUNFL/AINEX
10178 mov.l %a0,%a1 # make copy of src ptr
10179 mov.l %d0,%d1 # make copy of rnd prec,mode
10192 mov.l %a1,-(%sp)
10195 bsr.l unf_sub
10196 mov.l (%sp)+,%a1
10213 mov.l LOCAL_HI(%a1),FP_SCR0_HI(%a6)
10214 mov.l LOCAL_LO(%a1),FP_SCR0_LO(%a6)
10217 bsr.l norm # normalize mantissa
10218 addi.l &0x6000,%d0 # add extra bias
10276 ori.l &ovfl_inx_mask,USER_FPSR(%a6) # set OVFL/AOVFL/AINEX
10306 mov.l LOCAL_LO(%a0),%d1 # are any of lo 11 bits of
10307 andi.l &0x7ff,%d1 # dbl mantissa set?
11388 bsr.l fmul
11391 bsr.l fadd
11394 bsr.l fin
11625 fmov.l L_SCR3(%a6),%fpcr # set FPCR
11626 fmov.l &0x0,%fpsr # clear FPSR
11630 fmov.l %fpsr,%d1 # save status
11631 fmov.l &0x0,%fpcr # clear FPCR
11633 or.l %d1,USER_FPSR(%a6) # save INEX2,N
11637 mov.l %d2,-(%sp) # save d2
11639 mov.l %d1,%d2 # make a copy
11640 andi.l &0x7fff,%d1 # strip sign
11642 sub.l %d0,%d1 # add scale factor
11645 mov.l (%sp)+,%d2 # restore d2
11665 fmov.l L_SCR3(%a6),%fpcr # set FPCR
11666 fmov.l &0x0,%fpsr # clear FPSR
11670 fmov.l %fpsr,%d1 # save status
11671 fmov.l &0x0,%fpcr # clear FPCR
11673 or.l %d1,USER_FPSR(%a6) # save INEX2,N
11677 or.l &ovfl_inx_mask,USER_FPSR(%a6) # set ovfl/aovfl/ainex
11687 mov.l L_SCR3(%a6),%d0 # pass rnd prec,mode
11688 bsr.l ovf_res # calculate default result
11700 mov.l L_SCR3(%a6),%d1
12279 mov.l %d2,-(%sp) # save d2
12281 mov.l %d1,%d2 # make a copy
12282 andi.l &0x7fff,%d1 # strip sign
12284 sub.l %d0,%d1 # add scale factor
12285 sub.l &0x6000,%d1 # subtract bias
12289 mov.l (%sp)+,%d2 # restore d2
12297 fmov.l &0x0,%fpsr # clear FPSR
12298 fmov.l L_SCR3(%a6),%fpcr # set FPCR
12302 fmov.l %fpsr,%d1 # save status
12303 fmov.l &0x0,%fpcr # clear FPCR
12305 or.l %d1,USER_FPSR(%a6) # save INEX2,N
12333 fmov.l %fpsr,%d0 # no exceptions possible
12334 rol.l &0x8,%d0 # put ccodes in lo byte
13059 mov.l %d2,-(%sp) # save d2
13061 mov.l %d1,%d2 # make a copy
13062 andi.l &0x7fff,%d1 # strip sign
13064 sub.l %d0,%d1 # add scale factor
13065 subi.l &0x6000,%d1 # subtract bias
13070 mov.l (%sp)+,%d2 # restore d2
13077 fmov.l &0x0,%fpsr # clear FPSR
13078 fmov.l L_SCR3(%a6),%fpcr # set FPCR
13082 fmov.l %fpsr,%d1 # save status
13083 fmov.l &0x0,%fpcr # clear FPCR
13085 or.l %d1,USER_FPSR(%a6) # save INEX2,N
13113 fmov.l %fpsr,%d0
13114 rol.l &0x8,%d0 # put ccodes in lo byte
13162 beq.l res_snan_1op
13164 beq.l res_qnan_1op
13344 fmov.l &0x0,%fpsr # clear FPSR
13348 fmov.l %fpsr,%d0 # save FPSR
13349 or.l %d0,USER_FPSR(%a6) # set exception bits
13364 beq.l res_snan_1op
13365 bra.l res_qnan_1op # weed out QNAN
13461 mov.l %d0,L_SCR3(%a6) # store rnd info
13477 mov.l SRC_HI(%a0),FP_SCR0_HI(%a6)
13478 mov.l SRC_LO(%a0),FP_SCR0_LO(%a6)
13495 mov.l SRC_HI(%a0),FP_SCR0_HI(%a6)
13496 mov.l SRC_LO(%a0),FP_SCR0_LO(%a6)
13514 bsr.l norm # normalize result
13537 mov.l SRC_HI(%a0),FP_SCR0_HI(%a6)
13538 mov.l SRC_LO(%a0),FP_SCR0_LO(%a6)
13539 bsr.l scale_to_zero_src # calculate scale factor
13541 cmpi.l %d0,&0x3fff-0x3f80 # will move in underflow?
13543 cmpi.l %d0,&0x3fff-0x407e # will move in overflow?
13551 fmov.l &0x0,%fpsr # clear FPSR
13552 fmov.l L_SCR3(%a6),%fpcr # set FPCR
13556 fmov.l %fpsr,%d1 # save FPSR
13557 fmov.l &0x0,%fpcr # clear FPCR
13559 or.l %d1,USER_FPSR(%a6) # save INEX2,N
13562 mov.l %d2,-(%sp) # save d2
13565 mov.l %d1,%d2 # make a copy
13566 andi.l &0x7fff,%d1 # strip sign
13567 sub.l %d0,%d1 # add scale factor
13571 mov.l (%sp)+,%d2 # restore d2
13580 mov.l SRC_HI(%a0),FP_SCR0_HI(%a6)
13581 mov.l SRC_LO(%a0),FP_SCR0_LO(%a6)
13582 bsr.l scale_to_zero_src # calculate scale factor
13584 cmpi.l %d0,&0x3fff-0x3c00 # will move in underflow?
13586 cmpi.l %d0,&0x3fff-0x43fe # will move in overflow?
13606 mov.l L_SCR3(%a6),%d1 # pass: rnd prec,mode
13607 bsr.l unf_res # calculate default result
13617 mov.l FP_SCR0_HI(%a6),FP_SCR1_HI(%a6)
13618 mov.l FP_SCR0_LO(%a6),FP_SCR1_LO(%a6)
13621 mov.l %d2,-(%sp) # save d2
13622 mov.l %d1,%d2 # make a copy
13623 andi.l &0x7fff,%d1 # strip sign
13625 sub.l %d0,%d1 # subtract scale factor
13626 addi.l &0x6000,%d1 # add new bias
13631 mov.l (%sp)+,%d2 # restore d2
13638 fmov.l &0x0,%fpsr # clear FPSR
13639 fmov.l L_SCR3(%a6),%fpcr # set FPCR
13643 fmov.l &0x0,%fpcr # clear FPCR
13644 fmov.l %fpsr,%d1 # save FPSR
13646 or.l %d1,USER_FPSR(%a6) # save INEX2,N
13649 or.l &ovfl_inx_mask,USER_FPSR(%a6) # set ovfl/aovfl/ainex
13662 mov.l L_SCR3(%a6),%d0 # pass: prec,mode
13663 bsr.l ovf_res # calculate default result
13718 beq.l res_snan_1op
13720 beq.l res_qnan_1op
13772 fmov.l %fpsr,%d0 # save FPSR
13773 rol.l &0x8,%d0 # extract ccode bits
13844 bsr.l res_qnan
13848 bsr.l res_snan
13960 mov.l %d0,L_SCR3(%a6) # store rnd info
13971 mov.l DST_HI(%a1),FP_SCR1_HI(%a6)
13972 mov.l DST_LO(%a1),FP_SCR1_LO(%a6)
13975 mov.l SRC_HI(%a0),FP_SCR0_HI(%a6)
13976 mov.l SRC_LO(%a0),FP_SCR0_LO(%a6)
13978 bsr.l scale_to_zero_src # scale exponent
13979 mov.l %d0,-(%sp) # save scale factor 1
13981 bsr.l scale_to_zero_dst # scale dst exponent
13983 add.l (%sp)+,%d0 # SCALE_FACTOR = scale1 + scale2
13985 cmpi.l %d0,&0x3fff-0x7ffe # would result ovfl?
13989 cmpi.l %d0,&0x3fff+0x0001 # would result unfl?
13996 fmov.l L_SCR3(%a6),%fpcr # set FPCR
13997 fmov.l &0x0,%fpsr # clear FPSR
14001 fmov.l %fpsr,%d1 # save status
14002 fmov.l &0x0,%fpcr # clear FPCR
14004 or.l %d1,USER_FPSR(%a6) # save INEX2,N
14008 mov.l %d2,-(%sp) # save d2
14010 mov.l %d1,%d2 # make a copy
14011 andi.l &0x7fff,%d1 # strip sign
14013 sub.l %d0,%d1 # add scale factor
14016 mov.l (%sp)+,%d2 # restore d2
14023 fmov.l L_SCR3(%a6),%fpcr # set FPCR
14024 fmov.l &0x0,%fpsr # clear FPSR
14028 fmov.l %fpsr,%d1 # save status
14029 fmov.l &0x0,%fpcr # clear FPCR
14031 or.l %d1,USER_FPSR(%a6) # save INEX2,N
14036 or.l &ovfl_inx_mask, USER_FPSR(%a6) # set ovfl/aovfl/ainex
14045 mov.l L_SCR3(%a6),%d0 # pass prec:rnd
14047 bsr.l ovf_res # calculate default result
14055 mov.l %d2,-(%sp) # save d2
14057 mov.l %d1,%d2 # make a copy
14058 andi.l &0x7fff,%d1 # strip sign
14059 sub.l %d0,%d1 # add scale factor
14060 subi.l &0x6000,%d1 # subtract bias
14065 mov.l (%sp)+,%d2 # restore d2
14072 fmov.l L_SCR3(%a6),%fpcr # set FPCR
14073 fmov.l &0x0,%fpsr # clear FPSR
14077 fmov.l %fpsr,%d1 # save status
14078 fmov.l &0x0,%fpcr # clear FPCR
14080 or.l %d1,USER_FPSR(%a6) # save INEX2,N
14301 mov.l %d0,L_SCR3(%a6) # store rnd info
14315 mov.l DST_HI(%a1),FP_SCR1_HI(%a6)
14316 mov.l DST_LO(%a1),FP_SCR1_LO(%a6)
14319 mov.l SRC_HI(%a0),FP_SCR0_HI(%a6)
14320 mov.l SRC_LO(%a0),FP_SCR0_LO(%a6)
14322 bsr.l scale_to_zero_src # calculate scale factor 1
14323 mov.l %d0,-(%sp) # save scale factor 1
14325 bsr.l scale_to_zero_dst # calculate scale factor 2
14327 neg.l (%sp) # S.F. = scale1 - scale2
14328 add.l %d0,(%sp)
14332 mov.l (%sp)+,%d0
14333 cmpi.l %d0,&0x3fff-0x7ffe
14336 cmpi.l %d0,&0x3fff-0x0000 # will result underflow?
14343 fmov.l L_SCR3(%a6),%fpcr # save FPCR
14344 fmov.l &0x0,%fpsr # clear FPSR
14348 fmov.l %fpsr,%d1 # save FPSR
14349 fmov.l &0x0,%fpcr # clear FPCR
14351 or.l %d1,USER_FPSR(%a6) # save INEX2,N
14355 mov.l %d2,-(%sp) # save d2
14357 mov.l %d1,%d2 # make a copy
14358 andi.l &0x7fff,%d1 # strip sign
14360 sub.l %d0,%d1 # add scale factor
14363 mov.l (%sp)+,%d2 # restore d2
14370 fmov.l L_SCR3(%a6),%fpcr # set FPCR
14371 fmov.l &0x0,%fpsr # set FPSR
14375 fmov.l %fpsr,%d1
14376 fmov.l &0x0,%fpcr
14378 or.l %d1,USER_FPSR(%a6) # save INEX,N
14382 add.l &0xc,%sp # clear result
14383 andi.l &0x7fff,%d1 # strip sign
14384 sub.l %d0,%d1 # add scale factor
14385 cmp.l %d1,&0x7fff # did divide overflow?
14398 mov.l L_SCR3(%a6),%d0 # pass prec:rnd
14400 bsr.l ovf_res # calculate default result
14408 mov.l %d2,-(%sp) # save d2
14410 mov.l %d1,%d2 # make a copy
14411 andi.l &0x7fff,%d1 # strip sign
14413 sub.l %d0,%d1 # add scale factor
14414 subi.l &0x6000,%d1 # subtract new bias
14418 mov.l (%sp)+,%d2 # restore d2
14427 fmov.l &rz_mode*0x10,%fpcr # set FPCR
14428 fmov.l &0x0,%fpsr # clear FPSR
14432 fmov.l %fpsr,%d1 # save status
14433 fmov.l &0x0,%fpcr # clear FPCR
14435 or.l %d1,USER_FPSR(%a6) # save INEX2,N
14445 mov.l L_SCR3(%a6),%d1 # pass: rnd prec,mode
14446 bsr.l unf_res4 # calculate default result
14457 fmov.l L_SCR3(%a6),%fpcr # set FPCR
14458 fmov.l &0x0,%fpsr # clear FPSR
14462 fmov.l &0x0,%fpcr # clear FPCR
14465 mov.l %d2,-(%sp) # save d2
14467 mov.l %d1,%d2 # make a copy
14468 andi.l &0x7fff,%d1 # strip sign
14470 sub.l %d0,%d1 # add scale factor
14471 addi.l &0x6000,%d1 # add bias
14475 mov.l (%sp)+,%d2 # restore d2
14485 fmov.l L_SCR3(%a6),%fpcr # set FPCR
14486 fmov.l &0x0,%fpsr # clear FPSR
14490 fmov.l %fpsr,%d1 # save status
14491 fmov.l &0x0,%fpcr # clear FPCR
14493 or.l %d1,USER_FPSR(%a6) # save INEX2,N
14509 clr.l %d1 # clear scratch register
14512 fmov.l %d1,%fpcr # set FPCR
14513 fmov.l &0x0,%fpsr # clear FPSR
14517 fmov.l &0x0,%fpcr # clear FPCR
14589 bra.l res_qnan
14591 bra.l res_snan
14593 bra.l res_operr
14595 bra.l fdiv_inf_load
14597 bra.l fdiv_zero_load
14599 bra.l fdiv_inf_dst
14648 mov.l %d0,L_SCR3(%a6) # store rnd info
14661 bsr.l addsub_scaler2 # scale exponents
14666 fmov.l &0x0,%fpsr # clear FPSR
14667 fmov.l L_SCR3(%a6),%fpcr # set FPCR
14671 fmov.l &0x0,%fpcr # clear FPCR
14672 fmov.l %fpsr,%d1 # fetch INEX2,N,Z
14674 or.l %d1,USER_FPSR(%a6) # save exc and ccode bits
14678 mov.l %d2,-(%sp) # save d2
14686 andi.l &0x7fff,%d2 # strip sign
14687 sub.l %d0,%d2 # add scale factor
14689 cmp.l %d2,(tbl_fadd_ovfl.b,%pc,%d1.w*4) # is it an overflow?
14692 cmp.l %d2,(tbl_fadd_unfl.b,%pc,%d1.w*4) # is it an underflow?
14704 mov.l (%sp)+,%d2 # restore d2
14722 or.l &ovfl_inx_mask,USER_FPSR(%a6) # set ovfl/aovfl/ainex
14728 add.l &0xc,%sp
14732 mov.l L_SCR3(%a6),%d0 # pass prec:rnd
14733 bsr.l ovf_res # calculate default result
14736 mov.l (%sp)+,%d2 # restore d2
14747 subi.l &0x6000,%d2 # add extra bias
14758 mov.l L_SCR3(%a6),%d1
14760 fmov.l %d1,%fpcr # set FPCR
14764 fmov.l &0x0,%fpcr # clear FPCR
14766 add.l &0xc,%sp
14773 add.l &0xc,%sp
14777 fmov.l &rz_mode*0x10,%fpcr # set FPCR
14778 fmov.l &0x0,%fpsr # clear FPSR
14782 fmov.l &0x0,%fpcr # clear FPCR
14783 fmov.l %fpsr,%d1 # save status
14785 or.l %d1,USER_FPSR(%a6) # save INEX,N
14795 mov.l L_SCR3(%a6),%d1 # pass: rnd prec,mode
14796 bsr.l unf_res # calculate default result
14799 mov.l (%sp)+,%d2 # restore d2
14805 mov.l L_SCR3(%a6),%d1
14809 fmov.l L_SCR3(%a6),%fpcr # set FPCR
14812 fmov.l &0x0,%fpsr # clear FPSR
14816 fmov.l &0x0,%fpcr # clear FPCR
14820 mov.l %d1,%d2 # make a copy
14821 andi.l &0x7fff,%d1 # strip sign
14823 sub.l %d0,%d1 # add scale factor
14824 addi.l &0x6000,%d1 # add new bias
14832 mov.l L_SCR3(%a6),%d1
14834 fmov.l %d1,%fpcr # set FPCR
14844 mov.l L_SCR3(%a6),%d1
14848 mov.l 0x4(%sp),%d1 # extract hi(man)
14849 cmpi.l %d1,&0x80000000 # is hi(man) = 0x80000000?
14852 tst.l 0x8(%sp) # is lo(man) = 0x0?
14870 mov.l L_SCR3(%a6),%d1
14873 fmov.l %d1,%fpcr # set FPCR
14874 fmov.l &0x0,%fpsr # clear FPSR
14878 fmov.l &0x0,%fpcr # clear FPCR
14953 bra.l res_qnan
14955 bra.l res_snan
14999 mov.l SRC_HI(%a0),FP_SCR0_HI(%a6)
15000 mov.l SRC_LO(%a0),FP_SCR0_LO(%a6)
15001 bsr.l scale_to_zero_src # scale the operand
15003 clr.l FP_SCR1_HI(%a6)
15004 clr.l FP_SCR1_LO(%a6)
15009 mov.l DST_HI(%a1),FP_SCR1_HI(%a6)
15010 mov.l DST_LO(%a1),FP_SCR1_LO(%a6)
15011 bsr.l scale_to_zero_dst # scale the operand
15013 clr.l FP_SCR0_HI(%a6)
15014 clr.l FP_SCR0_LO(%a6)
15025 bmi.l res_operr # weed out (-INF)+(+INF)
15101 mov.l %d0,L_SCR3(%a6) # store rnd info
15114 bsr.l addsub_scaler2 # scale exponents
15119 fmov.l &0x0,%fpsr # clear FPSR
15120 fmov.l L_SCR3(%a6),%fpcr # set FPCR
15124 fmov.l &0x0,%fpcr # clear FPCR
15125 fmov.l %fpsr,%d1 # fetch INEX2, N, Z
15127 or.l %d1,USER_FPSR(%a6) # save exc and ccode bits
15131 mov.l %d2,-(%sp) # save d2
15139 andi.l &0x7fff,%d2 # strip sign
15140 sub.l %d0,%d2 # add scale factor
15142 cmp.l %d2,(tbl_fsub_ovfl.b,%pc,%d1.w*4) # is it an overflow?
15145 cmp.l %d2,(tbl_fsub_unfl.b,%pc,%d1.w*4) # is it an underflow?
15157 mov.l (%sp)+,%d2 # restore d2
15175 or.l &ovfl_inx_mask,USER_FPSR(%a6) # set ovfl/aovfl/ainex
15181 add.l &0xc,%sp
15185 mov.l L_SCR3(%a6),%d0 # pass prec:rnd
15186 bsr.l ovf_res # calculate default result
15189 mov.l (%sp)+,%d2 # restore d2
15200 subi.l &0x6000,%d2 # subtract new bias
15211 mov.l L_SCR3(%a6),%d1
15213 fmov.l %d1,%fpcr # set FPCR
15217 fmov.l &0x0,%fpcr # clear FPCR
15219 add.l &0xc,%sp
15226 add.l &0xc,%sp
15230 fmov.l &rz_mode*0x10,%fpcr # set FPCR
15231 fmov.l &0x0,%fpsr # clear FPSR
15235 fmov.l &0x0,%fpcr # clear FPCR
15236 fmov.l %fpsr,%d1 # save status
15238 or.l %d1,USER_FPSR(%a6)
15248 mov.l L_SCR3(%a6),%d1 # pass: rnd prec,mode
15249 bsr.l unf_res # calculate default result
15252 mov.l (%sp)+,%d2 # restore d2
15258 mov.l L_SCR3(%a6),%d1
15262 fmov.l L_SCR3(%a6),%fpcr # set FPCR
15265 fmov.l &0x0,%fpsr # clear FPSR
15269 fmov.l &0x0,%fpcr # clear FPCR
15273 mov.l %d1,%d2 # make a copy
15274 andi.l &0x7fff,%d1 # strip sign
15276 sub.l %d0,%d1 # add scale factor
15277 addi.l &0x6000,%d1 # subtract new bias
15285 mov.l L_SCR3(%a6),%d1
15287 fmov.l %d1,%fpcr # set FPCR
15297 mov.l L_SCR3(%a6),%d1
15301 mov.l 0x4(%sp),%d1
15302 cmpi.l %d1,&0x80000000 # is hi(man) = 0x80000000?
15305 tst.l 0x8(%sp) # is lo(man) = 0x0?
15323 mov.l L_SCR3(%a6),%d1
15326 fmov.l %d1,%fpcr # set FPCR
15327 fmov.l &0x0,%fpsr # clear FPSR
15331 fmov.l &0x0,%fpcr # clear FPCR
15406 bra.l res_qnan
15408 bra.l res_snan
15451 mov.l SRC_HI(%a0),FP_SCR0_HI(%a6)
15452 mov.l SRC_LO(%a0),FP_SCR0_LO(%a6)
15453 bsr.l scale_to_zero_src # scale the operand
15455 clr.l FP_SCR1_HI(%a6)
15456 clr.l FP_SCR1_LO(%a6)
15461 mov.l DST_HI(%a1),FP_SCR1_HI(%a6)
15462 mov.l DST_LO(%a1),FP_SCR1_LO(%a6)
15463 bsr.l scale_to_zero_dst # scale the operand
15465 clr.l FP_SCR0_HI(%a6)
15466 clr.l FP_SCR0_LO(%a6)
15477 bpl.l res_operr # weed out (-INF)+(+INF)
15669 fmov.l &rz_mode*0x10,%fpcr # set FPCR
15670 fmov.l &0x0,%fpsr # clear FPSR
15674 fmov.l %fpsr,%d1 # save status
15675 fmov.l &0x0,%fpcr # clear FPCR
15677 or.l %d1,USER_FPSR(%a6) # save INEX2,N
15688 mov.l L_SCR3(%a6),%d1 # pass: rnd prec,mode
15689 bsr.l unf_res # calculate default result
15699 mov.l FP_SCR0_HI(%a6),FP_SCR1_HI(%a6)
15700 mov.l FP_SCR0_LO(%a6),FP_SCR1_LO(%a6)
15703 mov.l %d2,-(%sp) # save d2
15704 mov.l %d1,%d2 # make a copy
15705 andi.l &0x7fff,%d1 # strip sign
15707 sub.l %d0,%d1 # subtract scale factor
15708 addi.l &0x6000,%d1 # add new bias
15713 mov.l (%sp)+,%d2 # restore d2
15720 fmov.l &0x0,%fpsr # clear FPSR
15721 fmov.l L_SCR3(%a6),%fpcr # set FPCR
15725 fmov.l &0x0,%fpcr # clear FPCR
15726 fmov.l %fpsr,%d1 # save FPSR
15728 or.l %d1,USER_FPSR(%a6) # save INEX2,N
15731 or.l &ovfl_inx_mask,USER_FPSR(%a6) # set ovfl/aovfl/ainex
15744 mov.l L_SCR3(%a6),%d0 # pass: prec,mode
15745 bsr.l ovf_res # calculate default result
15807 beq.l res_snan_1op
15808 bra.l res_qnan_1op
15830 bmi.l res_operr # negative
15868 mov.l SRC_HI(%a0),FP_SCR0_HI(%a6)
15869 mov.l DST_HI(%a1),FP_SCR1_HI(%a6)
15870 mov.l SRC_LO(%a0),FP_SCR0_LO(%a6)
15871 mov.l DST_LO(%a1),FP_SCR1_LO(%a6)
15883 bge.l src_exp_ge2
15887 bsr.l scale_to_zero_dst
15888 mov.l %d0,-(%sp) # save scale factor
15894 bsr.l norm # normalize the denorm; result is new exp
15912 mov.l (%sp)+,%d0 # return SCALE factor
15919 mov.l (%sp)+,%d0 # return SCALE factor
15924 bsr.l scale_to_zero_src
15925 mov.l %d0,-(%sp) # save scale factor
15930 bsr.l norm # normalize the denorm; result is new exp
15948 mov.l (%sp)+,%d0 # return SCALE factor
15955 mov.l (%sp)+,%d0 # return SCALE factor
15999 mov.l &0x3fff,%d0
16000 sub.l %d1,%d0 # scale = BIAS + (-exp)
16006 bsr.l norm # normalize denorm
16007 neg.l %d0 # new exponent = -(shft val)
16008 mov.l %d0,%d1 # prepare for op_norm call
16043 andi.l &0x7fff,%d1 # extract operand's exponent
16060 mov.l &0x3ffe,%d0
16061 sub.l %d1,%d0 # scale = BIAS + (-exp)
16062 asr.l &0x1,%d0 # divide scale factor by 2
16067 bsr.l norm # normalize denorm
16081 add.l &0x3ffe,%d0
16082 asr.l &0x1,%d0 # divide scale factor by 2
16126 mov.l &0x3fff,%d0
16127 sub.l %d1,%d0 # scale = BIAS + (-exp)
16132 bsr.l norm # normalize denorm
16133 neg.l %d0 # new exponent = -(shft val)
16134 mov.l %d0,%d1 # prepare for op_norm call
16187 or.l &nan_mask+aiop_mask+snan_mask, USER_FPSR(%a6)
16193 or.l &nan_mask, USER_FPSR(%a6)
16197 or.l &nan_mask+aiop_mask+snan_mask, USER_FPSR(%a6)
16205 or.l &aiop_mask+snan_mask, USER_FPSR(%a6)
16207 or.l &nan_mask, USER_FPSR(%a6)
16211 or.l &neg_mask, USER_FPSR(%a6)
16240 or.l &nan_mask+operr_mask+aiop_mask, USER_FPSR(%a6)
16280 mov.l %d0,L_SCR1(%a6) # save displacement
16284 clr.l %d1 # clear scratch reg
16286 ror.l &0x8,%d1 # rotate to top byte
16287 fmov.l %d1,%fpsr # insert into FPSR
16377 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16396 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16412 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16419 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16437 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16453 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16472 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16488 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16495 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16513 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16529 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16548 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16562 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16579 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16616 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16629 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16645 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16652 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16668 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16675 ori.l &bsun_mask+aiop_mask, USER_FPSR(%a6) # set BSUN exc bit
16851 bsr.l fetch_dreg # fetch count value
18062 mov.l %d0,%a0 # save result for a moment
18065 mov.l %d1,%d0 # make a copy
18102 mov.l %a0,%d0 # pass result in d0
18103 mov.l EXC_EA(%a6),%a0 # fetch <ea>
18104 bsr.l _dmem_write_byte # write result byte
18106 tst.l %d1 # did dstore fail?
18111 movq.l &0x1,%d0 # pass amt to inc by
18112 bsr.l inc_areg # increment address register
18271 mov.l %a0,%a1 # move <ea> to a1
18273 sub.l %d0,%sp # subtract size of dump
18279 mov.l 0x0+EXC_FP0(%a6),(%a0)+ # yes
18280 mov.l 0x4+EXC_FP0(%a6),(%a0)+
18281 mov.l 0x8+EXC_FP0(%a6),(%a0)+
18287 mov.l 0x0+EXC_FP1(%a6),(%a0)+ # yes
18288 mov.l 0x4+EXC_FP1(%a6),(%a0)+
18289 mov.l 0x8+EXC_FP1(%a6),(%a0)+
18296 add.l &0xc,%a0
18303 add.l &0xc,%a0
18310 add.l &0xc,%a0
18317 add.l &0xc,%a0
18324 add.l &0xc,%a0
18331 add.l &0xc,%a0
18334 mov.l %a1,L_SCR1(%a6)
18337 mov.l %d0,-(%sp) # save size
18338 bsr.l _dmem_write # copy data to user mem
18340 mov.l (%sp)+,%d0
18341 add.l %d0,%sp # clear fpreg data from stack
18343 tst.l %d1 # did dstore err?
18352 mov.l %a0,L_SCR1(%a6)
18354 sub.l %d0,%sp # make room for fpregs
18357 mov.l %d1,-(%sp) # save bit string for later
18358 mov.l %d0,-(%sp) # save # of bytes
18360 bsr.l _dmem_read # copy data from user mem
18362 mov.l (%sp)+,%d0 # retrieve # of bytes
18364 tst.l %d1 # did dfetch fail?
18367 mov.l (%sp)+,%d1 # load bit string
18374 mov.l (%a0)+,0x0+EXC_FP0(%a6) # yes
18375 mov.l (%a0)+,0x4+EXC_FP0(%a6)
18376 mov.l (%a0)+,0x8+EXC_FP0(%a6)
18382 mov.l (%a0)+,0x0+EXC_FP1(%a6) # yes
18383 mov.l (%a0)+,0x4+EXC_FP1(%a6)
18384 mov.l (%a0)+,0x8+EXC_FP1(%a6)
18423 add.l %d0,%sp # remove fpregs from stack
18524 mov.l %d0,%a0 # move # bytes to a0
18532 andi.l &0x7,%d1 # extract reg field
18616 mov.l EXC_DREGS+0x8(%a6),%a0 # Get current a0
18620 mov.l EXC_DREGS+0xc(%a6),%a0 # Get current a1
18624 mov.l %a2,%a0 # Get current a2
18628 mov.l %a3,%a0 # Get current a3
18632 mov.l %a4,%a0 # Get current a4
18636 mov.l %a5,%a0 # Get current a5
18640 mov.l (%a6),%a0 # Get current a6
18644 mov.l EXC_A7(%a6),%a0 # Get current a7
18651 mov.l EXC_DREGS+0x8(%a6),%d0 # Get current a0
18652 mov.l %d0,%d1
18653 add.l %a0,%d1 # Increment
18654 mov.l %d1,EXC_DREGS+0x8(%a6) # Save incr value
18655 mov.l %d0,%a0
18659 mov.l EXC_DREGS+0xc(%a6),%d0 # Get current a1
18660 mov.l %d0,%d1
18661 add.l %a0,%d1 # Increment
18662 mov.l %d1,EXC_DREGS+0xc(%a6) # Save incr value
18663 mov.l %d0,%a0
18667 mov.l %a2,%d0 # Get current a2
18668 mov.l %d0,%d1
18669 add.l %a0,%d1 # Increment
18670 mov.l %d1,%a2 # Save incr value
18671 mov.l %d0,%a0
18675 mov.l %a3,%d0 # Get current a3
18676 mov.l %d0,%d1
18677 add.l %a0,%d1 # Increment
18678 mov.l %d1,%a3 # Save incr value
18679 mov.l %d0,%a0
18683 mov.l %a4,%d0 # Get current a4
18684 mov.l %d0,%d1
18685 add.l %a0,%d1 # Increment
18686 mov.l %d1,%a4 # Save incr value
18687 mov.l %d0,%a0
18691 mov.l %a5,%d0 # Get current a5
18692 mov.l %d0,%d1
18693 add.l %a0,%d1 # Increment
18694 mov.l %d1,%a5 # Save incr value
18695 mov.l %d0,%a0
18699 mov.l (%a6),%d0 # Get current a6
18700 mov.l %d0,%d1
18701 add.l %a0,%d1 # Increment
18702 mov.l %d1,(%a6) # Save incr value
18703 mov.l %d0,%a0
18709 mov.l EXC_A7(%a6),%d0 # Get current a7
18710 mov.l %d0,%d1
18711 add.l %a0,%d1 # Increment
18712 mov.l %d1,EXC_A7(%a6) # Save incr value
18713 mov.l %d0,%a0
18720 mov.l EXC_DREGS+0x8(%a6),%d0 # Get current a0
18721 sub.l %a0,%d0 # Decrement
18722 mov.l %d0,EXC_DREGS+0x8(%a6) # Save decr value
18723 mov.l %d0,%a0
18727 mov.l EXC_DREGS+0xc(%a6),%d0 # Get current a1
18728 sub.l %a0,%d0 # Decrement
18729 mov.l %d0,EXC_DREGS+0xc(%a6) # Save decr value
18730 mov.l %d0,%a0
18734 mov.l %a2,%d0 # Get current a2
18735 sub.l %a0,%d0 # Decrement
18736 mov.l %d0,%a2 # Save decr value
18737 mov.l %d0,%a0
18741 mov.l %a3,%d0 # Get current a3
18742 sub.l %a0,%d0 # Decrement
18743 mov.l %d0,%a3 # Save decr value
18744 mov.l %d0,%a0
18748 mov.l %a4,%d0 # Get current a4
18749 sub.l %a0,%d0 # Decrement
18750 mov.l %d0,%a4 # Save decr value
18751 mov.l %d0,%a0
18755 mov.l %a5,%d0 # Get current a5
18756 sub.l %a0,%d0 # Decrement
18757 mov.l %d0,%a5 # Save decr value
18758 mov.l %d0,%a0
18762 mov.l (%a6),%d0 # Get current a6
18763 sub.l %a0,%d0 # Decrement
18764 mov.l %d0,(%a6) # Save decr value
18765 mov.l %d0,%a0
18771 mov.l EXC_A7(%a6),%d0 # Get current a7
18772 sub.l %a0,%d0 # Decrement
18773 mov.l %d0,EXC_A7(%a6) # Save decr value
18774 mov.l %d0,%a0
18781 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
18782 addq.l &0x2,EXC_EXTWPTR(%a6) # incr instruction ptr
18783 bsr.l _imem_read_word
18785 tst.l %d1 # did ifetch fail?
18786 bne.l iea_iacc # yes
18790 add.l EXC_DREGS+0x8(%a6),%a0 # a0 + d16
18794 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
18795 addq.l &0x2,EXC_EXTWPTR(%a6) # incr instruction ptr
18796 bsr.l _imem_read_word
18798 tst.l %d1 # did ifetch fail?
18799 bne.l iea_iacc # yes
18803 add.l EXC_DREGS+0xc(%a6),%a0 # a1 + d16
18807 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
18808 addq.l &0x2,EXC_EXTWPTR(%a6) # incr instruction ptr
18809 bsr.l _imem_read_word
18811 tst.l %d1 # did ifetch fail?
18812 bne.l iea_iacc # yes
18816 add.l %a2,%a0 # a2 + d16
18820 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
18821 addq.l &0x2,EXC_EXTWPTR(%a6) # incr instruction ptr
18822 bsr.l _imem_read_word
18824 tst.l %d1 # did ifetch fail?
18825 bne.l iea_iacc # yes
18829 add.l %a3,%a0 # a3 + d16
18833 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
18834 addq.l &0x2,EXC_EXTWPTR(%a6) # incr instruction ptr
18835 bsr.l _imem_read_word
18837 tst.l %d1 # did ifetch fail?
18838 bne.l iea_iacc # yes
18842 add.l %a4,%a0 # a4 + d16
18846 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
18847 addq.l &0x2,EXC_EXTWPTR(%a6) # incr instruction ptr
18848 bsr.l _imem_read_word
18850 tst.l %d1 # did ifetch fail?
18851 bne.l iea_iacc # yes
18855 add.l %a5,%a0 # a5 + d16
18859 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
18860 addq.l &0x2,EXC_EXTWPTR(%a6) # incr instruction ptr
18861 bsr.l _imem_read_word
18863 tst.l %d1 # did ifetch fail?
18864 bne.l iea_iacc # yes
18868 add.l (%a6),%a0 # a6 + d16
18872 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
18873 addq.l &0x2,EXC_EXTWPTR(%a6) # incr instruction ptr
18874 bsr.l _imem_read_word
18876 tst.l %d1 # did ifetch fail?
18877 bne.l iea_iacc # yes
18881 add.l EXC_A7(%a6),%a0 # a7 + d16
18891 addq.l &0x8,%d1
18892 bsr.l fetch_dreg # fetch base areg
18893 mov.l %d0,-(%sp)
18895 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
18896 addq.l &0x2,EXC_EXTWPTR(%a6) # incr instruction ptr
18897 bsr.l _imem_read_word # fetch extword in d0
18899 tst.l %d1 # did ifetch fail?
18900 bne.l iea_iacc # yes
18902 mov.l (%sp)+,%a0
18907 mov.l %d0,L_SCR1(%a6) # hold opword
18909 mov.l %d0,%d1
18914 bsr.l fetch_dreg # fetch index
18916 mov.l %d2,-(%sp) # save d2
18917 mov.l L_SCR1(%a6),%d2 # fetch opword
18921 ext.l %d0 # sign extend word index
18923 mov.l %d2,%d1
18925 andi.l &0x3,%d1 # extract scale value
18927 lsl.l %d1,%d0 # shift index by scale
18929 extb.l %d2 # sign extend displacement
18930 add.l %d2,%d0 # index + disp
18931 add.l %d0,%a0 # An + (index + disp)
18933 mov.l (%sp)+,%d2 # restore old d2
18940 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
18941 addq.l &0x2,EXC_EXTWPTR(%a6) # incr instruction ptr
18942 bsr.l _imem_read_word # fetch short address
18944 tst.l %d1 # did ifetch fail?
18945 bne.l iea_iacc # yes
18954 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
18955 addq.l &0x4,EXC_EXTWPTR(%a6) # incr instruction ptr
18956 bsr.l _imem_read_long # fetch long address
18958 tst.l %d1 # did ifetch fail?
18959 bne.l iea_iacc # yes
18961 mov.l %d0,%a0 # return <ea> in a0
18968 mov.l EXC_EXTWPTR(%a6),%a0 # fetch instruction addr
18969 addq.l &0x2,EXC_EXTWPTR(%a6) # incr instruction ptr
18970 bsr.l _imem_read_word # fetch word displacement
18972 tst.l %d1 # did ifetch fail?
18973 bne.l iea_iacc # yes
18977 add.l EXC_EXTWPTR(%a6),%a0 # pc + d16
18980 subq.l &0x2,%a0 # adjust <ea>