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

📄 s_log1p.s

📁 glibc 2.9,最新版的C语言库函数
💻 S
📖 第 1 页 / 共 2 页
字号:
data4 0x236D14F1 // 43data4 0x225A923F // 44data4 0x22748723 // 45data4 0x22200D13 // 46data4 0x23C296EA // 47data4 0x2302AC38 // 48data4 0x234B1996 // 49data4 0x2385E298 // 50data4 0x23175BE5 // 51data4 0x2193F482 // 52data4 0x23BFEA90 // 53data4 0x23D70A0C // 54data4 0x231CF30A // 55data4 0x235D9E90 // 56data4 0x221AD0CB // 57data4 0x22FAA08B // 58data4 0x23D29A87 // 59data4 0x20C4B2FE // 60data4 0x2381B8B7 // 61data4 0x23F8D9FC // 62data4 0x23EAAE7B // 63data4 0x2329E8AA // 64data4 0x23EC0322 // 65data4 0x2357FDCB // 66data4 0x2392A9AD // 67data4 0x22113B02 // 68data4 0x22DEE901 // 69data4 0x236A6D14 // 70data4 0x2371D33E // 71data4 0x2146F005 // 72data4 0x23230B06 // 73data4 0x22F1C77D // 74data4 0x23A89FA3 // 75data4 0x231D1241 // 76data4 0x244DA96C // 77data4 0x23ECBB7D // 78data4 0x223E42B4 // 79data4 0x23801BC9 // 80data4 0x23573263 // 81data4 0x227C1158 // 82data4 0x237BD749 // 83data4 0x21DDBAE9 // 84data4 0x23401735 // 85data4 0x241D9DEE // 86data4 0x23BC88CB // 87data4 0x2396D5F1 // 88data4 0x23FC89CF // 89data4 0x2414F9A2 // 90data4 0x2474A0F5 // 91data4 0x24354B60 // 92data4 0x23C1EB40 // 93data4 0x2306DD92 // 94data4 0x24353B6B // 95data4 0x23CD1701 // 96data4 0x237C7A1C // 97data4 0x245793AA // 98data4 0x24563695 // 99data4 0x23C51467 // 100data4 0x24476B68 // 101data4 0x212585A9 // 102data4 0x247B8293 // 103data4 0x2446848A // 104data4 0x246A53F8 // 105data4 0x246E496D // 106data4 0x23ED1D36 // 107data4 0x2314C258 // 108data4 0x233244A7 // 109data4 0x245B7AF0 // 110data4 0x24247130 // 111data4 0x22D67B38 // 112data4 0x2449F620 // 113data4 0x23BBC8B8 // 114data4 0x237D3BA0 // 115data4 0x245E8F13 // 116data4 0x2435573F // 117data4 0x242DE666 // 118data4 0x2463BC10 // 119data4 0x2466587D // 120data4 0x2408144B // 121data4 0x2405F0E5 // 122data4 0x22381CFF // 123data4 0x24154F9B // 124data4 0x23A4E96E // 125data4 0x24052967 // 126data4 0x2406963F // 127data4 0x23F7D3CB // 128data4 0x2448AFF4 // 129data4 0x24657A21 // 130data4 0x22FBC230 // 131data4 0x243C8DEA // 132data4 0x225DC4B7 // 133data4 0x23496EBF // 134data4 0x237C2B2B // 135data4 0x23A4A5B1 // 136data4 0x2394E9D1 // 137data4 0x244BC950 // 138data4 0x23C7448F // 139data4 0x2404A1AD // 140data4 0x246511D5 // 141data4 0x24246526 // 142data4 0x23111F57 // 143data4 0x22868951 // 144data4 0x243EB77F // 145data4 0x239F3DFF // 146data4 0x23089666 // 147data4 0x23EBFA6A // 148data4 0x23C51312 // 149data4 0x23E1DD5E // 150data4 0x232C0944 // 151data4 0x246A741F // 152data4 0x2414DF8D // 153data4 0x247B5546 // 154data4 0x2415C980 // 155data4 0x24324ABD // 156data4 0x234EB5E5 // 157data4 0x2465E43E // 158data4 0x242840D1 // 159data4 0x24444057 // 160data4 0x245E56F0 // 161data4 0x21AE30F8 // 162data4 0x23FB3283 // 163data4 0x247A4D07 // 164data4 0x22AE314D // 165data4 0x246B7727 // 166data4 0x24EAD526 // 167data4 0x24B41DC9 // 168data4 0x24EE8062 // 169data4 0x24A0C7C4 // 170data4 0x24E8DA67 // 171data4 0x231120F7 // 172data4 0x24401FFB // 173data4 0x2412DD09 // 174data4 0x248C131A // 175data4 0x24C0A7CE // 176data4 0x243DD4C8 // 177data4 0x24457FEB // 178data4 0x24DEEFBB // 179data4 0x243C70AE // 180data4 0x23E7A6FA // 181data4 0x24C2D311 // 182data4 0x23026255 // 183data4 0x2437C9B9 // 184data4 0x246BA847 // 185data4 0x2420B448 // 186data4 0x24C4CF5A // 187data4 0x242C4981 // 188data4 0x24DE1525 // 189data4 0x24F5CC33 // 190data4 0x235A85DA // 191data4 0x24A0B64F // 192data4 0x244BA0A4 // 193data4 0x24AAF30A // 194data4 0x244C86F9 // 195data4 0x246D5B82 // 196data4 0x24529347 // 197data4 0x240DD008 // 198data4 0x24E98790 // 199data4 0x2489B0CE // 200data4 0x22BC29AC // 201data4 0x23F37C7A // 202data4 0x24987FE8 // 203data4 0x22AFE20B // 204data4 0x24C8D7C2 // 205data4 0x24B28B7D // 206data4 0x23B6B271 // 207data4 0x24C77CB6 // 208data4 0x24EF1DCA // 209data4 0x24A4F0AC // 210data4 0x24CF113E // 211data4 0x2496BBAB // 212data4 0x23C7CC8A // 213data4 0x23AE3961 // 214data4 0x2410A895 // 215data4 0x23CE3114 // 216data4 0x2308247D // 217data4 0x240045E9 // 218data4 0x24974F60 // 219data4 0x242CB39F // 220data4 0x24AB8D69 // 221data4 0x23436788 // 222data4 0x24305E9E // 223data4 0x243E71A9 // 224data4 0x23C2A6B3 // 225data4 0x23FFE6CF // 226data4 0x2322D801 // 227data4 0x24515F21 // 228data4 0x2412A0D6 // 229data4 0x24E60D44 // 230data4 0x240D9251 // 231data4 0x247076E2 // 232data4 0x229B101B // 233data4 0x247B12DE // 234data4 0x244B9127 // 235data4 0x2499EC42 // 236data4 0x21FC3963 // 237data4 0x23E53266 // 238data4 0x24CE102D // 239data4 0x23CC45D2 // 240data4 0x2333171D // 241data4 0x246B3533 // 242data4 0x24931129 // 243data4 0x24405FFA // 244data4 0x24CF464D // 245data4 0x237095CD // 246data4 0x24F86CBD // 247data4 0x24E2D84B // 248data4 0x21ACBB44 // 249data4 0x24F43A8C // 250data4 0x249DB931 // 251data4 0x24A385EF // 252data4 0x238B1279 // 253data4 0x2436213E // 254data4 0x24F18A3B // 255LOCAL_OBJECT_END(log_data)// Code//==============================================================.section .textGLOBAL_IEEE754_ENTRY(log1p){ .mfi      getf.exp      GR_signexp_x = f8 // if x is unorm then must recompute      fadd.s1       FR_Xp1 = f8, f1       // Form 1+x      mov           GR_05 = 0xfffe}{ .mlx      addl          GR_ad_1 = @ltoff(log_data),gp      movl          GR_A3 = 0x3fd5555555555557 // double precision memory                                               // representation of A3};;{ .mfi      ld8           GR_ad_1 = [GR_ad_1]      fclass.m      p8,p0 = f8,0xb // Is x unorm?      mov           GR_exp_mask = 0x1ffff}{ .mfi      nop.m         0      fnorm.s1      FR_NormX = f8              // Normalize x      mov           GR_exp_bias = 0xffff};;{ .mfi      setf.exp      FR_A2 = GR_05 // create A2 = 0.5      fclass.m      p9,p0 = f8,0x1E1 // is x NaN, NaT or +Inf?      nop.i         0}{ .mib      setf.d        FR_A3 = GR_A3 // create A3      add           GR_ad_2 = 16,GR_ad_1 // address of A5,A4(p8)  br.cond.spnt  log1p_unorm          // Branch if x=unorm};;log1p_common:{ .mfi      nop.m         0      frcpa.s1      FR_RcpX,p0 = f1,FR_Xp1      nop.i         0}{ .mfb      nop.m         0(p9)  fma.d.s0      f8 = f8,f1,f0 // set V-flag(p9)  br.ret.spnt   b0 // exit for NaN, NaT and +Inf};;{ .mfi      getf.exp      GR_Exp = FR_Xp1            // signexp of x+1      fclass.m      p10,p0 = FR_Xp1,0x3A // is 1+x < 0?      and           GR_exp_x = GR_exp_mask, GR_signexp_x // biased exponent of x}{ .mfi      ldfpd         FR_A7,FR_A6 = [GR_ad_1]      nop.f         0      nop.i         0};;{ .mfi      getf.sig      GR_Sig = FR_Xp1 // get significand to calculate index                                    // for Thi,Tlo if |x| >= 2^-8      fcmp.eq.s1    p12,p0 = f8,f0     // is x equal to 0?      sub           GR_exp_x = GR_exp_x, GR_exp_bias // true exponent of x};;{ .mfi      sub           GR_N = GR_Exp,GR_exp_bias // true exponent of x+1      fcmp.eq.s1    p11,p0 = FR_Xp1,f0     // is x = -1?      cmp.gt        p6,p7 = -8, GR_exp_x  // Is |x| < 2^-8}{ .mfb      ldfpd         FR_A5,FR_A4 = [GR_ad_2],16      nop.f         0(p10) br.cond.spnt  log1p_lt_minus_1   // jump if x < -1};;// p6 is true if |x| < 1/256// p7 is true if |x| >= 1/256.pred.rel "mutex",p6,p7{ .mfi(p7)  add           GR_ad_1 = 0x820,GR_ad_1 // address of log(2) parts(p6)  fms.s1        FR_r = f8,f1,f0 // range reduction for |x|<1/256(p6)  cmp.gt.unc    p10,p0 = -80, GR_exp_x  // Is |x| < 2^-80}{ .mfb(p7)  setf.sig      FR_N = GR_N // copy unbiased exponent of x to the                                // significand field of FR_N(p7)  fms.s1        FR_r = FR_RcpX,FR_Xp1,f1 // range reduction for |x|>=1/256(p12) br.ret.spnt   b0 // exit for x=0, return x};;{ .mib(p7)  ldfpd         FR_Ln2hi,FR_Ln2lo = [GR_ad_1],16(p7)  extr.u        GR_Ind = GR_Sig,55,8 // get bits from 55 to 62 as index(p11) br.cond.spnt  log1p_eq_minus_1 // jump if x = -1};;{ .mmf(p7)  shladd        GR_ad_2 = GR_Ind,3,GR_ad_2 // address of Thi(p7)  shladd        GR_ad_1 = GR_Ind,2,GR_ad_1 // address of Tlo(p10) fnma.d.s0     f8 = f8,f8,f8   // If |x| very small, result=x-x*x};;{ .mmb(p7)  ldfd          FR_Thi = [GR_ad_2](p7)  ldfs          FR_Tlo = [GR_ad_1](p10) br.ret.spnt   b0                   // Exit if |x| < 2^(-80)};;{ .mfi      nop.m         0      fma.s1        FR_r2 = FR_r,FR_r,f0 // r^2      nop.i         0}{ .mfi      nop.m         0      fms.s1        FR_A2 = FR_A3,FR_r,FR_A2 // A3*r+A2      nop.i         0};;{ .mfi      nop.m         0      fma.s1        FR_A6 = FR_A7,FR_r,FR_A6 // A7*r+A6      nop.i         0}{ .mfi      nop.m         0      fma.s1        FR_A4 = FR_A5,FR_r,FR_A4 // A5*r+A4      nop.i         0};;{ .mfi      nop.m         0(p7)  fcvt.xf       FR_N = FR_N      nop.i         0};;{ .mfi      nop.m         0      fma.s1        FR_r4 = FR_r2,FR_r2,f0 // r^4      nop.i         0}{ .mfi      nop.m         0      // (A3*r+A2)*r^2+r      fma.s1        FR_A2 = FR_A2,FR_r2,FR_r      nop.i         0};;{ .mfi      nop.m         0      // (A7*r+A6)*r^2+(A5*r+A4)      fma.s1        FR_A4 = FR_A6,FR_r2,FR_A4      nop.i         0};;{ .mfi      nop.m         0      // N*Ln2hi+Thi(p7)  fma.s1        FR_NxLn2hipThi = FR_N,FR_Ln2hi,FR_Thi      nop.i         0}{ .mfi      nop.m         0      // N*Ln2lo+Tlo(p7)  fma.s1        FR_NxLn2lopTlo = FR_N,FR_Ln2lo,FR_Tlo      nop.i         0};;{ .mfi      nop.m         0(p7)  fma.s1        f8 = FR_A4,FR_r4,FR_A2 // P(r) if |x| >= 1/256      nop.i         0}{ .mfi      nop.m         0      // (N*Ln2hi+Thi) + (N*Ln2lo+Tlo)(p7)  fma.s1        FR_NxLn2pT = FR_NxLn2hipThi,f1,FR_NxLn2lopTlo      nop.i         0};;.pred.rel "mutex",p6,p7{ .mfi      nop.m         0(p6)  fma.d.s0      f8 = FR_A4,FR_r4,FR_A2 // result if 2^(-80) <= |x| < 1/256      nop.i         0}{ .mfb      nop.m         0(p7)  fma.d.s0      f8 = f8,f1,FR_NxLn2pT  // result if |x| >= 1/256      br.ret.sptk   b0                     // Exit if |x| >= 2^(-80)};;.align 32log1p_unorm:// Here if x=unorm{ .mfb      getf.exp      GR_signexp_x = FR_NormX // recompute biased exponent      nop.f         0      br.cond.sptk  log1p_common};;.align 32log1p_eq_minus_1:// Here if x=-1{ .mfi      nop.m         0      fmerge.s      FR_X = f8,f8 // keep input argument for subsequent                                 // call of __libm_error_support#      nop.i         0};;{ .mfi      mov           GR_TAG = 140  // set libm error in case of log1p(-1).      frcpa.s0      f8,p0 = f8,f0 // log1p(-1) should be equal to -INF.                                      // We can get it using frcpa because it                                      // sets result to the IEEE-754 mandated                                      // quotient of f8/f0.      nop.i         0}{ .mib      nop.m         0      nop.i         0      br.cond.sptk  log_libm_err};;.align 32log1p_lt_minus_1:// Here if x < -1{ .mfi      nop.m         0      fmerge.s      FR_X = f8,f8      nop.i         0};;{ .mfi      mov           GR_TAG = 141  // set libm error in case of x < -1.      frcpa.s0      f8,p0 = f0,f0 // log1p(x) x < -1 should be equal to NaN.                                  // We can get it using frcpa because it                                  // sets result to the IEEE-754 mandated                                  // quotient of f0/f0 i.e. NaN.      nop.i         0};;.align 32log_libm_err:{ .mmi      alloc         r32 = ar.pfs,1,4,4,0      mov           GR_Parameter_TAG = GR_TAG      nop.i         0};;GLOBAL_IEEE754_END(log1p)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 + -