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

📄 libm_atan2_reg.s

📁 Glibc 2.3.2源代码(解压后有100多M)
💻 S
📖 第 1 页 / 共 3 页
字号:
//     poly1 = P_4 + zsq*poly1//(p0)   fmpy.s1 f63 = f63, f60	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...////     poly1 = P_4 + zsq * poly1//     swap = xor(swap,sign_X)//(p0)   fma.s1 f62 = f60, f62, f72	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...////     poly = z8*poly1 + poly2  (Typo in writeup)//     Is (swap) != 0 ?//////     z_lo = V - A_temp * U//     if (p7) sigma =  1.0//     Writeup shows A_temp as A_hi//////     z_lo = z_lo * E//     if (p6) sigma = -1.0//     z_lo = (V - A_temp * U) *E//////     Fixup added to force inexact later -//     A_hi = A_temp + z_lo//     z_lo = (A_temp - A_hi) + z_lo//     z_lo = A_hi - z_lo -A_hi + z_lo = about 0//(p0)   fma.s1 f47 = f61, f62, f63	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...////     A_lo = z * poly + z_lo//(p0)   fma.s1 f53 = f59, f47, f64	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p0)   fadd.s1  f52 = f65, f53	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p0)   fsub.s1  f65 = f65, f52	nop 999	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p0)   fmpy.s1 f52 = f34, f52	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p0)   fadd.s1  f53 = f65, f53	nop 999	// EMbo added ... } { .mfi(p0)   setf.exp f65 = r47(p0)   fma.s1 f56 = f54, f52, f50	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p0)   fclass.m.unc  p6,p0 = f53,0x007	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...////     P_hi = s_Y * P_hi//     A_hi = s_Y * A_hi//////     result_hi = P_hi + sigma * A_hi//(p6)   mov f53 = f65	nop 999	// EMbo added ... } { .mfi	nop 999	// EMbo added ...////     tmp = P_hi - result_hi//(p0)   fsub.s1 f65 = f50, f56	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p0)   fma.s1 f65 = f52, f54, f65	nop 999	// EMbo added ... } { .mfi	nop 999	// EMbo added ...////     tmp   = sigma * A_hi  + tmp//     sigma = A_lo * sigma  + P_lo//(p0)   fma.s1 f54 = f53, f54, f51	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...////     result_lo = s_Y * sigma + tmp//(p0)   fma.s1 f55 = f34, f54, f65	nop 999;;	// EMbo added ... } { .mfb       nop.m 0       mov f34 = f1(p0)   br.cond.sptk L(RETURN_ATAN);;}////     result  =  result_hi + result_lo  (User Supplied Rounding Mode)////     (p0)   fadd.d.s0 f57 = f55, f56L(ATAN_UNSUPPORTED):L(ATAN_NATVAL): { .mfb	nop 999	// EMbo added ...////     Deal with the NatVal and unsupported cases.//     Raise invalid if warrented.//(p0)   fmpy.d.s0 f57 = f8, f9br.cond.sptk L(RETURN_ATAN);; }L(ATAN_NAN): { .mfb	nop 999	// EMbo added ...////     If only one NaN, then generate the resulting//     NaN and return - may raise invalid.//(p0)   fmpy.d.s0 f57 = f8, f9(p0)   br.cond.sptk L(RETURN_ATAN);; }L(ATAN_SPECIAL_HANDLING): { .mmf(p0)   addl           r39   = @ltoff(Constants_atan#), gp       nop.m 999(p0)   fcmp.lt.s0 p0,p7 = f8,f1 } ;;////     Raise denormal operand faults if necessary//{ .mfi       ld8 r39 = [r39](p0)   fcmp.lt.s0 p0,p6 = f9,f1	nop 999;;	// EMbo added ...} ;;{ .mfi	nop 999	// EMbo added ...(p0)   fclass.m.unc p6,p7 = f32,0x007	nop 999;;	// EMbo added ... } { .mlx	nop 999	// EMbo added ...(p0)   movl r47 = 992;; } { .mib(p0)   add r39 = r39, r47	nop 999	// EMbo added ...(p7)   br.cond.sptk L(ATAN_ArgY_Not_ZERO);; } { .mfi	nop 999	// EMbo added ...(p6)   fclass.m.unc p14,p0 = f33,0x035	nop 999	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p6)   fclass.m.unc p15,p0 = f33,0x036	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p6)   fclass.m.unc p13,p0 = f33,0x007	nop 999	// EMbo added ... } { .mfi(p0)   ldfd  f56 = [r39],8	nop 999	// EMbo added ...	nop 999;;	// EMbo added ... } { .mfi(p0)   ldfd  f55 = [r39],-8(p14)  fmerge.s f56 =  f32,f0	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...////     Return sign_Y * 0 when Y = +/-0 and X > 0//(p14)  fmerge.s f55 =  f32,f0	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p15)  fmerge.s f56 =  f32,f56	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...////     Return sign_Y * PI when X <  -0////(p15)  fmerge.s f55 =  f32,f55	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p0)   fadd.d.s0 f57 = f56,f55      nop.i 0 } { .bbb////     Call error support function for atan(0,0)//     - expected value already computed.//    nop.b 0    nop.b 0(p0)  br.cond.sptk L(RETURN_ATAN) }L(ATAN_ArgY_Not_ZERO): { .mfi	nop 999	// EMbo added ...(p0)   fclass.m.unc p9,p10 = f32,0x023	nop 999;;	// EMbo added ... } { .mfb	nop 999	// EMbo added ...(p9)   fclass.m.unc p6,p0 = f33,0x017(p10)  br.cond.sptk L(ATAN_ArgY_Not_INF);; } { .mfi(p6)   add r39 = 16,r39(p9)   fclass.m.unc p7,p0 = f33,0x021	nop 999;;	// EMbo added ... } { .mmf	nop 999	// EMbo added ...(p0)   ldfd  f56 = [r39],8(p9)   fclass.m.unc p8,p0 = f33,0x022;; } { .mbb(p0)   ldfd  f55 = [r39],-8	nop 999	// EMbo added ...	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p6)   fmerge.s f56 =  f32,f56	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p6)   fmerge.s f55 =  f32,f55	nop 999;;	// EMbo added ... } { .mfb	nop 999	// EMbo added ...////     Load I/2 and adjust its sign.//     Return +I/2 when ArgY = +Inf and ArgX = +/-0,normal//     Return -I/2 when ArgY = -Inf and ArgX = +/-0,normal//(p6)   fadd.d.s0  f57 =   f56,  f55(p6)   br.cond.sptk L(RETURN_ATAN);; } { .mmi(p7)   add r39 = 32,r39;;(p7)   ldfd  f56 = [r39],8	nop 999;;	// EMbo added ... } { .mmi	nop 999;;	// EMbo added ...(p7)   ldfd  f55 = [r39],-8	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p7)   fmerge.s f56 =  f32,f56	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p7)   fmerge.s f55 =  f32,f55	nop 999;;	// EMbo added ... } { .mfb	nop 999	// EMbo added ...////     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//(p7)   fadd.d.s0  f57 =   f56,  f55(p7)   br.cond.sptk L(RETURN_ATAN);; } { .mmi(p8)   add r39 = 48,r39;;(p8)   ldfd f56 =[r39],8	nop 999;;	// EMbo added ... } { .mmi	nop 999;;	// EMbo added ...(p8)   ldfd f55 =[r39],-8	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p8)   fmerge.s f56 =  f32,f56	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p8)   fmerge.s f55 =  f32,f55	nop 999;;	// EMbo added ... } { .mfb	nop 999	// EMbo added ...////     Load I/4 and adjust its sign.//     Return +3I/4 when ArgY = +Inf and ArgX = -Inf//     Return -3I/4 when ArgY = -Inf and ArgX = -Inf//(p8)   fadd.d.s0  f57 =   f56,  f55(p8)   br.cond.sptk L(RETURN_ATAN);; }L(ATAN_ArgY_Not_INF): { .mfi	nop 999	// EMbo added ...(p0)   fclass.m.unc  p6,p0 = f33,0x007	nop 999	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p0)   fclass.m.unc  p7,p0 = f33,0x021	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p0)   fclass.m.unc  p8,p0 = f33,0x022(p6)   add r39 = 16,r39;; } { .mfi(p6)   ldfd f56 =[r39],8	nop 999	// EMbo added ...	nop 999;;	// EMbo added ... } { .mmi	nop 999;;	// EMbo added ...(p6)   ldfd f55 =[r39],-8	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p6)   fmerge.s f56 =  f32,f56	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p6)   fmerge.s f55 =  f32,f55	nop 999;;	// EMbo added ... } { .mfb	nop 999	// EMbo added ...////     return = sign_Y * I/2 when ArgX = +/-0//(p6)   fadd.d.s0 f57 = f56, f55(p6)   br.cond.sptk L(RETURN_ATAN);; } { .mfi	nop 999	// EMbo added ...(p7)   fmerge.s f56 =  f32,f0	nop 999	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p7)   fmerge.s f55 =  f32,f0	nop 999;;	// EMbo added ... } { .mfb	nop 999	// EMbo added ...////     return = sign_Y * 0 when ArgX = Inf//(p7)   fadd.d.s0 f57 = f56, f55(p7)   br.cond.sptk L(RETURN_ATAN);; } { .mfi(p8)   ldfd f56 = [r39],8	nop 999	// EMbo added ...	nop 999;;	// EMbo added ... } { .mmi	nop 999;;	// EMbo added ...(p8)   ldfd f55 = [r39],-8	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p8)   fmerge.s f56 =  f32,f56	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...(p8)   fmerge.s f55 =  f32,f55	nop 999;;	// EMbo added ... } { .mfi	nop 999	// EMbo added ...////     return = sign_Y * I when ArgX = -Inf//(p8)   fadd.d.s0  f57 =   f56,  f55	nop 999	// EMbo added ... };;L(RETURN_ATAN):// mov    f8     = f57 ;;// The answer is in f57.// But Z_hi is f56//     Z_lo is f55//     s_Y  is f34//     W is in f9 and untouched{ .mfi	nop 999	mov    f8     = f56        nop.i 0};;{ .mfi	nop 999	mov    f10    = f55        nop.i 999}{ .mfb	nop 999	mov    f11    = f34br.ret.sptk   b0};;.endp __libm_atan2_regASM_SIZE_DIRECTIVE(__libm_atan2_reg)

⌨️ 快捷键说明

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