⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s_expm1f.s

📁 Glibc 2.3.2源代码(解压后有100多M)
💻 S
📖 第 1 页 / 共 3 页
字号:
	nop.i 999 ;;}{ .mfi(p13) ldfe f57 = [r35],0 	nop.f 999	nop.i 999 ;;}{ .mfi	nop.m 999////    For  Flag_not_1, load p5,p6,p1,p2//    Else load p5,p6,p1,p2//(p12) fma.s1 f60 = f52, f42, f53 	nop.i 999 ;;}{ .mfi	nop.m 999(p13) fma.s1 f60 = f51, f42, f52 	nop.i 999 ;;}{ .mfi	nop.m 999(p12) fma.s1 f60 = f60, f42, f54 	nop.i 999 ;;}{ .mfi	nop.m 999(p12) fma.s1 f59 = f56, f42, f57 	nop.i 999 ;;}{ .mfi	nop.m 999(p13) fma.s1 f60 = f42, f60, f53 	nop.i 999 ;;}{ .mfi	nop.m 999(p12) fma.s1 f59 = f59, f48, f42 	nop.i 999 ;;}{ .mfi	nop.m 999////    Flag_1: poly_lo = Q_5 + r*(Q_6 + r*Q_7) //    Flag_not1: poly_lo = P_4 + r*(P_5 + r*P_6)//    Flag_not1: poly_hi = (P_1 + r*P_2)//(p13) fmpy.s1 f60 = f60, f58 	nop.i 999 ;;}{ .mfi	nop.m 999(p12) fma.s1 f60 = f60, f42, f55 	nop.i 999 ;;}{ .mfi	nop.m 999////    Flag_1: poly_lo = r6 *(Q_5 + ....)//    Flag_not1: poly_hi =  r + rsq *(P_1 + r*P_2)//(p12) fma.s1 f35 = f60, f50, f59 	nop.i 999}{ .mfi	nop.m 999(p13) fma.s1 f59 = f54, f42, f55 	nop.i 999 ;;}{ .mfi	nop.m 999////    Flag_not1: Y_lo = rsq* poly_hi + poly_lo //    Flag_1: poly_lo = rsq* poly_hi + poly_lo //(p13) fma.s1 f59 = f59, f42, f56 	nop.i 999 ;;}{ .mfi	nop.m 999////    Flag_not_1: (P_1 + r*P_2) //(p13) fma.s1 f59 = f59, f42, f57 	nop.i 999 ;;}{ .mfi	nop.m 999////    Flag_not_1: poly_hi = r + rsq * (P_1 + r*P_2) //(p13) fma.s1 f35 = f59, f48, f60 	nop.i 999 ;;}{ .mfi	nop.m 999////    Create 0.000...01//(p0)  for f37 = f35, f37 	nop.i 999 ;;}{ .mfb	nop.m 999////    Set lsb of Y_lo to 1//(p0)  fmerge.se f35 = f35,f37 (p0)  br.cond.sptk EXPF_MAIN ;; }EXPF_VERY_SMALL: { .mmi      nop.m 999(p13) addl r34 = @ltoff(Constants_exp_64_Exponents#),gp      nop.i 999;;}{ .mfi(p13) ld8  r34 = [r34];(p12) mov f35 = f9      nop.i 999 ;;}{ .mfb	nop.m 999(p12) mov f34 = f1 (p12) br.cond.sptk EXPF_MAIN ;; }{ .mlx(p13) add  r34 = 8,r34 (p13) movl r39 = 0x0FFFE ;; }////    Load big_exp_neg //    Create 1/2's exponent//{ .mii(p13) setf.exp f56 = r39 (p13) shladd r34 = r32,4,r34 ;;  	nop.i 999}////    Negative exponents are stored after positive//{ .mfi(p13) ld8 r45 = [r34],0////    Y_hi = x//    Scale = 1//(p13) fmpy.s1 f35 = f9, f9 	nop.i 999 ;;}{ .mfi	nop.m 999////    Reset Safe if necessary //    Create 1/2//(p13) mov f34 = f9 	nop.i 999 ;;}{ .mfi(p13) cmp.lt.unc  p0, p15 =  r37, r45 (p13) mov f36 = f1 	nop.i 999 ;;}{ .mfb	nop.m 999////    Y_lo = x * x//(p13) fmpy.s1 f35 = f35, f56 ////    Y_lo = x*x/2 //(p13) br.cond.sptk EXPF_MAIN ;; }EXPF_HUGE: { .mfi	nop.m 999(p0)  fcmp.gt.unc.s1 p14, p0 =  f9, f0 	nop.i 999}{ .mlx	nop.m 999(p0)  movl r39 = 0x15DC0 ;; }{ .mfi(p14) setf.exp f34 = r39 (p14) mov f35 = f1 (p14) cmp.eq  p0, p15 =  r0, r0 ;; }{ .mfb	nop.m 999(p14) mov f36 = f34 ////    If x > 0, Set Safe = False//    If x > 0, Y_hi = 2**(24,000)//    If x > 0, Y_lo = 1.0//    If x > 0, Scale = 2**(24,000)//(p14) br.cond.sptk EXPF_MAIN ;; }{ .mlx	nop.m 999(p12) movl r39 = 0xA240 }{ .mlx	nop.m 999(p12) movl r38 = 0xA1DC ;; }{ .mmb(p13) cmp.eq  p15, p14 =  r0, r0 (p12) setf.exp f34 = r39 	nop.b 999 ;;}{ .mlx(p12) setf.exp f35 = r38 (p13) movl r39 = 0xFF9C }{ .mfi	nop.m 999(p13) fsub.s1 f34 = f0, f1	nop.i 999 ;;}{ .mfi	nop.m 999(p12) mov f36 = f34 (p12) cmp.eq  p0, p15 =  r0, r0 ;; }{ .mfi(p13) setf.exp f35 = r39 (p13) mov f36 = f1 	nop.i 999 ;;}EXPF_MAIN: { .mfi(p0)  cmp.ne.unc p12, p0 = 0x01, r33(p0)  fmpy.s1 f101 = f36, f35 	nop.i 999 ;;}{ .mfb	nop.m 999(p0)  fma.s.s0 f99 = f34, f36, f101 (p15) br.cond.sptk EXPF_64_RETURN ;;}{ .mfi	nop.m 999(p0)  fsetc.s3 0x7F,0x01	nop.i 999}{ .mlx	nop.m 999(p0)  movl r50 = 0x0000000001007F ;;}//    //    S0 user supplied status//    S2 user supplied status + WRE + TD  (Overflows) //    S3 user supplied status + RZ + TD   (Underflows) //    //    //    If (Safe) is true, then//        Compute result using user supplied status field.//        No overflow or underflow here, but perhaps inexact.//        Return//    Else//       Determine if overflow or underflow  was raised.//       Fetch +/- overflow threshold for IEEE single, double,//       double extended   //    { .mfi(p0)  setf.exp f60 = r50(p0)  fma.s.s3 f102 = f34, f36, f101 	nop.i 999}{ .mfi	nop.m 999(p0)  fsetc.s3 0x7F,0x40 	nop.i 999 ;;}{ .mfi	nop.m 999////    For Safe, no need to check for over/under. //    For expm1, handle errors like exp. //(p0)  fsetc.s2 0x7F,0x42	nop.i 999;;}{ .mfi	nop.m 999(p0)  fma.s.s2 f100 = f34, f36, f101 	nop.i 999 ;;}{ .mfi	nop.m 999(p0)  fsetc.s2 0x7F,0x40 	nop.i 999 ;;}{ .mfi	nop.m 999(p7)  fclass.m.unc   p12, p0 =  f102, 0x00F	nop.i 999}{ .mfi	nop.m 999(p0)  fclass.m.unc   p11, p0 =  f102, 0x00F	nop.i 999 ;;}{ .mfi	nop.m 999(p7)  fcmp.ge.unc.s1 p10, p0 =  f100, f60	nop.i 999}{ .mfi	nop.m 999//    //    Create largest double exponent + 1.//    Create smallest double exponent - 1.//    (p0)  fcmp.ge.unc.s1 p8, p0 =  f100, f60	nop.i 999 ;;}//    //    fcmp:   resultS2 >= + overflow threshold  -> set (a) if true//    fcmp:   resultS2 <= - overflow threshold  -> set (b) if true//    fclass: resultS3 is denorm/unorm/0        -> set (d) if true//    { .mib(p10) mov   GR_Parameter_TAG = 43	nop.i 999(p10) br.cond.sptk __libm_error_region ;;}{ .mib(p8)  mov   GR_Parameter_TAG = 16	nop.i 999(p8)  br.cond.sptk __libm_error_region ;;}//    //    Report that exp overflowed//    { .mib(p12) mov   GR_Parameter_TAG = 44	nop.i 999(p12) br.cond.sptk __libm_error_region ;;}{ .mib(p11) mov   GR_Parameter_TAG = 17	nop.i 999(p11) br.cond.sptk __libm_error_region ;;}{ .mib	nop.m 999	nop.i 999//    //    Report that exp underflowed//    (p0)  br.cond.sptk EXPF_64_RETURN ;;}EXPF_64_SPECIAL: { .mfi	nop.m 999(p0)  fclass.m.unc p6,  p0 =  f8, 0x0c3 	nop.i 999}{ .mfi	nop.m 999(p0)  fclass.m.unc p13, p8 =  f8, 0x007 	nop.i 999 ;;}{ .mfi	nop.m 999(p7)  fclass.m.unc p14, p0 =  f8, 0x007 	nop.i 999}{ .mfi	nop.m 999(p0)  fclass.m.unc p12, p9 =  f8, 0x021 	nop.i 999 ;;}{ .mfi	nop.m 999(p0)  fclass.m.unc p11, p0 =  f8, 0x022 	nop.i 999}{ .mfi	nop.m 999(p7)  fclass.m.unc p10, p0 =  f8, 0x022 	nop.i 999 ;;}{ .mfi	nop.m 999//    //    Identify +/- 0, Inf, or -Inf //    Generate the right kind of NaN.//    (p13) fadd.s.s0 f99 = f0, f1 	nop.i 999 ;;}{ .mfi	nop.m 999(p14) mov f99 = f8 	nop.i 999 ;;}{ .mfb	nop.m 999(p6)  fadd.s.s0 f99 = f8, f1 //    //    expf(+/-0) = 1 //    expm1f(+/-0) = +/-0 //    No exceptions raised//    (p6)  br.cond.sptk EXPF_64_RETURN ;;}{ .mib	nop.m 999	nop.i 999(p14)  br.cond.sptk EXPF_64_RETURN ;;}{ .mfi	nop.m 999(p11) mov f99 = f0 	nop.i 999 ;;}{ .mfb	nop.m 999(p10) fsub.s.s1 f99 = f0, f1 //    //    expf(-Inf) = 0 //    expm1f(-Inf) = -1 //    No exceptions raised.//    (p10)  br.cond.sptk EXPF_64_RETURN ;;}{ .mfb	nop.m 999(p12) fmpy.s.s1 f99 = f8, f1 //    //    expf(+Inf) = Inf //    No exceptions raised.//    (p0)  br.cond.sptk EXPF_64_RETURN ;; }EXPF_64_UNSUPPORTED: { .mfb      nop.m 999(p0)  fmpy.s.s0 f99 = f8, f0       nop.b 0;;}EXPF_64_RETURN:{ .mfb      nop.m 999(p0)  mov   f8     = f99(p0)  br.ret.sptk   b0}.endp expm1fASM_SIZE_DIRECTIVE(expm1f).proc __libm_error_region__libm_error_region:.prologue{ .mfi        add   GR_Parameter_Y=-32,sp             // Parameter 2 value		nop.f 0                   .save   ar.pfs,GR_SAVE_PFS        mov  GR_SAVE_PFS=ar.pfs                 // Save ar.pfs}{ .mfi.fframe 64        add sp=-64,sp                           // Create new stack        nop.f 0        mov GR_SAVE_GP=gp                       // Save gp};;{ .mmi        stfs [GR_Parameter_Y] = FR_Y,16         // Store Parameter 2 on stack        add GR_Parameter_X = 16,sp              // Parameter 1 address.save   b0, GR_SAVE_B0        mov GR_SAVE_B0=b0                       // Save b0};;.body{ .mib        stfs [GR_Parameter_X] = FR_X            // Store Parameter 1 on stack        add   GR_Parameter_RESULT = 0,GR_Parameter_Y        nop.b 0                                 // Parameter 3 address}{ .mib        stfs [GR_Parameter_Y] = FR_RESULT       // Store Parameter 3 on stack        add   GR_Parameter_Y = -16,GR_Parameter_Y        br.call.sptk b0=__libm_error_support#   // Call error handling function};;{ .mmi        nop.m 0        nop.m 0        add   GR_Parameter_RESULT = 48,sp};;{ .mmi        ldfs  f8 = [GR_Parameter_RESULT]       // Get return result off stack.restore sp        add   sp = 64,sp                       // Restore stack pointer        mov   b0 = GR_SAVE_B0                  // Restore return address};;{ .mib        mov   gp = GR_SAVE_GP                  // Restore gp         mov   ar.pfs = GR_SAVE_PFS             // Restore ar.pfs        br.ret.sptk     b0                     // Return};; .endp __libm_error_regionASM_SIZE_DIRECTIVE(__libm_error_region).type   __libm_error_support#,@function.global __libm_error_support#

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -