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

📄 e_exp10.s

📁 glibc 2.9,最新版的C语言库函数
💻 S
📖 第 1 页 / 共 2 页
字号:
};;{.mfi       ldfe FR_COEFF2= [ GR_COEFF_START ], 16    // load C_2       fma.s1 FR_LOG2_10= f8, FR_L2_10_high, f0  // y0= x*log2(10)_hi       mov GR_MASK_low= 31};;{.mlx       getf.sig GR_KF0= FR_KF0                   // (K+f)*2^10= round_to_int(y) (p8)  movl GR_exact_limit= 0x41b00000           // Largest x for exact result,                                                 //  +22.0};;{.mfi       add GR_LOG_TBL= 256, GR_COEFF_START       // Pointer to high T_table       fcmp.gt.s1 p12, p7= f8, FR_OF_LIMIT       // x>overflow threshold ?       nop.i 0};;{.mfi (p8)  setf.s FR_exact_limit = GR_exact_limit    // Largest x for exact result (p8)  fcvt.xf FR_int_x = FR_int_x               // Integral part of x       shr GR_K= GR_KF0, 10                      // K}{.mfi       and GR_F_high= GR_MASK, GR_KF0            // f_high*32       fnma.s1 FR_R= FR_KF, FR_2P53, FR_LOG2_10  // r= x*log2(10)-2^{63-10}*                                                 //    [ (K+f)*2^{10-63} ]       and GR_F_low= GR_KF0, GR_MASK_low         // f_low};;{.mmi       shladd GR_Flow_ADDR= GR_F_low, 3, GR_COEFF_START // address of 2^{f_low}       add GR_BIAS= GR_K, GR_EXP_CORR            // K= bias-2*63       shr GR_Fh= GR_F_high, 5                   // f_high};;{.mfi       setf.exp FR_2_TO_K= GR_BIAS               // 2^{K-126} (p7)  fcmp.lt.s1 p12, p7= f8, FR_UF_LIMIT       // x<underflow threshold ?       shladd GR_Fh_ADDR= GR_Fh, 3, GR_LOG_TBL   // address of 2^{f_high}}{.mfi       ldf8 FR_T_low= [ GR_Flow_ADDR ]           // load T_low= 2^{f_low}       fms.s1 FR_DX_L210= f8, FR_L2_10_high, FR_LOG2_10 // x*log2(10)_hi-                                                 //        RN(x*log2(10)_hi)       nop.i 0};;{.mfi       ldf8 FR_T_high= [ GR_Fh_ADDR ]            // load T_high= 2^{f_high}       fma.s1 FR_P34= FR_COEFF4, FR_R, FR_COEFF3 // P34= C_3+C_4*r       nop.i 0}{.mfb       nop.m 0       fma.s1 FR_R2= FR_R, FR_R, f0              // r*r (p12) br.cond.spnt OUT_RANGE_exp10};;{.mfi       nop.m 0       // e= (x*log2(10)_hi-RN(x*log2(10)_hi))+log2(10)_lo*x       fma.s1 FR_E0= f8, FR_L2_10_low, FR_DX_L210       cmp.eq p7,p9= r0,r0                       // Assume inexact result}{.mfi       nop.m 0       fma.s1 FR_P12= FR_COEFF2, FR_R, FR_COEFF1 // P12= C_1+C_2*r       nop.i 0};;{.mfi       nop.m 0 (p8)  fcmp.eq.s1 p9,p7= FR_int_x, f8            // Test x positive integer       nop.i 0}{.mfi       nop.m 0       fma.s1 FR_T_low_K= FR_T_low, FR_2_TO_K, f0 // T= 2^{K-126}*T_low       nop.i 0};;{.mfi       nop.m 0       fcmp.ge.s1 p11,p0= f8, FR_SNORM_LIMIT      // Test x for normal range       nop.i 0};;{.mfi       nop.m 0       fma.s1 FR_E= FR_E0, FR_COEFF1, f0          // E= C_1*e       nop.i 0}{.mfi       nop.m 0       fma.s1 FR_P14= FR_R2, FR_P34, FR_P12       // P14= P12+r2*P34       nop.i 0};;// If x a positive integer, will it produce an exact result?//   p7 result will be inexact//   p9 result will be exact{.mfi       nop.m 0 (p9)  fcmp.le.s1 p9,p7= f8, FR_exact_limit       // Test x gives exact result       nop.i 0}{.mfi       nop.m 0       fma.s1 FR_T= FR_T_low_K, FR_T_high, f0     // T= T*T_high       nop.i 0};;{.mfi       nop.m 0       fma.s1 FR_P= FR_P14, FR_R, FR_E            // P= P14*r+E       nop.i 0};;.pred.rel "mutex",p7,p9{.mfi       nop.m 0 (p7)  fma.d.s0 f8= FR_P, FR_T, FR_T              // result= T+T*P, inexact set       nop.i 0}{.mfb       nop.m 0 (p9)  fma.d.s1 f8= FR_P, FR_T, FR_T              // result= T+T*P, exact use s1 (p11) br.ret.sptk b0                             // return, if result normal};;// Here if result in denormal range (and not zero){.mib       nop.m 0       mov GR_Parameter_TAG= 265       br.cond.sptk __libm_error_region           // Branch to error handling};;SPECIAL_exp10:{.mfi       nop.m 0       fclass.m p6, p0= f8, 0x22                  // x= -Infinity ?       nop.i 0};;{.mfi       nop.m 0       fclass.m p7, p0= f8, 0x21                  // x= +Infinity ?       nop.i 0};;{.mfi       nop.m 0       fclass.m p8, p0= f8, 0x7                   // x= +/-Zero ?       nop.i 0}{.mfb       nop.m 0 (p6)  mov f8= f0                                 // exp10(-Infinity)= 0 (p6)  br.ret.spnt b0};;{.mfb       nop.m 0       nop.f 0 (p7)  br.ret.spnt b0                             // exp10(+Infinity)= +Infinity};;{.mfb       nop.m 0 (p8)  mov f8= f1                                 // exp10(+/-0)= 1 (p8)  br.ret.spnt b0};;{.mfb       nop.m 0       fma.d.s0 f8= f8, f1, f0                    // Remaining cases: NaNs       br.ret.sptk b0};;OUT_RANGE_exp10:// underflow: p6= 1// overflow: p8= 1.pred.rel "mutex",p6,p8{.mmi (p8)  mov GR_EXPMAX= 0x1fffe (p6)  mov GR_EXPMAX= 1       nop.i 0};;{.mii       setf.exp FR_R= GR_EXPMAX (p8)  mov GR_Parameter_TAG= 166 (p6)  mov GR_Parameter_TAG= 265};;{.mfb       nop.m 0       fma.d.s0 f8= FR_R, FR_R, f0                // Create overflow/underflow       br.cond.sptk __libm_error_region           // Branch to error handling};;GLOBAL_IEEE754_END(exp10)weak_alias (exp10, pow10)LOCAL_LIBM_ENTRY(__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       stfd [ 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       stfd [ GR_Parameter_X ]= FR_X              // STORE Parameter 1 on stack       add GR_Parameter_RESULT= 0, GR_Parameter_Y // Parameter 3 address       nop.b 0}{.mib       stfd [ 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       add GR_Parameter_RESULT= 48, sp       nop.m 0       nop.i 0};;{.mmi       ldfd 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};;LOCAL_LIBM_END(__libm_error_region).type __libm_error_support#, @function.global __libm_error_support#

⌨️ 快捷键说明

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