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

📄 e_atanhl.s

📁 glibc 库, 不仅可以学习使用库函数,还可以学习函数的具体实现,是提高功力的好资料
💻 S
📖 第 1 页 / 共 3 页
字号:
data4  0x3F7F24B8,0x3B5BA620data8  0xBDBA31039E382C15data4  0x3F7F1CC8,0x3B639D12data8  0x3D635A0B5C5AF197data4  0x3F7F14D8,0x3B6B9444data8  0xBDDCCB1971D34EFCdata4  0x3F7F0CE0,0x3B7393BCdata8  0x3DC7450252CD7ADAdata4  0x3F7F04F0,0x3B7B8B6Ddata8  0xBDB68F177D7F2A42LOCAL_OBJECT_END(Constants_G_H_h3)// Floating Point RegistersFR_C17              = f50FR_C15              = f51FR_C13              = f52FR_C11              = f53FR_C9               = f54FR_C7               = f55FR_C5               = f56FR_C3               = f57FR_x2               = f58FR_x3               = f59FR_x4               = f60FR_x8               = f61FR_Rcp              = f61FR_A                = f33FR_R1               = f33FR_E1               = f34FR_E3               = f34FR_Y2               = f34FR_Y3               = f34FR_E2               = f35FR_Y1               = f35FR_B                = f36FR_Y0               = f37FR_E0               = f38FR_E4               = f39FR_Q0               = f40FR_R0               = f41FR_B_lo             = f42FR_abs_x            = f43FR_Bp               = f44FR_Bn               = f45FR_Yp               = f46FR_Yn               = f47FR_X                = f48FR_BB               = f48FR_X_lo             = f49FR_G                = f50FR_Y_hi             = f51FR_H                = f51FR_h                = f52FR_G2               = f53FR_H2               = f54FR_h2               = f55FR_G3               = f56FR_H3               = f57FR_h3               = f58FR_Q4               = f59FR_poly_lo          = f59FR_Y_lo             = f59FR_Q3               = f60FR_Q2               = f61FR_Q1               = f62FR_poly_hi          = f62FR_float_N          = f63FR_AA               = f64FR_S_lo             = f64FR_S_hi             = f65FR_r                = f65FR_log2_hi          = f66FR_log2_lo          = f67FR_Z                = f68FR_2_to_minus_N     = f69FR_rcub             = f70FR_rsq              = f71FR_05r              = f72FR_Half             = f73FR_Arg_X            = f50FR_Arg_Y            = f0FR_RESULT           = f8// General Purpose RegistersGR_ad_05            = r33GR_Index1           = r34GR_ArgExp           = r34GR_Index2           = r35GR_ExpMask          = r35GR_NearZeroBound    = r36GR_signif           = r36GR_X_0              = r37GR_X_1              = r37GR_X_2              = r38GR_Index3           = r38GR_minus_N          = r39GR_Z_1              = r40GR_Z_2              = r40GR_N                = r41GR_Bias             = r42GR_M                = r43GR_ad_taylor        = r44GR_ad_taylor_2      = r45GR_ad2_tbl_3        = r45GR_ad_tbl_1         = r46GR_ad_tbl_2         = r47GR_ad_tbl_3         = r48GR_ad_q             = r49GR_ad_z_1           = r50GR_ad_z_2           = r51GR_ad_z_3           = r52//// Added for unwind support//GR_SAVE_PFS         = r46GR_SAVE_B0          = r47GR_SAVE_GP          = r48GR_Parameter_X      = r49GR_Parameter_Y      = r50GR_Parameter_RESULT = r51GR_Parameter_TAG    = r52.section .textGLOBAL_LIBM_ENTRY(atanhl){ .mfi      alloc         r32 = ar.pfs,0,17,4,0      fnma.s1       FR_Bp = f8,f1,f1 // b = 1 - |arg| (for x>0)      mov           GR_ExpMask = 0x1ffff}                    { .mfi                      addl          GR_ad_taylor = @ltoff(Constants_TaylorSeries),gp      fma.s1        FR_Bn = f8,f1,f1 // b = 1 - |arg| (for x<0)      mov           GR_NearZeroBound = 0xfffa  // biased exp of 1/32};;                    { .mfi                      getf.exp      GR_ArgExp = f8      fcmp.lt.s1    p6,p7 = f8,f0 // is negative?      nop.i         0}                    { .mfi                      ld8           GR_ad_taylor = [GR_ad_taylor]      fmerge.s      FR_abs_x =  f1,f8      nop.i         0};;                    { .mfi                      nop.m         0      fclass.m      p8,p0 = f8,0x1C7 // is arg NaT,Q/SNaN or +/-0 ?      nop.i         0}{ .mfi                      nop.m         0      fma.s1        FR_x2 = f8,f8,f0      nop.i         0};;                    { .mfi                      add           GR_ad_z_1 = 0x0F0,GR_ad_taylor      fclass.m      p9,p0 = f8,0x0a // is arg -denormal ?      add           GR_ad_taylor_2 = 0x010,GR_ad_taylor}                    { .mfi                      add           GR_ad_05 = 0x080,GR_ad_taylor      nop.f         0      nop.i         0};;                    { .mfi                      ldfe          FR_C17 = [GR_ad_taylor],32      fclass.m      p10,p0 = f8,0x09 // is arg +denormal ?      add           GR_ad_tbl_1 = 0x040,GR_ad_z_1 // point to Constants_G_H_h1}                    { .mfb                      add           GR_ad_z_2 = 0x140,GR_ad_z_1 // point to Constants_Z_2 (p8) fma.s0        f8 =  f8,f1,f0 // NaN or +/-0 (p8) br.ret.spnt   b0             // exit for Nan or +/-0};;                    { .mfi                      ldfe          FR_C15 = [GR_ad_taylor_2],32      fclass.m      p15,p0 = f8,0x23 // is +/-INF ?      add           GR_ad_tbl_2 = 0x180,GR_ad_z_1 // point to Constants_G_H_h2}                    { .mfb                      ldfe          FR_C13 = [GR_ad_taylor],32 (p9) fnma.s0       f8 =  f8,f8,f8 // -denormal (p9) br.ret.spnt   b0             // exit for -denormal};;                    { .mfi                      ldfe          FR_C11 = [GR_ad_taylor_2],32      fcmp.eq.s0       p13,p0 = FR_abs_x,f1 // is |arg| = 1?      nop.i         0}                    { .mfb                      ldfe          FR_C9 = [GR_ad_taylor],32(p10) fma.s0        f8 =  f8,f8,f8 // +denormal(p10) br.ret.spnt   b0             // exit for +denormal};;                    { .mfi                      ldfe          FR_C7 = [GR_ad_taylor_2],32 (p6) frcpa.s1      FR_Yn,p11 = f1,FR_Bn // y = frcpa(b)      and           GR_ArgExp = GR_ArgExp,GR_ExpMask // biased exponent}                    { .mfb                      ldfe          FR_C5 = [GR_ad_taylor],32      fnma.s1       FR_B = FR_abs_x,f1,f1 // b = 1 - |arg|(p15) br.cond.spnt  atanhl_gt_one // |arg| > 1};;{ .mfb      cmp.gt        p14,p0 = GR_NearZeroBound,GR_ArgExp (p7) frcpa.s1      FR_Yp,p12 = f1,FR_Bp // y = frcpa(b)(p13) br.cond.spnt  atanhl_eq_one // |arg| = 1/32}{ .mfb      ldfe          FR_C3 = [GR_ad_taylor_2],32      fma.s1        FR_A = FR_abs_x,f1,FR_abs_x // a = 2 * |arg|(p14) br.cond.spnt  atanhl_near_zero // |arg| < 1/32};;{ .mfi      nop.m         0      fcmp.gt.s0       p8,p0 = FR_abs_x,f1 // is |arg| > 1 ?      nop.i         0};;.pred.rel "mutex",p6,p7{ .mfi      nop.m         0 (p6) fnma.s1       FR_B_lo = FR_Bn,f1,f1 // argt = 1 - (1 - |arg|)      nop.i         0}{ .mfi      ldfs          FR_Half = [GR_ad_05] (p7) fnma.s1       FR_B_lo = FR_Bp,f1,f1      nop.i         0};;                    { .mfi      nop.m         0 (p6) fnma.s1       FR_E0 = FR_Yn,FR_Bn,f1 // e = 1-b*y       nop.i         0}                    { .mfb                      nop.m         0 (p6) fma.s1        FR_Y0 = FR_Yn,f1,f0 (p8) br.cond.spnt  atanhl_gt_one // |arg| > 1};;{ .mfi      nop.m         0 (p7) fnma.s1       FR_E0 = FR_Yp,FR_Bp,f1       nop.i         0}{ .mfi      nop.m         0 (p6) fma.s1        FR_Q0 = FR_A,FR_Yn,f0 // q = a*y      nop.i         0};;{ .mfi      nop.m         0 (p7) fma.s1        FR_Q0 = FR_A,FR_Yp,f0      nop.i         0}{ .mfi      nop.m         0 (p7) fma.s1        FR_Y0 = FR_Yp,f1,f0      nop.i         0};;{ .mfi      nop.m         0      fclass.nm     p10,p0 = f8,0x1FF  // test for unsupported      nop.i         0};;{ .mfi      nop.m         0      fma.s1        FR_E2 = FR_E0,FR_E0,FR_E0 // e2 = e+e^2      nop.i         0}{ .mfi      nop.m         0      fma.s1        FR_E1 = FR_E0,FR_E0,f0 // e1 = e^2      nop.i         0};;{ .mfb      nop.m         0//    Return generated NaN or other value for unsupported values.(p10) fma.s0        f8 = f8, f0, f0(p10) br.ret.spnt   b0};;{ .mfi      nop.m         0      fma.s1        FR_Y1 = FR_Y0,FR_E2,FR_Y0 // y1 = y+y*e2      nop.i         0}{ .mfi      nop.m         0      fma.s1        FR_E3 = FR_E1,FR_E1,FR_E0 // e3 = e+e1^2      nop.i         0};;{ .mfi      nop.m         0      fnma.s1       FR_B_lo = FR_abs_x,f1,FR_B_lo // b_lo = argt-|arg|      nop.i         0};;{ .mfi      nop.m         0      fma.s1        FR_Y2 = FR_Y1,FR_E3,FR_Y0 // y2 = y+y1*e3      nop.i         0}{ .mfi      nop.m         0      fnma.s1       FR_R0 = FR_B,FR_Q0,FR_A // r = a-b*q      nop.i         0};;{ .mfi      nop.m         0      fnma.s1       FR_E4 = FR_B,FR_Y2,f1 // e4 = 1-b*y2      nop.i         0}{ .mfi      nop.m         0      fma.s1        FR_X = FR_R0,FR_Y2,FR_Q0 // x = q+r*y2      nop.i         0};;{ .mfi      nop.m         0      fma.s1        FR_Z = FR_X,f1,f1 // x+1      nop.i         0};;{ .mfi      nop.m         0 (p6) fnma.s1       FR_Half = FR_Half,f1,f0 // sign(arg)/2      nop.i         0};;{ .mfi      nop.m         0      fma.s1        FR_Y3 = FR_Y2,FR_E4,FR_Y2 // y3 = y2+y2*e4      nop.i         0}{ .mfi      nop.m         0      fnma.s1       FR_R1 = FR_B,FR_X,FR_A // r1 = a-b*x      nop.i         0};;{ .mfi      getf.sig      GR_signif = FR_Z // get significand of x+1      nop.f         0      nop.i         0};;{ .mfi      add           GR_ad_q = -0x060,GR_ad_z_1      nop.f         0      extr.u        GR_Index1 = GR_signif,59,4 // get high 4 bits of signif}{ .mfi      add           GR_ad_tbl_3 = 0x280,GR_ad_z_1 // point to Constants_G_H_h3      nop.f         0      nop.i         0};;{ .mfi      shladd        GR_ad_z_1 = GR_Index1,2,GR_ad_z_1 // point to Z_1      nop.f         0      extr.u        GR_X_0 = GR_signif,49,15 // get high 15 bits of significand};;{ .mfi      ld4           GR_Z_1 = [GR_ad_z_1] // load Z_1

⌨️ 快捷键说明

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