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

📄 e_acos.s

📁 glibc 2.9,最新版的C语言库函数
💻 S
📖 第 1 页 / 共 2 页
字号:
      fma.s1             fB3 = fB3, fR, fB2      nop.i              0};;{ .mfi      nop.m              0      fnma.s1            fD = fH, fS, fHalf // d0 = 1/2 - H0*S0      nop.i              0};;{ .mfi      nop.m              0      fma.s1             fR8 = fRQuadr, fRQuadr, f0 // R^4      nop.i              0}{ .mfi      nop.m              0      fma.s1             fB9 = fB9, fR, fB8      nop.i              0};;{.mfi      nop.m              0      fma.s1             fB12 = fB12, fRSqr, fB11      nop.i              0}{.mfi      nop.m              0      fma.s1             fB7 = fB7, fRSqr, fB5      nop.i              0};;{.mfi      nop.m              0      fma.s1             fB3 = fB3, fRSqr, fB1      nop.i              0};;{ .mfi      nop.m              0      fma.s1             fH = fH, fD, fH // H1 = H0 + H0*d0      nop.i              0}{ .mfi      nop.m              0      fma.s1             fS = fS, fD, fS // S1 = S0 + S0*d0      nop.i              0};;{.mfi      nop.m              0(p9)  fma.s1             fCpi = f1, f0, f0 // Cpi = 0 if x > 0      nop.i              0}{ .mfi      nop.m              0(p8)  fma.s1             fCpi = fPiBy2, f1, fPiBy2 // Cpi = Pi if x < 0      nop.i              0};;{ .mfi      nop.m              0      fma.s1             fB12 = fB12, fRSqr, fB9      nop.i              0}{ .mfi      nop.m              0      fma.s1             fB7 = fB7, fRQuadr, fB3      nop.i              0};;{.mfi      nop.m              0      fnma.s1            fD = fH, fS, fHalf // d1 = 1/2 - H1*S1      nop.i              0}{ .mfi      nop.m              0      fnma.s1            fSignedS = fSignX, fS, f0 // -signum(x)*S1      nop.i              0};;{ .mfi      nop.m              0      fma.s1             fCloseTo1Pol = fB12, fR8, fB7      nop.i              0};;{ .mfi      nop.m              0      fma.s1             fH = fH, fD, fH // H2 = H1 + H1*d1      nop.i              0}{ .mfi      nop.m              0      fma.s1             fS = fS, fD, fS // S2 = S1 + S1*d1      nop.i              0};;{ .mfi      nop.m              0      // -signum(x)* S2 = -signum(x)*(S1 + S1*d1)      fma.s1             fSignedS = fSignedS, fD, fSignedS      nop.i              0};;{.mfi      nop.m              0      fnma.s1            fD = fH, fS, fHalf // d2 = 1/2 - H2*S2      nop.i              0};;{ .mfi      nop.m              0      // Cpi + signum(x)*PolB*S2      fnma.s1            fCpi = fSignedS, fCloseTo1Pol, fCpi      nop.i              0}{ .mfi      nop.m              0      // signum(x)*PolB * S2      fnma.s1            fCloseTo1Pol = fSignedS, fCloseTo1Pol, f0      nop.i              0};;{ .mfb      nop.m              0      // final result for 0.625 <= |x| < 1      fma.d.s0           f8 = fCloseTo1Pol, fD, fCpi      // exit here for  0.625 <= |x| < 1      br.ret.sptk        b0};;// here if |x| < 0.625.align 32acos_base_range:{ .mfi      ldfe               fCpi = [rPiBy2Ptr] // Pi/2      fma.s1             fA33 = fA33, fXSqr, fA31      nop.i              0}{ .mfi      nop.m              0      fma.s1             fA15 = fA15, fXSqr, fA13      nop.i              0};;{ .mfi      nop.m              0      fma.s1             fA29 = fA29, fXSqr, fA27      nop.i              0}{ .mfi      nop.m              0      fma.s1             fA25 = fA25, fXSqr, fA23      nop.i              0};;{ .mfi      nop.m              0      fma.s1             fA21 = fA21, fXSqr, fA19      nop.i              0}{ .mfi      nop.m              0      fma.s1             fA9 = fA9, fXSqr, fA7      nop.i              0};;{ .mfi      nop.m              0      fma.s1             fA5 = fA5, fXSqr, fA3      nop.i              0};;{ .mfi      nop.m              0      fma.s1             fA35 = fA35, fXQuadr, fA33      nop.i              0}{ .mfi      nop.m              0      fma.s1             fA17 = fA17, fXQuadr, fA15      nop.i              0};;{ .mfi      nop.m              0      fma.s1             fX8 = fXQuadr, fXQuadr, f0 // x^8      nop.i              0}{ .mfi      nop.m              0      fma.s1             fA25 = fA25, fXQuadr, fA21      nop.i              0};;{ .mfi      nop.m              0      fma.s1             fA9 = fA9, fXQuadr, fA5      nop.i              0};;{ .mfi      nop.m              0      fms.s1             fCpi = fCpi, f1, f8 // Pi/2 - x      nop.i              0};;{ .mfi      nop.m              0      fma.s1             fA35 = fA35, fXQuadr, fA29      nop.i              0}{ .mfi      nop.m              0      fma.s1             fA17 = fA17, fXSqr, fA11      nop.i              0};;{ .mfi      nop.m              0      fma.s1             fX16 = fX8, fX8, f0 // x^16      nop.i              0};;{ .mfi      nop.m              0      fma.s1             fA35 = fA35, fX8, fA25      nop.i              0}{ .mfi      nop.m              0      fma.s1             fA17 = fA17, fX8, fA9      nop.i              0};;{ .mfi      nop.m              0      fma.s1             fBaseP = fA35, fX16, fA17      nop.i              0};;{ .mfb      nop.m              0      // final result for |x| < 0.625      fnma.d.s0           f8 = fBaseP, fXCube, fCpi      // exit here for |x| < 0.625 path      br.ret.sptk        b0};;// here if |x| = 1// acos(1) = 0// acos(-1) = Pi.align 32acos_abs_1:{ .mfi      ldfe               fPiBy2 = [rPiBy2Ptr] // Pi/2      nop.f              0      nop.i              0};;.pred.rel "mutex", p8, p9{ .mfi      nop.m              0      // result for x = 1.0(p9)  fma.d.s0           f8 = f1, f0, f0 // 0.0      nop.i              0}{.mfb      nop.m              0      // result for x = -1.0(p8)  fma.d.s0           f8 = fPiBy2, f1, fPiBy2 // Pi      // exit here for |x| = 1.0      br.ret.sptk        b0};;// here if x is a NaN, denormal, or zero.align 32acos_special:{ .mfi      // point to Pi/2      adds               rPiBy2Ptr = 272, rTblAddr      // set p12 = 1 if x is a NaN      fclass.m           p12, p0 = f8, 0xc3      nop.i              0}{ .mlx      nop.m              0      // smallest positive DP normalized number      movl               rDenoBound = 0x0010000000000000};;{ .mfi      ldfe               fPiBy2 = [rPiBy2Ptr] // Pi/2      // set p13 = 1 if x = 0.0      fclass.m           p13, p0 = f8, 0x07      nop.i              0}{ .mfi      nop.m              0      fnorm.s1           fNormX = f8      nop.i              0};;{ .mfb      // load smallest normal to FP reg      setf.d             fDenoBound = rDenoBound      // answer if x is a NaN(p12) fma.d.s0           f8 = f8,f1,f0      // exit here if x is a NaN(p12) br.ret.spnt        b0};;{ .mfi      nop.m              0      // absolute value of normalized x      fmerge.s           fNormX = f1, fNormX      nop.i              0};;{ .mfb      nop.m              0      // final result for x = 0(p13) fma.d.s0           f8 = fPiBy2, f1, f8      // exit here if x = 0.0(p13) br.ret.spnt        b0};;// if we still here then x is denormal or unnormal{ .mfi      nop.m              0      // set p14 = 1 if normalized x is greater than or      // equal to the smallest denormalized value      // So, if p14 is set to 1 it means that we deal with      // unnormal rather than with "true" denormal      fcmp.ge.s1         p14, p0 = fNormX, fDenoBound      nop.i              0};;{ .mfi      nop.m              0(p14) fcmp.eq.s0         p6, p0 = f8, f0      // Set D flag if x unnormal      nop.i              0}{ .mfb      nop.m              0      // normalize unnormal input(p14) fnorm.s1           f8 = f8      // return to the main path(p14) br.cond.sptk       acos_unnormal_back};;// if we still here it means that input is "true" denormal{ .mfb      nop.m              0      // final result if x is denormal      fms.d.s0           f8 = fPiBy2, f1, f8 // Pi/2 - x      // exit here if x is denormal      br.ret.sptk        b0};;// here if |x| > 1.0// error handler should be called.align 32acos_abs_gt_1:{ .mfi      alloc              r32 = ar.pfs, 0, 3, 4, 0 // get some registers      fmerge.s           FR_X = f8,f8      nop.i              0}{ .mfb      mov                GR_Parameter_TAG = 58 // error code      frcpa.s0           FR_RESULT, p0 = f0,f0      // call error handler routine      br.cond.sptk       __libm_error_region};;GLOBAL_LIBM_END(acos)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 + -