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

📄 e_log2f.s

📁 glibc 2.9,最新版的C语言库函数
💻 S
📖 第 1 页 / 共 2 页
字号:
  shl r24=r24,60}{.mfi  mov r26=0x804  nop.f 0  // r23=bias-1  mov r23=0xfffe;;}{.mmf  getf.exp r29=f8  // load start address for C_1...C_6 followed by T_table  ld8 r2=[r2]  // will continue only for positive normal/denormal numbers            fclass.nm.unc p12,p7 = f8, 0x19 ;;}.pred.rel "mutex",p8,p10{.mfi  // denormal input, repeat get significand (after normalization)  (p8) getf.sig r25=f7  // x=1 ?  fcmp.eq.s0 p6,p0=f8,f1  // get T_index  (p10) shr.u r28=r25,63-8}{.mfi  // f12=0.5  setf.exp f12=r23  nop.f 0  // r27=bias  mov r27=0xffff;;}{.mfb  // denormal input, repeat get exponent (after normalization)  (p8) getf.exp r29=f7  nop.f 0  (p12) br.cond.spnt SPECIAL_log2f}{.mfi  cmp.geu p12,p0=r25,r24  nop.f 0  mov r23=0xff;;}{.mfi  add r3=32,r2  // r=1-x*y  fms.s1 f6=f6,f8,f1  // r26=0x80400...0 (threshold for using polynomial approximation)  shl r26=r26,64-12}{.mfi  // load C_3, C_4  ldfpd f10,f11=[r2],16  nop.f 0  // r27=bias-1 (if index >=128, will add exponent+1)   (p12) mov r27=0xfffe;;}{.mfi  // load C_1  ldfe f14=[r2],32  // x=1, return 0  (p6) fma.s.s0 f8=f0,f0,f0  (p8) shr.u r28=r25,63-8}{.mib  // load C_2  ldfe f13=[r3]  // r29=exponent-bias  sub r29=r29,r27  // x=1, return  (p6) br.ret.spnt b0;;}{.mfi  // get T_index  and r28=r28,r23  fmerge.se f7=f1,f7  // if first 9 bits after leading 1 are all zero, then p8=1  cmp.ltu p8,p12=r25,r26;;}{.mfi  // f8=expon - bias   setf.sig f8=r29  nop.f 0  // get T address  shladd r2=r28,3,r2}{.mfi  // first 8 bits after leading 1 are all ones ?  cmp.eq p10,p0=r23,r28  // if first 8 bits after leading bit are 0, use polynomial approx. only  (p8) fms.s1 f6=f7,f1,f1  nop.i 0;;}{.mfi  //r26=1  mov r26=1  // if first 8 bits after leading 1 are all ones, use polynomial approx. only  (p10) fms.s1 f6=f7,f12,f1  nop.i 0;;}.pred.rel "mutex",p8,p12{.mmf  // load T (unless first 9 bits after leading 1 are 0)  (p12) ldfd f12=[r2]  nop.m 0  // set T=0 (if first 9 bits after leading 1 are 0)  (p8) fma.s1 f12=f0,f0,f0;;}{.mfi  nop.m 0  // P34=C_3+C_4*r  fma.s1 f10=f11,f6,f10  // r26=2^{63}  shl r26=r26,63}{.mfi  nop.m 0  // r2=r*r  fma.s1 f11=f6,f6,f0  nop.i 0;;}{.mfi  // significand of x is 1 ?  cmp.eq p0,p6=r25,r26  // P12=C_1+C_2*r  fma.s1 f14=f13,f6,f14  nop.i 0;;}{.mfi  nop.m 0  // normalize additive term (l=exponent of x)  fcvt.xf f8=f8  // if significand(x)=1, return exponent (l)  nop.i 0;;}{.mfi  nop.m 0  // add T+l  (p6) fma.s1 f8=f8,f1,f12  nop.i 0}{.mfi  nop.m 0  // P14=P12+r2*P34  (p6) fma.s1 f13=f10,f11,f14  nop.i 0;;}{.mfb  nop.m 0  // result=T+l+r*P14  (p6) fma.s.s0 f8=f13,f6,f8  // return  br.ret.sptk b0;;}SPECIAL_log2f:{.mfi   nop.m 0  // x=+Infinity ?  fclass.m p7,p0=f8,0x21  nop.i 0;;}{.mfi  nop.m 0  // x=+/-Zero ?  fclass.m p8,p0=f8,0x7  nop.i 0;;}{.mfi  nop.m 0  // x=-Infinity, -normal, -denormal ?  fclass.m p6,p0=f8,0x3a  nop.i 0;;}{.mfb  nop.m 0  // log2f(+Infinity)=+Infinity  nop.f 0  (p7) br.ret.spnt b0;;}{.mfi  (p8) mov GR_Parameter_TAG = 172                            // log2f(+/-0)=-infinity, raises Divide by Zero  // set f8=-0  (p8) fmerge.ns f8=f0,f8  nop.i 0;;}{.mfb  nop.m 0  (p8) frcpa.s0 f8,p0=f1,f8  (p8) br.cond.sptk __libm_error_region;;}{.mfb  (p6) mov GR_Parameter_TAG = 173   // x<0: return NaN, raise Invalid  (p6) frcpa.s0 f8,p0=f0,f0  (p6) br.cond.sptk __libm_error_region;;}                            {.mfb  nop.m 0  // Remaining cases: NaNs  fma.s.s0 f8=f8,f1,f0  br.ret.sptk b0;;}GLOBAL_LIBM_END(log2f)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        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  // Parameter 3 address 	nop.b 0                                      }{ .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};; 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 + -