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

📄 s_expm1l.s

📁 Glibc 2.3.2源代码(解压后有100多M)
💻 S
📖 第 1 页 / 共 3 页
字号:
{ .mmi(p13) ldfe f52 = [r35],16 ;; (p12) ldfe f54 = [r35],16 	nop.i 999 ;;}{ .mfi(p13) ldfe f53 = [r35],16 (p13) fmpy.s1 f58 = f48, f50 	nop.i 999 ;;}////    Flag_not1: poly_lo = P_5 + r*P_6//    Flag_1: poly_lo = Q_6 + r*Q_7//{ .mmi(p13) ldfe f54 = [r35],16 ;; (p12) ldfe f55 = [r35],16 	nop.i 999 ;;}{ .mmi(p12) ldfe f56 = [r35],16 ;; (p13) ldfe f55 = [r35],16 	nop.i 999 ;;}{ .mmi(p12) ldfe f57 = [r35],0 ;; (p13) ldfe f56 = [r35],16 	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 EXPL_MAIN ;; }EXPL_VERY_SMALL: { .mmi	nop.m 999	nop.m 999(p13) addl r34 = @ltoff(Constants_exp_64_Exponents#),gp }{ .mfi	nop.m 999(p12) mov f35 = f9 	nop.i 999 ;;}{ .mfb(p13) ld8 r34 = [r34] (p12) mov f34 = f1 (p12) br.cond.sptk EXPL_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 EXPL_MAIN ;; }EXPL_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 EXPL_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 ;;}EXPL_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.s0 f99 = f34, f36, f101 (p15) br.cond.sptk EXPL_64_RETURN ;;}{ .mfi	nop.m 999(p0)  fsetc.s3 0x7F,0x01	nop.i 999}{ .mlx	nop.m 999(p0)  movl r50 = 0x00000000013FFF ;;}//    //    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.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.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 = 39	nop.i 999(p10) br.cond.sptk __libm_error_region ;;}{ .mib(p8)  mov   GR_Parameter_TAG = 12	nop.i 999(p8)  br.cond.sptk __libm_error_region ;;}//    //    Report that exp overflowed//    { .mib(p12) mov   GR_Parameter_TAG = 40	nop.i 999(p12) br.cond.sptk __libm_error_region ;;}{ .mib(p11) mov   GR_Parameter_TAG = 13	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 EXPL_64_RETURN ;;}EXPL_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.s0 f99 = f0, f1 	nop.i 999 ;;}{ .mfi	nop.m 999(p14) mov f99 = f8 	nop.i 999 ;;}{ .mfb	nop.m 999(p6)  fadd.s0 f99 = f8, f1 //    //    expl(+/-0) = 1 //    expm1l(+/-0) = +/-0 //    No exceptions raised//    (p6)  br.cond.sptk EXPL_64_RETURN ;; }{ .mib	nop.m 999	nop.i 999(p14) br.cond.sptk EXPL_64_RETURN ;; }{ .mfi	nop.m 999(p11) mov f99 = f0 	nop.i 999 ;;}{ .mfb	nop.m 999(p10) fsub.s1 f99 = f0, f1 //    //    expl(-Inf) = 0 //    expm1l(-Inf) = -1 //    No exceptions raised.//    (p10) br.cond.sptk EXPL_64_RETURN ;; }{ .mfb	nop.m 999(p12) fmpy.s1 f99 = f8, f1 //    //    expl(+Inf) = Inf //    No exceptions raised.//    (p0)  br.cond.sptk EXPL_64_RETURN ;; }EXPL_64_UNSUPPORTED: { .mfb	nop.m 999(p0)  fmpy.s0 f99 = f8, f0 (p0)  br.cond.sptk EXPL_64_RETURN ;; }EXPL_64_RETURN: { .mfb      nop.m 999(p0)  mov   f8     = f99(p0)  br.ret.sptk   b0}.endpASM_SIZE_DIRECTIVE(expl) .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        stfe [GR_Parameter_Y] = FR_Y,16         // Save 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        stfe [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        stfe [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        ldfe  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 + -