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

📄 s_atanl.s

📁 Glibc 2.3.2源代码(解压后有100多M)
💻 S
📖 第 1 页 / 共 3 页
字号:
//     A_temp = Q//(p0)   add table_ptr1 = 128, table_ptr1 ;;}{ .mmf	nop.m 999////     E = E + E_hold*E         (1)//     Point to P_8.//(p0)   ldfe P_8 = [table_ptr1], -16////     poly = z8*poly1 + poly2  (Typo in writeup)//     Is (swap) != 0 ?//(p0)   fnma.s1 z_lo = A_temp, U, V ;;}{ .mmb	nop.m 999////     E_hold = 1.0 - E * U     (2)//(p0)   ldfe P_7 = [table_ptr1], -16	nop.b 999 ;;}{ .mmb	nop.m 999////     E = E + E_hold*E         (2)//(p0)   ldfe P_6 = [table_ptr1], -16	nop.b 999 ;;}{ .mmb	nop.m 999////     E_hold = 1.0 - E * U     (3)//(p0)   ldfe P_5 = [table_ptr1], -16	nop.b 999 ;;}{ .mmf	nop.m 999////     E = E + E_hold*E         (3)////// At this point E approximates 1/U to roughly working precision// z = V*E approximates V/U//(p0)   ldfe P_4 = [table_ptr1], -16(p0)   fnma.s1 E_hold = E, U, f1 ;;}{ .mmb	nop.m 999////     Z =   V * E//(p0)   ldfe P_3 = [table_ptr1], -16	nop.b 999 ;;}{ .mmb	nop.m 999////     zsq = Z * Z//(p0)   ldfe P_2 = [table_ptr1], -16	nop.b 999 ;;}{ .mmb	nop.m 999////     z8 = zsq * zsq//(p0)   ldfe P_1 = [table_ptr1], -16	nop.b 999 ;;}{ .mlx	nop.m 999(p0)   movl         int_temp = 0x24005}{ .mfi	nop.m 999(p0)   fma.s1 E = E, E_hold, E	nop.i 999 ;;}{ .mfi	nop.m 999(p0)   fnma.s1 E_hold = E, U, f1	nop.i 999 ;;}{ .mfi	nop.m 999(p0)   fma.s1 E = E, E_hold, E	nop.i 999 ;;}{ .mfi	nop.m 999(p0)   fmpy.s1 Z = V, E	nop.i 999}{ .mfi	nop.m 999////     z_lo = V - A_temp * U//     if (PR_2) sigma =  1.0//(p0)   fmpy.s1 z_lo = z_lo, E	nop.i 999 ;;}{ .mfi	nop.m 999(p0)   fmpy.s1 zsq = Z, Z	nop.i 999}{ .mfi	nop.m 999////     z_lo = z_lo * E//     if (PR_1) sigma = -1.0//(p0)   fadd.s1 A_hi = A_temp, z_lo	nop.i 999 ;;}{ .mfi	nop.m 999////     z8 = z8 * z8//////     Now what we want to do is//     poly1 = P_4 + zsq*(P_5 + zsq*(P_6 + zsq*(P_7 + zsq*P_8)))//     poly2 = zsq*(P_1 + zsq*(P_2 + zsq*P_3))//(p0)   fma.s1 poly1 = zsq, P_8, P_7	nop.i 999}{ .mfi	nop.m 999(p0)   fma.s1 poly2 = zsq, P_3, P_2	nop.i 999 ;;}{ .mfi	nop.m 999(p0)   fmpy.s1 z8 = zsq, zsq	nop.i 999}{ .mfi	nop.m 999(p0)   fsub.s1 A_temp = A_temp, A_hi	nop.i 999 ;;}{ .mfi	nop.m 999////     A_lo = Z * poly + z_lo//(p0)   fmerge.s     tmp = A_hi, A_hi	nop.i 999 ;;}{ .mfi	nop.m 999////     poly1 = P_7 + zsq * P_8//     poly2 = P_2 + zsq * P_3//(p0)   fma.s1 poly1 = zsq, poly1, P_6	nop.i 999}{ .mfi	nop.m 999(p0)   fma.s1 poly2 = zsq, poly2, P_1	nop.i 999 ;;}{ .mfi	nop.m 999(p0)   fmpy.s1 z8 = z8, z8	nop.i 999}{ .mfi	nop.m 999(p0)   fadd.s1 z_lo = A_temp, z_lo	nop.i 999 ;;}{ .mfi	nop.m 999////     poly1 = P_6 + zsq * poly1//     poly2 = P_2 + zsq * poly2//(p0)   fma.s1 poly1 = zsq, poly1, P_5	nop.i 999}{ .mfi	nop.m 999(p0)   fmpy.s1 poly2 = poly2, zsq	nop.i 999 ;;}{ .mfi	nop.m 999////     Result  =  Res_hi + Res_lo  (User Supplied Rounding Mode)//(p0)   fmpy.s1 P_5 = P_5, P_5	nop.i 999 ;;}{ .mfi	nop.m 999(p0)   fma.s1 poly1 = zsq, poly1, P_4	nop.i 999 ;;}{ .mfi	nop.m 999(p0)   fma.s1 poly = z8, poly1, poly2	nop.i 999 ;;}{ .mfi	nop.m 999////     Fixup added to force inexact later -//     A_hi = A_temp + z_lo//     z_lo = (A_temp - A_hi) + z_lo//(p0)   fma.s1 A_lo = Z, poly, z_lo	nop.i 999 ;;}{ .mfi	nop.m 999(p0)   fadd.s1      A_hi = tmp, A_lo	nop.i 999 ;;}{ .mfi	nop.m 999(p0)   fsub.s1      tmp = tmp, A_hi	nop.i 999}{ .mfi	nop.m 999(p0)   fmpy.s1 A_hi = s_Y, A_hi	nop.i 999 ;;}{ .mfi	nop.m 999(p0)   fadd.s1      A_lo = tmp, A_lo	nop.i 999}{ .mfi(p0)   setf.exp     tmp = int_temp////     P_hi = s_Y * P_hi//     A_hi = s_Y * A_hi//(p0)   fma.s1 Res_hi = sigma, A_hi, P_hi	nop.i 999 ;;}{ .mfi	nop.m 999(p0)   fclass.m.unc p6,p0 = A_lo, 0x007	nop.i 999 ;;}{ .mfi	nop.m 999(p6)   mov          A_lo = tmp	nop.i 999}{ .mfi	nop.m 999////     Res_hi = P_hi + sigma * A_hi//(p0)   fsub.s1 tmp =  P_hi, Res_hi	nop.i 999 ;;}{ .mfi	nop.m 999////     tmp = P_hi - Res_hi//(p0)   fma.s1 tmp = A_hi, sigma, tmp	nop.i 999}{ .mfi	nop.m 999(p0)   fma.s1 sigma =  A_lo, sigma, P_lo	nop.i 999 ;;}{ .mfi	nop.m 999////     tmp   = sigma * A_hi  + tmp//     sigma = A_lo * sigma  + P_lo//(p0)   fma.s1 Res_lo = s_Y, sigma, tmp	nop.i 999 ;;}{ .mfb	nop.m 999////     Res_lo = s_Y * sigma + tmp//(p0)   fadd.s0 Result = Res_lo, Res_hibr.ret.sptk   b0 ;;}L(ATANL_NATVAL): L(ATANL_UNSUPPORTED): L(ATANL_NAN): { .mfb	nop.m 999(p0)   fmpy.s0 Result = ArgX,ArgY (p0)   br.ret.sptk   b0 ;;}L(ATANL_SPECIAL_HANDLING): { .mfi	nop.m 999(p0)   fcmp.eq.s0     p0, p6 = f1, ArgY_orig	nop.i 999}{ .mfi	nop.m 999(p0)   fcmp.eq.s0     p0, p5 = f1, ArgX_orig	nop.i 999 ;;}{ .mfi	nop.m 999(p0)   fclass.m.unc p6, p7 = ArgY, 0x007	nop.i 999}{ .mlx	nop.m 999(p0)   movl special = 992};;{ .mmi      nop.m 999(p0)  addl           table_ptr1   = @ltoff(Constants_atan#), gp      nop.i 999};;{ .mmi      ld8 table_ptr1 = [table_ptr1]      nop.m 999      nop.i 999};;{ .mib(p0)   add table_ptr1 = table_ptr1, special	nop.i 999(p7)   br.cond.spnt L(ATANL_ArgY_Not_ZERO) ;;}{ .mmf(p0)   ldfd  Result = [table_ptr1], 8	nop.m 999(p6)   fclass.m.unc p14, p0 = ArgX, 0x035 ;;}{ .mmf	nop.m 999(p0)   ldfd  Result_lo = [table_ptr1], -8(p6)   fclass.m.unc p15, p0 = ArgX, 0x036 ;;}{ .mfi	nop.m 999(p14)  fmerge.s Result = ArgY, f0	nop.i 999}{ .mfi	nop.m 999(p6)   fclass.m.unc p13, p0 = ArgX, 0x007	nop.i 999 ;;}{ .mfi	nop.m 999(p14)  fmerge.s Result_lo = ArgY, f0	nop.i 999 ;;}{ .mfi(p13)  mov GR_Parameter_TAG = 36 	nop.f 999	nop.i 999 ;;}{ .mfi	nop.m 999////     Return sign_Y * 0 when  ArgX > +0//(p15)  fmerge.s Result = ArgY, Result	nop.i 999 ;;}{ .mfi	nop.m 999(p15)  fmerge.s Result_lo = ArgY, Result_lo	nop.i 999 ;;}{ .mfb	nop.m 999////     Return sign_Y * 0 when  ArgX < -0//(p0)   fadd.s0 Result = Result, Result_lo(p13)  br.cond.spnt __libm_error_region ;;}{ .mib	nop.m 999	nop.i 999////     Call error support funciton for atan(0,0)//(p0)    br.ret.sptk   b0 ;;}L(ATANL_ArgY_Not_ZERO): { .mfi	nop.m 999(p0)   fclass.m.unc p9, p10 = ArgY, 0x023	nop.i 999 ;;}{ .mib	nop.m 999	nop.i 999(p10)  br.cond.spnt  L(ATANL_ArgY_Not_INF) ;;}{ .mfi	nop.m 999(p9)   fclass.m.unc p6, p0 = ArgX, 0x017	nop.i 999}{ .mfi	nop.m 999(p9)   fclass.m.unc p7, p0 = ArgX, 0x021	nop.i 999 ;;}{ .mfi	nop.m 999(p9)   fclass.m.unc p8, p0 = ArgX, 0x022	nop.i 999 ;;}{ .mmi(p6)   add table_ptr1 =  16, table_ptr1 ;;(p0)   ldfd Result = [table_ptr1], 8	nop.i 999 ;;}{ .mfi(p0)   ldfd Result_lo = [table_ptr1], -8	nop.f 999	nop.i 999 ;;}{ .mfi	nop.m 999(p6)   fmerge.s Result = ArgY, Result	nop.i 999 ;;}{ .mfi	nop.m 999(p6)   fmerge.s Result_lo = ArgY, Result_lo	nop.i 999 ;;}{ .mfb	nop.m 999(p6)    fadd.s0 Result = Result, Result_lo(p6)    br.ret.sptk   b0 ;;}////     Load PI/2 and adjust its sign.//     Return +PI/2 when ArgY = +Inf and ArgX = +/-0 or normal//     Return -PI/2 when ArgY = -Inf and ArgX = +/-0 or normal//{ .mmi(p7)   add table_ptr1 = 32, table_ptr1 ;;(p7)   ldfd Result = [table_ptr1], 8	nop.i 999 ;;}{ .mfi(p7)   ldfd Result_lo = [table_ptr1], -8	nop.f 999	nop.i 999 ;;}{ .mfi	nop.m 999(p7)   fmerge.s Result = ArgY, Result	nop.i 999 ;;}{ .mfi	nop.m 999(p7)   fmerge.s Result_lo = ArgY, Result_lo	nop.i 999 ;;}{ .mfb	nop.m 999(p7)    fadd.s0 Result = Result, Result_lo(p7)    br.ret.sptk   b0 ;;}////     Load PI/4 and adjust its sign.//     Return +PI/4 when ArgY = +Inf and ArgX = +Inf//     Return -PI/4 when ArgY = -Inf and ArgX = +Inf//{ .mmi(p8)   add table_ptr1 = 48, table_ptr1 ;;(p8)   ldfd Result = [table_ptr1], 8	nop.i 999 ;;}{ .mfi(p8)   ldfd Result_lo = [table_ptr1], -8	nop.f 999	nop.i 999 ;;}{ .mfi	nop.m 999(p8)   fmerge.s Result = ArgY, Result	nop.i 999 ;;}{ .mfi	nop.m 999(p8)   fmerge.s Result_lo = ArgY, Result_lo	nop.i 999 ;;}{ .mfb	nop.m 999(p8)   fadd.s0 Result = Result, Result_lo(p8)   br.ret.sptk   b0 ;; }L(ATANL_ArgY_Not_INF): { .mfi	nop.m 999////     Load PI/4 and adjust its sign.//     Return +3PI/4 when ArgY = +Inf and ArgX = -Inf//     Return -3PI/4 when ArgY = -Inf and ArgX = -Inf//(p0)  fclass.m.unc p6, p0 = ArgX, 0x007	nop.i 999}{ .mfi	nop.m 999(p0)  fclass.m.unc p7, p0 = ArgX, 0x021	nop.i 999 ;;}{ .mfi	nop.m 999(p0)  fclass.m.unc p8, p0 = ArgX, 0x022	nop.i 999 ;;}{ .mmi(p6)  add table_ptr1 = 16, table_ptr1 ;;(p6)  ldfd Result = [table_ptr1], 8	nop.i 999 ;;}{ .mfi(p6)  ldfd Result_lo = [table_ptr1], -8	nop.f 999	nop.i 999 ;;}{ .mfi	nop.m 999(p6)  fmerge.s Result = ArgY, Result	nop.i 999 ;;}{ .mfi	nop.m 999(p6)  fmerge.s Result_lo = ArgY, Result_lo	nop.i 999 ;;}{ .mfb	nop.m 999(p6)  fadd.s0 Result = Result, Result_lo(p6)  br.ret.spnt   b0 ;;}{ .mfi	nop.m 999////    return = sign_Y * PI/2 when ArgX = 0//(p7)  fmerge.s Result = ArgY, f0	nop.i 999 ;;}{ .mfb	nop.m 999(p7)  fnorm.s0 Result = Result(p7)  br.ret.spnt   b0 ;;}////    return = sign_Y * 0 when ArgX = Inf//{ .mmi(p8)  ldfd Result = [table_ptr1], 8 ;;(p8)  ldfd Result_lo = [table_ptr1], -8	nop.i 999 ;;}{ .mfi	nop.m 999(p8)  fmerge.s Result = ArgY, Result	nop.i 999 ;;}{ .mfi	nop.m 999(p8)  fmerge.s Result_lo = ArgY, Result_lo	nop.i 999 ;;}{ .mfb	nop.m 999(p8)  fadd.s0 Result = Result, Result_lo(p8)  br.ret.sptk   b0 ;;}////    return = sign_Y * PI when ArgX = -Inf//.endp atan2lASM_SIZE_DIRECTIVE(atan2l)ASM_SIZE_DIRECTIVE(__atan2l)ASM_SIZE_DIRECTIVE(__ieee754_atan2l) .proc __libm_error_region__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        stfe [GR_Parameter_Y] = FR_Y,16         // Save 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        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};;{ .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};;.endp __libm_error_regionASM_SIZE_DIRECTIVE(__libm_error_region) .type   __libm_error_support#,@function.global __libm_error_support#

⌨️ 快捷键说明

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