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

📄 e_powl.s

📁 Glibc 2.3.2源代码(解压后有100多M)
💻 S
📖 第 1 页 / 共 5 页
字号:
GR_X_1              = r40GR_W1_ptr           = r40GR_W2_ptr           = r41GR_X_2              = r41GR_Z_1              = r42GR_M2               = r42GR_M1               = r43GR_Z_2              = r43GR_N                = r44GR_k                = r44GR_Big_Pos_Exp      = r45GR_BIAS_p_k         = r47GR_BIASed_exp_y     = r47GR_Big_Neg_Exp      = r48GR_Index3           = r48GR_temp             = r48GR_vsm_expo         = r49GR_y_sign           = r49GR_T1_ptr           = r50GR_T2_ptr           = r51GR_N_fix            = r52GR_exp_y            = r53GR_signif_y         = r54GR_exp_and_sign_y   = r55GR_low_order_bit    = r56GR_get_exp_mask     = r57GR_exponent_zero    = r58// ** Registers for unwind supportGR_SAVE_PFS         = r59GR_SAVE_B0          = r60GR_SAVE_GP          = r61GR_Parameter_X      = r62 GR_Parameter_Y      = r63 GR_Parameter_RESULT = r64 GR_Parameter_TAG    = r65 FR_X      = f8FR_Y      = f9FR_RESULT = f99// **FR_Input_X          = f8FR_Output           = f8FR_Input_Y          = f9FR_Neg              = f10FR_P_hi             = f10FR_X                = f10FR_Half             = f11FR_h_3              = f11FR_poly_hi          = f11FR_Sgn              = f12FR_Neg_X            = f13FR_half_W           = f13FR_X_cor            = f14FR_P_lo             = f14FR_W                = f15FR_X_lo             = f32FR_S                = f33FR_W3               = f33FR_Y_hi             = f34FR_logx_hi          = f34FR_Z                = f35FR_logx_lo          = f35FR_GS_hi            = f35FR_Y_lo             = f35FR_r_cor            = f36FR_Scale            = f36FR_G_1              = f37FR_G                = f37FR_Wsq              = f37FR_L_Inv            = f37FR_temp             = f37FR_H_1              = f38FR_H                = f38FR_W4               = f38FR_float_N          = f38FR_h                = f39FR_h_1              = f39FR_N                = f39FR_P_7              = f39FR_G_2              = f40FR_P_8              = f40FR_L_hi             = f40FR_H_2              = f41FR_L_lo             = f41FR_A_1              = f41FR_h_2              = f42FR_P_6              = f42FR_abs_W            = f43FR_W1               = f43FR_G_3              = f44FR_P_8              = f44FR_T1               = f44FR_log2_hi          = f45FR_W2               = f45FR_GS_lo            = f46FR_T2               = f46FR_W_1_p1           = f47FR_H_3              = f47FR_float_N          = f48FR_P_4              = f49FR_A_2              = f49FR_Q_4              = f50FR_r4               = f50FR_Q_3              = f51FR_A_3              = f51FR_Q_2              = f52FR_P_2              = f52FR_Q_1              = f53FR_P_1              = f53FR_T                = f53FR_Wp1              = f54FR_Q_5              = f54FR_P_3              = f54FR_Q_6              = f55FR_log2_lo          = f56FR_Two              = f56FR_Big              = f57FR_neg_2_mK         = f58FR_NBig             = f58FR_r                = f59FR_poly_lo          = f60FR_poly             = f61FR_P_5              = f62FR_rsq              = f63FR_Result           = f99FR_Result_small     = f100FR_Result_big       = f101.section .text.proc powl#.global powl#.align 64 powl: { .mfialloc  GR_Expo_Range = ar.pfs,0,30,4,0(p0)   fclass.m.unc p7, p13 =  FR_Input_Y, 0x1E7 nop.i 0}{ .mfi(p0)   getf.exp GR_exp_and_sign_y = FR_Input_Y ////     Save State//(p0)   fclass.m.unc p6, p12 =  FR_Input_X, 0x1E7 nop.i 0};;{ .mfi(p0)   getf.sig GR_signif_y = FR_Input_Y (p0)   fcmp.eq.unc.s1 p12, p13 =  FR_Input_X, f1 nop.i 0}{ .mfi	nop.m 999////     Check for y = 1 //     Identify EM unsupporteds.//     Load FR_half = .5//(p0)   fadd.s1 FR_Two = f1, f1 ////     Load 1/2 in GP register//nop.i 0 };;{ .mmi      nop.m 999(p0)  addl           GR_Table_Ptr   = @ltoff(Constant_half#), gp      nop.i 999};;{ .mmi      ld8 GR_Table_Ptr = [GR_Table_Ptr]      nop.m 999      nop.i 999};;{ .mlx(p0)   ldfe FR_Half =[GR_Table_Ptr],0(p0)   movl GR_get_exp_mask = 0x1FFFF ;; }{ .mfi	nop.m 999(p0)   fclass.nm.unc p9, p15 =  FR_Input_Y, 0x1FF ////     Create FR_Two = 2//     Get exp and significand of Y//     Crate Masks//     sgn = 1//(p0)   and GR_exp_y = GR_get_exp_mask,GR_exp_and_sign_y}{ .mlx	nop.m 999(p0)   movl GR_exponent_zero = 0xFFFF ;; }{ .mfi	nop.m 999(p0)   mov FR_Sgn = f1 	nop.i 999}{ .mfi	nop.m 999(p0)   fcmp.eq.unc.s1 p10, p11 =  FR_Input_Y, f1 	nop.i 999 ;;}{ .mfb	nop.m 999////     Identify NatVals, NaNs, Infs, and Zeros.//     Load Half//(p0)   fclass.nm.unc p8, p14 =  FR_Input_X, 0x1FF //      //     Remove sign bit from exponent of y.//     Check for x = 1 //(p6)   br.cond.spnt L(POWL_64_SPECIAL) ;; }{ .mib	nop.m 999	nop.i 999(p7)   br.cond.spnt L(POWL_64_SPECIAL) ;; }{ .mib	nop.m 999	nop.i 999(p8)   br.cond.spnt L(POWL_64_UNSUPPORT) ;; }{ .mib	nop.m 999	nop.i 999(p9)   br.cond.spnt L(POWL_64_UNSUPPORT) ;; }{ .mfi(p0)   cmp.lt.unc  p9, p0 = GR_exp_y,GR_exponent_zero (p0)   fcmp.lt.unc.s1 p6, p13  =  FR_Input_X, f0 ////     Branch on Infs, Nans, Zeros, and Natvals//     Check to see that exponent < 0//(p0)   sub GR_exp_y = GR_exp_y,GR_exponent_zero}//     x not zero, is y ==2? { .mfi	nop.m 999(p11)  fcmp.eq.unc.s1 p7, p14 =  FR_Input_Y, FR_Two 	nop.i 999 ;;}{ .mfb	nop.m 999(p9)   fcmp.lt.unc.s1 p9, p0   =  FR_Input_X, f0 (p7)   br.cond.spnt L(POWL_64_SQUARE) ;;   // Branch if x not zero and y=2}{ .mfi	nop.m 999(p6)   fmerge.ns FR_Neg_X = FR_Input_X, FR_Input_X 	nop.i 999 ;;}{ .mfi	nop.m 999(p10)  fmpy.s0 FR_Result = FR_Input_X, f1 ////     For y = 1, compute result = x //     For x = 1, compute 1 //     When Y is one return X and possible raise //     denormal operand exception.//     Remove exponent BIAS//(p6)   shl GR_exp_and_sign_y=  GR_signif_y,GR_exp_y ;; }{ .mfi(p9)   or  GR_exp_and_sign_y = 0xF,GR_signif_y (p12)  fma.s0 FR_Result = FR_Input_Y, f0, f1 	nop.i 999 ;;}{ .mii	nop.m 999(p6)   extr.u GR_exp_y = GR_exp_and_sign_y,63,1 ;; (p6)   cmp.ne.unc  p9, p0 =  GR_exp_y, r0 }{ .mii	nop.m 999////     Both predicates can be set. //     Don't consider  y's < 1.//(p6)   shl GR_signif_y=  GR_exp_and_sign_y,1 ;; ////     Is shift off integer part of y.//     Get y's  even or odd bit.//(p6)   cmp.ne.unc  p8, p0  =  GR_signif_y, r0 }{ .mib	nop.m 999	nop.i 999////     Is the fractional part of the y = 0?//     Is the integer even or odd. //(p10)  br.cond.spnt L(POWL_64_RETURN) ;; }{ .mib	nop.m 999	nop.i 999(p12)  br.cond.spnt L(POWL_64_RETURN) ;; }{ .mib	nop.m 999	nop.i 999(p8)   br.cond.spnt L(POWL_64_XNEG) ;;}{ .mfi	nop.m 999(p9)   fmerge.ns FR_Sgn = FR_Sgn, FR_Sgn 	nop.i 999}{ .mfi	nop.m 999(p0)   fcmp.eq.unc.s0 p11, p0 =  FR_Input_Y, FR_Half 	nop.i 999 ;;}////     Raise possible denormal operand exception for both//     X and Y.//{ .mfb	nop.m 999////     Branch for (x < 0) and Y not an integer.//(p0)   fcmp.eq.unc.s0 p12, p0 =  FR_Input_X, f1 ////     For x < 0 and y integer, make x positive //     For x < 0 and y odd integer,, set sign = -1.//(p11)  br.cond.spnt L(POWL_64_SQRT) ;; }{ .mmf(p0)   cmp.eq.unc  p15, p14 =  r0, r0 	nop.m 999(p13)  fnorm.s1 FR_Z = FR_Input_X ;; }{ .mfi	nop.m 999(p6)   fnorm.s1 FR_Z = FR_Neg_X 	nop.i 999};;////     Branch to embedded sqrt(x)//////     Computes ln( x ) to extra precision //     Input  FR 1: FR_X            //     Output FR 2: FR_Y_hi  //     Output FR 3: FR_Y_lo  //     Output PR 1: PR_Safe  //{ .mmi      nop.m 999(p0)  addl           GR_Table_Ptr   = @ltoff(Constants_log_80_Z_G_H_h1#), gp      nop.i 999};;{ .mmi      ld8 GR_Table_Ptr = [GR_Table_Ptr]      nop.m 999      nop.i 999};;{ .mlx	nop.m 999(p0)   movl GR_BIAS = 0x000000000000FFFF ;; }{ .mfi	nop.m 999(p0)   fsub.s1 FR_W = FR_Z, f1 	nop.i 999 ;;}//     //     Z = Norm(X) - both + and - case //     Set Safe = True//     { .mmb(p0)   getf.sig GR_signif_Z = FR_Z (p0)   getf.exp GR_N =  FR_Z 	nop.b 999 ;;}{ .mii	nop.m 999//     //     Get significand of Z //     W = Z - 1//     (p0)   extr.u GR_Index1 = GR_signif_Z, 59, 4 ;;  //     //     Index1 = High order 4 bits of Z//     X_0  = High order 15 bit of Z //(p0)   shl GR_Index1 = GR_Index1,5 ;; }{ .mfi	nop.m 999//     //     Add offset to Index1 ptr.//     (p0)   fabs FR_abs_W =  FR_W //     //     BIAS = 0x000...FFFF//     Adjust Index1 ptr ( x 32) .//     (p0)   add GR_Index1 = GR_Index1,GR_Table_Ptr  }{ .mmi	nop.m 999 ;;(p0)   ld2 GR_Z_1 =[GR_Index1],4(p0)   extr.u GR_X_0 = GR_signif_Z, 49, 15  };;{ .mmi      nop.m 999(p0)  addl           GR_Table_Ptr   = @ltoff(Constants_log_80_Z_G_H_h2#), gp      nop.i 999};;{ .mmi      ld8 GR_Table_Ptr = [GR_Table_Ptr]      nop.m 999      nop.i 999};;{ .mmi(p0)   ldfs  FR_G_1 = [GR_Index1],4 ;; (p0)   ldfs  FR_H_1 = [GR_Index1],8 	nop.i 999 ;;}////     Adjust Index2 (x 32). //{ .mfi(p0)   ldfe FR_h_1 = [GR_Index1],0 	nop.f 999(p0)   pmpyshr2.u GR_X_1 = GR_X_0,GR_Z_1,15 ;; }{ .mmi	nop.m 999 ;;////     load Z_1 from Index1//     abs_W = |W|//     Point to Table2 //(p0)   getf.exp GR_M = FR_abs_W ////     M = M - BIAS //     Load G_1 //     N = exponent of Z //       nop.i 999;;}{ .mmi       nop.m 999       nop.m 999       nop.i 999;;}{ .mmi       nop.m 999       nop.m 999       nop.i 999;;}{ .mmi        nop.m 999        nop.m 999(p0)   extr.u GR_Index2 = GR_X_1, 6, 4 ;;  }{ .mii	nop.m 999//     //     Extract Index2 //     Load H_1//     Is -8 > M ?//(p0)   shl GR_Index2=GR_Index2,5 ;; (p0)   add GR_Index2 = GR_Index2, GR_Table_Ptr  }////     M = exponent of abs_W//     X_1 = X_0 * Z_1 //     { .mii(p0)   sub GR_M = GR_M, GR_BIAS  	nop.i 999 ;;(p0)   cmp.gt.unc  p7, p14 =  -8, GR_M }{ .mib	nop.m 999	nop.i 999(p7)   br.cond.spnt L(LOGL80_NEAR) ;; }////     Load h_1//     Possible branch out.  //     Add offset of table to Index2 //{ .mfi(p0)   ld2 GR_Z_2 =[GR_Index2],4(p0)   fmerge.se FR_S =  f1,FR_Z(p0)   sub GR_N = GR_N, GR_BIAS  };;{ .mmi      nop.m 999(p0)  addl           GR_Table_Ptr   = @ltoff(Constants_log_80_h3_G_H#), gp      nop.i 999};;{ .mmi      ld8 GR_Table_Ptr = [GR_Table_Ptr]      nop.m 999      nop.i 999};;//     //     load Z_2 //     N - BIAS //     Point to Table 3.//     S = merging of Z and 1.0//     { .mmi(p0)   ldfs  FR_G_2 = [GR_Index2],4 (p0)   setf.sig FR_float_N = GR_N (p0)   add GR_Table_Ptr1 = 0x200,GR_Table_Ptr ;;  }//

⌨️ 快捷键说明

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