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

📄 e_asinl.s

📁 glibc 2.9,最新版的C语言库函数
💻 S
📖 第 1 页 / 共 4 页
字号:
       // use 15-term polynomial approximation{.mmi       // r3 = pointer to polynomial coefficients       addl r3 = @ltoff(poly_coeffs), gp;;       // load start address for coefficients       ld8 r3 = [r3]       mov R_TMP = 0x3fbf;;}{.mmi       add r2 = 64, r3       ldfe F_C3 = [r3], 16       // p7 = 1 if |s|<2^{-64} (exponent of s<bias-64)       cmp.lt p7, p0 = R_EXP0, R_TMP;;}{.mmf       ldfe F_C5 = [r3], 16       ldfpd F_C11, F_C13 = [r2], 16	   // 2^{-128}       fma.s1 F_2M128 = F_2M64, F_2M64, f0;;}{.mmf       ldfpd F_C7, F_C9 = [r3]       ldfpd F_C15, F_C17 = [r2]       // if |s|<2^{-64}, return s+2^{-128}*s (p7) fma.s0 f8 = f8, F_2M128, f8;;}{.mfb       nop.m 0       // s^2       fma.s1 F_R2 = f8, f8, f0       // if |s|<2^{-64}, return s (p7) br.ret.spnt b0;;}{.mfi       nop.m 0       // s^3       fma.s1 F_R3 = f8, F_R2, f0       nop.i 0}{.mfi       nop.m 0       // s^4       fma.s1 F_R4 = F_R2, F_R2, f0       nop.i 0;;}{.mfi       nop.m 0       // c3+c5*s^2       fma.s1 F_P35 = F_C5, F_R2, F_C3       nop.i 0}{.mfi       nop.m 0       // c11+c13*s^2       fma.s1 F_P1113 = F_C13, F_R2, F_C11       nop.i 0;;}{.mfi       nop.m 0       // c7+c9*s^2       fma.s1 F_P79 = F_C9, F_R2, F_C7       nop.i 0}{.mfi       nop.m 0       // c15+c17*s^2       fma.s1 F_P1517 = F_C17, F_R2, F_C15       nop.i 0;;}{.mfi       nop.m 0       // s^8       fma.s1 F_R8 = F_R4, F_R4, f0       nop.i 0;;}{.mfi       nop.m 0       // c3+c5*s^2+c7*s^4+c9*s^6       fma.s1 F_P39 = F_P79, F_R4, F_P35       nop.i 0}{.mfi       nop.m 0       // c11+c13*s^2+c15*s^4+c17*s^6       fma.s1 F_P1117 = F_P1517, F_R4, F_P1113       nop.i 0;;}{.mfi       nop.m 0       // c3+..+c17*s^14       fma.s1 F_P317 = F_R8, F_P1117, F_P39       nop.i 0;;}{.mfb       nop.m 0       // result       fma.s0 f8 = F_P317, F_R3, f8       br.ret.sptk b0;;}{.mfb       nop.m 0       fma.s0 f8 = F_P317, F_R3, f0//F_P317, F_R3, F_S29       // nop.f 0//fma.s0 f8 = f13, f6, f0       br.ret.sptk b0;;}       VERY_LARGE_INPUT:{.mfi       nop.m 0       // s rounded to 24 significant bits       fma.s.s1 F_S = f8, f1, f0       nop.i 0}{.mfi       // load C5       ldfe F_C5 = [r3], 16       // x = ((1-(s^2)_s)*y^2-1)/2-(s^2-(s^2)_s)*y^2/2       fnma.s1 F_X = F_S_DS2, F_Y2_2, F_XL       nop.i 0;;}{.mmf       nop.m 0       // C7, C9       ldfpd F_C7, F_C9 = [r3], 16       nop.f 0;;}{.mfi       // pi/2 (low, high)       ldfpd F_PI2_LO, F_PI2_HI = [r3], 16       // c9*x+c8       fma.s1 F_S89 = F_X, F_CS9, F_CS8       nop.i 0}{.mfi       nop.m 0       // x^2       fma.s1 F_X2 = F_X, F_X, f0       nop.i 0;;}{.mfi       nop.m 0       // y*(1-s^2)*x       fma.s1 F_Y1S2X = F_Y1S2, F_X, f0       nop.i 0}{.mfi       // C11, C13       ldfpd F_C11, F_C13 = [r3], 16       // c7*x+c6       fma.s1 F_S67 = F_X, F_CS7, F_CS6       nop.i 0;;}{.mfi       // C15, C17       ldfpd F_C15, F_C17 = [r3], 16       // c3*x+c2       fma.s1 F_S23 = F_X, F_CS3, F_CS2       nop.i 0;;}{.mfi       nop.m 0       // c5*x+c4       fma.s1 F_S45 = F_X, F_CS5, F_CS4       nop.i 0;;}{.mfi       nop.m 0       // (s_s)^2       fma.s1 F_DS = F_S, F_S, f0       nop.i 0}{.mfi       nop.m 0       // 1-(s_s)^2       fnma.s1 F_1S2_S = F_S, F_S, f1       nop.i 0;;}{.mfi       nop.m 0       // y*(1-s^2)*x^2       fma.s1 F_Y1S2X2 = F_Y1S2, F_X2, f0       nop.i 0}{.mfi       nop.m 0       // x^4       fma.s1 F_X4 = F_X2, F_X2, f0       nop.i 0;;}{.mfi       nop.m 0       // c9*x^3+..+c6       fma.s1 F_S69 = F_X2, F_S89, F_S67       nop.i 0;;}{.mfi       nop.m 0       // c5*x^3+..+c2       fma.s1 F_S25 = F_X2, F_S45, F_S23       nop.i 0;;}{.mfi       nop.m 0       // ((s_s)^2-s^2)       fnma.s1 F_DS = f8, f8, F_DS       nop.i 0}{.mfi       nop.m 0       // (pi/2)_high-y*(1-(s_s)^2)       fnma.s1 F_HI = F_Y, F_1S2_S, F_PI2_HI       nop.i 0;;}{.mfi       nop.m 0       // c9*x^7+..+c2       fma.s1 F_S29 = F_X4, F_S69, F_S25       nop.i 0;;}{.mfi       nop.m 0       // -(y*(1-(s_s)^2))_high       fms.s1 F_1S2_HI = F_HI, f1, F_PI2_HI       nop.i 0;;}{.mfi       nop.m 0       // (PS29*x^2+x)*y*(1-s^2)       fma.s1 F_S19 = F_Y1S2X2, F_S29, F_Y1S2X       nop.i 0;;}{.mfi       nop.m 0       // y*(1-(s_s)^2)-(y*(1-s^2))_high       fma.s1 F_DS2 = F_Y, F_1S2_S, F_1S2_HI       nop.i 0;;}{.mfi       nop.m 0       // R ~ sqrt(1-s^2)       // (used for polynomial evaluation)       fnma.s1 F_R = F_S19, f1, F_Y1S2       nop.i 0;;}{.mfi       nop.m 0       // y*(1-s^2)-(y*(1-s^2))_high       fma.s1 F_DS2 = F_Y, F_DS, F_DS2       nop.i 0}{.mfi       nop.m 0       // (pi/2)_low+(PS29*x^2)*y*(1-s^2)       fma.s1 F_S29 = F_Y1S2X2, F_S29, F_PI2_LO       nop.i 0;;}{.mfi       nop.m 0       // R^2       fma.s1 F_R2 = F_R, F_R, f0       nop.i 0;;}{.mfi       nop.m 0       // (pi/2)_low+(PS29*x^2)*y*(1-s^2)-(y*(1-s^2)-(y*(1-s^2))_high)       fms.s1 F_S29 = F_S29, f1, F_DS2       nop.i 0;;}{.mfi       nop.m 0       // c7+c9*R^2       fma.s1 F_P79 = F_C9, F_R2, F_C7       nop.i 0}{.mfi       nop.m 0       // c3+c5*R^2       fma.s1 F_P35 = F_C5, F_R2, F_C3       nop.i 0;;}{.mfi       nop.m 0       // R^4       fma.s1 F_R4 = F_R2, F_R2, f0       nop.i 0}{.mfi       nop.m 0       // R^3       fma.s1 F_R3 = F_R2, F_R, f0       nop.i 0;;}{.mfi       nop.m 0       // c11+c13*R^2       fma.s1 F_P1113 = F_C13, F_R2, F_C11       nop.i 0}{.mfi       nop.m 0       // c15+c17*R^2       fma.s1 F_P1517 = F_C17, F_R2, F_C15       nop.i 0;;}{.mfi       nop.m 0       // (pi/2)_low+(PS29*x^2)*y*(1-s^2)-(y*(1-s^2)-(y*(1-s^2))_high)+y*(1-s^2)*x       fma.s1 F_S29 = F_Y1S2, F_X, F_S29       nop.i 0;;}{.mfi       nop.m 0       // c11+c13*R^2+c15*R^4+c17*R^6       fma.s1 F_P1117 = F_P1517, F_R4, F_P1113       nop.i 0}{.mfi       nop.m 0       // c3+c5*R^2+c7*R^4+c9*R^6       fma.s1 F_P39 = F_P79, F_R4, F_P35       nop.i 0;;}{.mfi       nop.m 0       // R^8       fma.s1 F_R8 = F_R4, F_R4, f0       nop.i 0;;}{.mfi       nop.m 0       // c3+c5*R^2+c7*R^4+c9*R^6+..+c17*R^14       fma.s1 F_P317 = F_P1117, F_R8, F_P39       nop.i 0;;}{.mfi       nop.m 0       // (pi/2)_low-(PS29*x^2)*y*(1-s^2)-(y*(1-s^2)-       // -(y*(1-s^2))_high)+y*(1-s^2)*x - P3, 17       fnma.s1 F_S29 = F_P317, F_R3, F_S29       nop.i 0;;}{.mfi       nop.m 0       // set sign  (p6) fnma.s1 F_S29 = F_S29, f1, f0       nop.i 0}{.mfi       nop.m 0  (p6) fnma.s1 F_HI = F_HI, f1, f0       nop.i 0;;}{.mfb       nop.m 0       // Result:       // (pi/2)_low-(PS29*x^2)*y*(1-s^2)-(y*(1-s^2)-       // -(y*(1-s^2))_high)+y*(1-s^2)*x - P3, 17       // +(pi/2)_high-(y*(1-s^2))_high       fma.s0 f8 = F_S29, f1, F_HI       br.ret.sptk b0;;}       ASINL_SPECIAL_CASES:{.mfi       alloc r32 = ar.pfs, 1, 4, 4, 0       // check if the input is a NaN, or unsupported format       // (i.e. not infinity or normal/denormal)       fclass.nm p7, p8 = f8, 0x3f       // pointer to pi/2       add r3 = 48, r3;;}{.mfi       // load pi/2       ldfpd F_PI2_HI, F_PI2_LO = [r3]       // get |s|       fmerge.s F_S = f0, f8       nop.i 0}{.mfb       nop.m 0       // if NaN, quietize it, and return (p7) fma.s0 f8 = f8, f1, f0 (p7) br.ret.spnt b0;;}{.mfi       nop.m 0       // |s| = 1 ?       fcmp.eq.s0 p9, p0 = F_S, f1       nop.i 0}{.mfi       nop.m 0       // load FR_X       fma.s1 FR_X = f8, f1, f0       // load error tag       mov GR_Parameter_TAG = 60;;}{.mfb       nop.m 0       // change sign if s = -1 (p6)  fnma.s1 F_PI2_HI = F_PI2_HI, f1, f0       nop.b 0}{.mfb       nop.m 0       // change sign if s = -1 (p6)  fnma.s1 F_PI2_LO = F_PI2_LO, f1, f0       nop.b 0;;}{.mfb       nop.m 0       // if s = 1, result is pi/2 (p9) fma.s0 f8 = F_PI2_HI, f1, F_PI2_LO       // return if |s| = 1 (p9) br.ret.sptk b0;;}{.mfi       nop.m 0       // get Infinity       frcpa.s1 FR_RESULT, p0 = f1, f0       nop.i 0;;}{.mfi       nop.m 0       // return QNaN indefinite (0*Infinity)       fma.s0 FR_RESULT = f0, FR_RESULT, f0       nop.i 0;;}GLOBAL_LIBM_END(asinl)LOCAL_LIBM_ENTRY(__libm_error_region).prologue// (1){ .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};;// (2){ .mmi        stfe [GR_Parameter_Y] = f1,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// (3){ .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};;// (4){ .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};;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 + -