?? e_acoshf.s
字號:
fma.s1 log_arg = log_y_rs_iter1,log_y_rs,f8 // (0.5*z)*(3-(y*z)*z) adds log_table_address3 = 0x40, NR_table_address};;///////////////////////////////// The end NR iterations /////////////////////{ .mmi //significant bit destruction and log_GR_exp_f8 = log_GR_signexp_f8, log_GR_exp_17_ones;; //BIAS subtraction sub log_GR_true_exp_f8 = log_GR_exp_f8, log_GR_exp_16_ones nop.i 0};;{ .mfi setf.sig log_int_Nfloat = log_GR_true_exp_f8 fms.s1 log_r = log_C,log_arg,f1 // C = frcpa(x); r = C * x - 1 extr.u log_GR_index = log_GR_significand_f8,55,8 //Extract 8 bits};;{ .mmi //pre-index*8 + index shladd log_table_address3 = log_GR_index,3,log_table_address3;; ldfd log_T = [log_table_address3] nop.i 0};;{ .mfi nop.m 0 fma.s1 log_rsq = log_r, log_r, f0 //r^2 nop.i 0}{ .mfi nop.m 0 fma.s1 log_rp_p32 = log_P3, log_r, log_P2 //P3*r + P2 nop.i 0};;{ .mfi nop.m 0 fma.s1 log_rp_p10 = log_P1, log_r, f1 //P1*r + 1.0 nop.i 0};;{ .mfi nop.m 0 //convert N to the floating-point format log_Nfloat fcvt.xf log_Nfloat = log_int_Nfloat nop.i 0};;{ .mfi nop.m 0 //(P3*r + P2)*r^2 + P1*r + 1.0 fma.s1 log_rp_p2 = log_rp_p32, log_rsq, log_rp_p10 nop.i 0};;{ .mfi nop.m 0 fma.s1 log_T_plus_Nlog2 = log_Nfloat,log2,log_T //N*log2 + T nop.i 0};;{ .mfb nop.m 0 fma.s.s0 f8 = log_rp_p2,log_r,log_T_plus_Nlog2 br.ret.sptk b0 // Exit main path, path 3: 1.0005 <= x < 2^51};;// Here if path 2, 1.0 < x < 1.0005ACOSH_NEAR_ONE:// The first NR iteration{ .mfi nop.m 0 fma.s1 acosh_w_iter1 = acosh_w_rs,log_w,f0 //t*w nop.i 0}{ .mfi nop.m 0 fma.s1 acosh_w_1 = f8,log_C2,log_C1 //x*C2 + C1 nop.i 0};;{ .mfi nop.m 0 fma.s1 acosh_w_iter2 = acosh_w_rs,NR1,f0 //t*0.5 nop.i 0}{ .mfi nop.m 0 fnma.s1 acosh_w_iter1 = acosh_w_iter1,acosh_w_rs,NR2 //3-t*t*w nop.i 0};;{ .mfi nop.m 0 //(3-t*t*w)*t*0.5 fma.s1 acosh_w_iter2 = acosh_w_iter2,acosh_w_iter1,f0 nop.i 0}{ .mfi nop.m 0 fma.s1 acosh_w_1 = acosh_w_1,log_w,log_C0 //(x*C2 + C1)*(x-1) + C0 nop.i 0};;// The second NR iteration{ .mfi nop.m 0 fma.s1 acosh_w_rs = acosh_w_iter2,log_w,f0 //t*w nop.i 0};;{ .mfi nop.m 0 fnma.s1 acosh_w_iter1 = acosh_w_iter2,acosh_w_rs,NR2 nop.i 0}{ .mfi nop.m 0 fma.s1 acosh_w_iter2 = acosh_w_iter2,NR1,f0 nop.i 0};;{ .mfi nop.m 0 fma.s1 acosh_w_iter2 = acosh_w_iter2,acosh_w_iter1,f0 nop.i 0};;{ .mfi nop.m 0 fma.s1 acosh_w_sqrt = acosh_w_iter2,log_w,f0 nop.i 0};;{ .mfb nop.m 0 fma.s.s0 f8 = acosh_w_1,acosh_w_sqrt,f0 br.ret.sptk b0 // Exit path 2, 1.0 < x < 1.0005};;// Here if path 4, x >= 2^51LOG_COMMON1:{ .mfi ldfpd log_P3,log_P2 = [NR_table_address],16 frcpa.s1 log_C,p0 = f1,log_arg nop.i 0};;{ .mmi getf.exp log_GR_signexp_f8 = log_arg ldfpd log_P1,log2 = [NR_table_address],16 nop.i 0};;{ .mmi getf.sig log_GR_significand_f8 = log_arg nop.m 0 nop.i 0};;{ .mfi adds log_table_address3 = 0x40, NR_table_address nop.f 0 //significant bit destruction and log_GR_exp_f8 = log_GR_signexp_f8, log_GR_exp_17_ones};;{ .mmf nop.m 0 //BIAS subtraction sub log_GR_true_exp_f8 = log_GR_exp_f8, log_GR_exp_16_ones fms.s1 log_r = log_C,log_arg,f1 // C = frcpa(x); r = C * x - 1};;{ .mfi setf.sig log_int_Nfloat = log_GR_true_exp_f8 nop.f 0 extr.u log_GR_index = log_GR_significand_f8,55,8 //Extract 8 bits};;{ .mmi //pre-index*8 + index shladd log_table_address3 = log_GR_index,3,log_table_address3;; ldfd log_T = [log_table_address3] nop.i 0};;{ .mfi nop.m 0 fma.s1 log_rsq = log_r, log_r, f0 //r^2 nop.i 0}{ .mfi nop.m 0 fma.s1 log_rp_p32 = log_P3, log_r, log_P2 //P3*r + P2 nop.i 0};;{ .mfi nop.m 0 fma.s1 log_rp_p10 = log_P1, log_r, f1 //P1*r + 1.0 nop.i 0};;{ .mfi nop.m 0 //convert N to the floating-point format log_Nfloat fcvt.xf log_Nfloat = log_int_Nfloat nop.i 0}{ .mfi nop.m 0 fma.s1 log_rp_p2 = log_rp_p32, log_rsq, log_rp_p10 nop.i 0};;{ .mfi nop.m 0 fma.s1 log_T_plus_Nlog2 = log_Nfloat,log2,log_T //N*log2 + T nop.i 0};;{ .mfb nop.m 0 fma.s.s0 f8 = log_rp_p2,log_r,log_T_plus_Nlog2 br.ret.sptk b0 // Exit path 4, x >= 2^51};;// Here if path 7, x < 1.0ACOSH_LESS_ONE:{ .mfi alloc r32 = ar.pfs,1,3,4,0 fmerge.s f10 = f8,f8 nop.i 0};;{ .mfb mov acosh_GR_tag = 137 frcpa.s0 f8,p0 = f0,f0 br.cond.sptk __libm_error_region};;GLOBAL_LIBM_END(acoshf)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 stfs [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{ .mib stfs [GR_Parameter_X] = f10 // STORE Parameter 1 on stack add GR_Parameter_RESULT = 0,GR_Parameter_Y // Parameter 3 address nop.b 0}{ .mib stfs [GR_Parameter_Y] = f8 // 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 ldfs 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 + -