亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? s_nextafter.s

?? glibc 庫, 不僅可以學(xué)習(xí)使用庫函數(shù),還可以學(xué)習(xí)函數(shù)的具體實(shí)現(xiàn),是提高功力的好資料
?? S
字號(hào):
.file "nextafter.s"// Copyright (c) 2000 - 2004, Intel Corporation// All rights reserved.//// Contributed 2000 by the Intel Numerics Group, Intel Corporation//// Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions are// met://// * Redistributions of source code must retain the above copyright// notice, this list of conditions and the following disclaimer.//// * Redistributions in binary form must reproduce the above copyright// notice, this list of conditions and the following disclaimer in the// documentation and/or other materials provided with the distribution.//// * The name of Intel Corporation may not be used to endorse or promote// products derived from this software without specific prior written// permission.// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // // Intel Corporation is the author of this code, and requests that all// problem reports or change requests be submitted to it directly at // http://www.intel.com/software/products/opensource/libraries/num.htm.//// History//==============================================================// 02/02/00 Initial version // 03/03/00 Modified to conform to C9X, and improve speed of main path// 03/14/00 Fixed case where x is a power of 2, and x > y, improved speed// 04/04/00 Unwind support added// 05/12/00 Fixed erroneous denormal flag setting for exponent change cases 1,3// 08/15/00 Bundle added after call to __libm_error_support to properly//          set [the previously overwritten] GR_Parameter_RESULT.// 09/09/00 Updated fcmp so that qnans do not raise invalid// 12/15/00 Corrected behavior when both args are zero to conform to C99, and//          fixed flag settings for several cases// 05/20/02 Cleaned up namespace and sf0 syntax// 02/10/03 Reordered header: .section, .global, .proc, .align// 12/14/04 Added error handling on underflow.//// API//==============================================================// double nextafter( double x, double y );// input  floating point f8, f9// output floating point f8//// Registers used//==============================================================GR_max_pexp     = r14GR_min_pexp     = r15GR_exp          = r16GR_sig          = r17GR_lnorm_sig    = r18GR_sign_mask    = r19GR_exp_mask     = r20GR_sden_sig     = r21GR_new_sig      = r22GR_new_exp      = r23GR_lden_sig     = r24GR_snorm_sig    = r25GR_exp1         = r26GR_x_exp        = r27GR_min_den_rexp = r28// r36-39 parameters for libm_error_supportGR_SAVE_B0                = r34GR_SAVE_GP                = r35GR_SAVE_PFS               = r32GR_Parameter_X            = r36GR_Parameter_Y            = r37GR_Parameter_RESULT       = r38GR_Parameter_TAG          = r39FR_lnorm_sig       = f10FR_lnorm_exp       = f11FR_lnorm           = f12FR_sden_sig        = f13FR_sden_exp        = f14FR_sden            = f15FR_save_f8         = f33FR_new_exp         = f34FR_new_sig         = f35FR_lden_sig        = f36FR_snorm_sig       = f37FR_exp1            = f38FR_tmp             = f39//// Overview of operation//==============================================================// nextafter determines the next representable value // after x in the direction of y. .section .textGLOBAL_LIBM_ENTRY(nextafter)// Extract signexp from x// Is x < y ?  p10 if yes, p11 if no// Form smallest denormal significand = ulp size{ .mfi      getf.exp GR_exp      = f8      fcmp.lt.s1 p10,p11 = f8, f9                      addl GR_sden_sig = 0x800, r0}// Form largest normal significand 0xfffffffffffff800// Form smallest normal exponent{ .mfi      addl GR_lnorm_sig = -0x800,r0      nop.f 999      addl GR_min_pexp = 0x0fc01, r0 ;;}// Extract significand from x// Is x=y?// Form largest normal exponent{ .mfi      getf.sig GR_sig      = f8      fcmp.eq.s0 p6,p0 = f8, f9                      addl GR_max_pexp = 0x103fe, r0}// Move largest normal significand to fp reg for special cases{ .mfi      setf.sig FR_lnorm_sig = GR_lnorm_sig      nop.f 999      addl GR_sign_mask = 0x20000, r0 ;;}// Move smallest denormal significand and signexp to fp regs// Is x=nan?// Set p12 and p13 based on whether significand increases or decreases// It increases (p12 set) if x<y and x>=0 or if x>y and x<0// It decreases (p13 set) if x<y and x<0  or if x>y and x>=0{ .mfi      setf.sig FR_sden_sig = GR_sden_sig      fclass.m  p8,p0 = f8, 0xc3           (p10) cmp.lt p12,p13 = GR_exp, GR_sign_mask}{ .mfi      setf.exp FR_sden_exp = GR_min_pexp(p11) cmp.ge p12,p13 = GR_exp, GR_sign_mask ;;}.pred.rel "mutex",p12,p13// Form expected new significand, adding or subtracting 1 ulp increment// If x=y set result to y// Form smallest normal significand and largest denormal significand{ .mfi(p12) add GR_new_sig = GR_sig, GR_sden_sig(p6)  fmerge.s f8=f9,f9      dep.z GR_snorm_sig = 1,63,1 // 0x8000000000000000}{ .mlx(p13) sub GR_new_sig = GR_sig, GR_sden_sig      movl GR_lden_sig = 0x7ffffffffffff800 ;;}// Move expected result significand and signexp to fp regs// Is y=nan?// Form new exponent in case result exponent needs incrementing or decrementing{ .mfi      setf.exp FR_new_exp = GR_exp      fclass.m  p9,p0 = f9, 0xc3           (p12) add GR_exp1 = 1, GR_exp}{ .mib      setf.sig FR_new_sig = GR_new_sig(p13) add GR_exp1 = -1, GR_exp(p6)  br.ret.spnt    b0 ;;             // Exit if x=y}// Move largest normal signexp to fp reg for special cases// Is x=zero?{ .mfi      setf.exp FR_lnorm_exp = GR_max_pexp      fclass.m  p7,p0 = f8, 0x7      nop.i 999}{ .mfb      nop.m 999(p8)  fma.s0 f8 = f8,f1,f9                     (p8)  br.ret.spnt    b0 ;;             // Exit if x=nan}// Move exp+-1 and smallest normal significand to fp regs for special cases// Is x=inf?{ .mfi      setf.exp FR_exp1 = GR_exp1      fclass.m  p6,p0 = f8, 0x23                 addl GR_exp_mask = 0x1ffff, r0}{ .mfb      setf.sig FR_snorm_sig = GR_snorm_sig(p9)  fma.s0 f8 = f8,f1,f9                     (p9)  br.ret.spnt    b0 ;;             // Exit if y=nan}// Move largest denormal significand to fp regs for special cases// Save x{ .mfb      setf.sig FR_lden_sig = GR_lden_sig      mov FR_save_f8 = f8(p7)  br.cond.spnt NEXT_ZERO ;;   // Exit if x=0   }// Mask off the sign to get x_exp{ .mfb      and GR_x_exp = GR_exp_mask, GR_exp      nop.f 999(p6)  br.cond.spnt NEXT_INF ;;   // Exit if x=inf   }// Check 6 special cases when significand rolls over://  1 sig size incr, x_sig=max_sig, x_exp < max_exp//     Set p6, result is sig=min_sig, exp++//  2 sig size incr, x_sig=max_sig, x_exp >= max_exp//     Set p7, result is inf, signal overflow//  3 sig size decr, x_sig=min_sig, x_exp > min_exp//     Set p8, result is sig=max_sig, exp--//  4 sig size decr, x_sig=min_sig, x_exp = min_exp//     Set p9, result is sig=max_den_sig, exp same, signal underflow and inexact//  5 sig size decr, x_sig=min_den_sig, x_exp = min_exp//     Set p10, result is zero, sign of x, signal underflow and inexact//  6 sig size decr, x_sig=min_sig, x_exp < min_exp //     Set p14, result is zero, sign of x, signal underflow and inexact//// Form exponent of smallest double denormal (if normalized register format){ .mmi      adds GR_min_den_rexp = -52, GR_min_pexp(p12) cmp.eq.unc p6,p0 = GR_new_sig, r0(p13) cmp.eq.unc p8,p10 = GR_new_sig, GR_lden_sig ;;}{ .mmi(p6)  cmp.lt.unc p6,p7 = GR_x_exp, GR_max_pexp(p8)  cmp.gt.unc p8,p9 = GR_x_exp, GR_min_pexp(p10) cmp.eq.unc p10,p0 = GR_new_sig, r0 ;;}// Create small normal in case need to generate underflow flag{ .mfi(p10) cmp.le.unc p10,p0 = GR_x_exp, GR_min_pexp      fmerge.se FR_tmp = FR_sden_exp, FR_lnorm_sig(p9)  cmp.gt.unc p9,p14 = GR_x_exp, GR_min_den_rexp}// Branch if cases 1, 2, 3{ .bbb(p6)  br.cond.spnt NEXT_EXPUP(p7)  br.cond.spnt NEXT_OVERFLOW(p8)  br.cond.spnt NEXT_EXPDOWN ;;}// Branch if cases 4, 5, 6{ .bbb(p9)  br.cond.spnt NEXT_NORM_TO_DENORM(p10) br.cond.spnt NEXT_UNDERFLOW_TO_ZERO(p14) br.cond.spnt NEXT_UNDERFLOW_TO_ZERO ;;}// Here if no special cases// Set p6 if result will be a denormal, so can force underflow flag//    Case 1:  x_exp=min_exp, x_sig=unnormalized//    Case 2:  x_exp<min_exp{ .mfi      cmp.lt p6,p7 = GR_x_exp, GR_min_pexp      fmerge.se f8 = FR_new_exp, FR_new_sig      nop.i 999 ;;}{ .mfi      nop.m 999      nop.f 999(p7)  tbit.z p6,p0 = GR_new_sig, 63 ;;}NEXT_COMMON_FINISH:// Force underflow and inexact if denormal result{ .mfi      nop.m 999(p6)  fma.d.s0 FR_tmp = FR_tmp,FR_tmp,f0      nop.i 999}{ .mfb      nop.m 999      fnorm.d.s0 f8 = f8 // Final normalization to result precision(p6)  br.cond.spnt NEXT_UNDERFLOW ;;}{ .mfb      nop.m 999      nop.f 999      br.ret.sptk b0;;}//Special casesNEXT_EXPUP:{ .mfb      cmp.lt p6,p7 = GR_x_exp, GR_min_pexp      fmerge.se f8 = FR_exp1, FR_snorm_sig      br.cond.sptk NEXT_COMMON_FINISH ;;}NEXT_EXPDOWN:{ .mfb      cmp.lt p6,p7 = GR_x_exp, GR_min_pexp      fmerge.se f8 = FR_exp1, FR_lnorm_sig      br.cond.sptk NEXT_COMMON_FINISH ;;}NEXT_NORM_TO_DENORM:{ .mfi      nop.m 999      fmerge.se f8 = FR_new_exp, FR_lden_sig      nop.i 999}// Force underflow and inexact if denormal result{ .mfb      nop.m 999      fma.d.s0 FR_tmp = FR_tmp,FR_tmp,f0      br.cond.sptk NEXT_UNDERFLOW ;;}NEXT_UNDERFLOW_TO_ZERO:{ .mfb      cmp.eq p6,p0 = r0,r0      fmerge.s f8 = FR_save_f8,f0      br.cond.sptk NEXT_COMMON_FINISH ;;}NEXT_INF: // Here if f8 is +- infinity// INF// if f8 is +inf, no matter what y is return  largest double// if f8 is -inf, no matter what y is return -largest double{ .mfi      nop.m 999      fmerge.se FR_lnorm = FR_lnorm_exp,FR_lnorm_sig      nop.i 999 ;;}{ .mfb      nop.m 999      fmerge.s f8 = f8,FR_lnorm                      br.ret.sptk    b0 ;;                        }NEXT_ZERO: // Here if f8 is +- zero// ZERO// if f8 is zero and y is +, return + smallest double denormal // if f8 is zero and y is -, return - smallest double denormal { .mfi      nop.m 999      fmerge.se FR_sden = FR_sden_exp,FR_sden_sig      nop.i 999 ;;}// Create small normal to generate underflow flag{ .mfi      nop.m 999      fmerge.se FR_tmp = FR_sden_exp, FR_lnorm_sig      nop.i 999 ;;}// Add correct sign from direction arg{ .mfi      nop.m 999      fmerge.s f8 = f9,FR_sden                      nop.i 999 ;;}// Force underflow and inexact flags{ .mfb      nop.m 999      fma.d.s0 FR_tmp = FR_tmp,FR_tmp,f0      br.cond.sptk NEXT_UNDERFLOW ;;}NEXT_UNDERFLOW: // Here if result is a denorm, or input is finite and result is zero// Call error support to report possible range error{ .mib      alloc          r32=ar.pfs,2,2,4,0      mov           GR_Parameter_TAG = 268      // Error code      br.cond.sptk  __libm_error_region    // Branch to error call};;NEXT_OVERFLOW: // Here if input is finite, but result will be infinite// Use frcpa to generate infinity of correct sign// Call error support to report possible range error{ .mfi      alloc          r32=ar.pfs,2,2,4,0      frcpa.s1 f8,p6 = FR_save_f8, f0      nop.i 999 ;;}// Create largest double{ .mfi      nop.m 999      fmerge.se FR_lnorm = FR_lnorm_exp,FR_lnorm_sig      nop.i 999 ;;}// Force overflow and inexact flags to be set{ .mfb      mov           GR_Parameter_TAG = 154      // Error code      fma.d.s0 FR_tmp = FR_lnorm,FR_lnorm,f0      br.cond.sptk  __libm_error_region    // Branch to error call};;GLOBAL_LIBM_END(nextafter)LOCAL_LIBM_ENTRY(__libm_error_region).prologue// (1){ .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};;// (2){ .mmi        stfd [GR_Parameter_Y] = f9,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// (3){ .mib        stfd [GR_Parameter_X] = FR_save_f8              // STORE Parameter 1 on stack        add   GR_Parameter_RESULT = 0,GR_Parameter_Y           // Parameter 3 address        nop.b 0                                }{ .mib        stfd [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        nop.m 0        nop.m 0        add   GR_Parameter_RESULT = 48,sp};;// (4){ .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#

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级视频在线观看| 日韩激情在线观看| 国产大陆a不卡| 欧美国产一区在线| 91亚洲国产成人精品一区二三 | 国产激情精品久久久第一区二区| 亚洲免费观看在线视频| 91高清视频免费看| 日本亚洲电影天堂| 国产婷婷色一区二区三区四区| jizz一区二区| 亚洲成人精品一区二区| 欧美成人一区二区三区片免费| 国产精品白丝jk白祙喷水网站| 国产精品乱码人人做人人爱| 在线观看亚洲专区| 麻豆国产精品官网| 国产精品午夜久久| 精品国产乱码久久久久久久| av一区二区三区黑人| 国产在线播放一区三区四| 国产精品毛片大码女人| 久久久影视传媒| 欧洲人成人精品| 91在线国产观看| 视频一区中文字幕国产| 一区二区久久久久久| 欧美r级在线观看| 欧美一区二区三区性视频| 国产乱码精品一区二区三区五月婷| 青青青爽久久午夜综合久久午夜| 国产精品少妇自拍| 欧美经典一区二区| 欧美图片一区二区三区| 国产一区二区三区香蕉| 精品一区二区三区在线播放视频| 亚洲狼人国产精品| 久久午夜免费电影| 欧美日韩国产综合草草| 国产成人超碰人人澡人人澡| 国产精品一卡二卡| 国产在线视视频有精品| 亚洲成人激情综合网| 亚洲成人午夜电影| 日韩福利电影在线| 另类小说一区二区三区| 一区二区三区在线观看欧美| 亚洲精品高清在线观看| 一区二区三区四区视频精品免费| 一区二区三区影院| 亚洲国产精品久久人人爱| 国产精品网站在线| 国产精品系列在线| 亚洲免费视频中文字幕| 亚洲靠逼com| 爽爽淫人综合网网站| 久久精品久久综合| 国产精品99久久久久久宅男| 成人综合婷婷国产精品久久| 午夜激情综合网| 亚洲综合精品久久| 亚洲日本护士毛茸茸| 日韩免费性生活视频播放| 69久久夜色精品国产69蝌蚪网| 成人黄色软件下载| 国产成人精品影视| 91在线视频官网| 91麻豆精品国产91久久久使用方法| 欧美一区二区三区四区在线观看 | 欧美xfplay| 欧美国产一区视频在线观看| 亚洲精选视频在线| 奇米影视一区二区三区| 国产99久久久国产精品| 日韩高清不卡一区二区三区| 国产一区二区电影| 色呦呦一区二区三区| 国产丶欧美丶日本不卡视频| 色网站国产精品| 欧美变态tickling挠脚心| 一区精品在线播放| 国产欧美日韩在线视频| 亚洲男人天堂一区| 麻豆精品一区二区三区| 成人国产精品免费网站| 4438x亚洲最大成人网| 国产人成一区二区三区影院| 亚洲电影第三页| 成人国产精品视频| 欧美成人猛片aaaaaaa| 亚洲欧美激情一区二区| 麻豆久久一区二区| 在线区一区二视频| 国产精品久久一级| 一区二区视频在线看| 精品伊人久久久久7777人| 色菇凉天天综合网| 久久精品一区蜜桃臀影院| 午夜精品久久久久久久久久久| 成人免费av资源| 精品国产一区二区三区忘忧草| 亚洲免费大片在线观看| 国产精品资源网站| 日韩三级在线免费观看| 欧美激情一区二区三区全黄| 日韩精品亚洲专区| 欧美综合一区二区三区| 中文字幕第一区综合| 精品一区二区在线视频| 欧美日韩在线不卡| 一区二区三区影院| 91麻豆自制传媒国产之光| 久久日韩粉嫩一区二区三区| 亚洲va欧美va人人爽| 91同城在线观看| 国产精品色哟哟| 高清成人免费视频| 精品99一区二区三区| 蜜桃久久精品一区二区| 欧美精品久久99久久在免费线| 久久综合成人精品亚洲另类欧美| 午夜久久久久久| 91福利视频网站| 亚洲最大成人网4388xx| 色综合久久久久综合体桃花网| 国产精品视频一二三区| 成人av网址在线| 国产精品二三区| av中文一区二区三区| 国产精品久久久久久久久果冻传媒| 国产一区二区剧情av在线| 精品成人a区在线观看| 蜜臀av在线播放一区二区三区| 欧美精品第1页| 日精品一区二区| 日韩一区二区免费电影| 日本美女一区二区| 精品区一区二区| 国产一区二区三区久久悠悠色av| 精品成人一区二区三区四区| 国产中文字幕精品| 国产三级三级三级精品8ⅰ区| 成人午夜精品一区二区三区| 1区2区3区精品视频| 91麻豆产精品久久久久久| 亚洲一区二区三区中文字幕 | 免费观看在线色综合| 欧美一区二区三区在| 久久精工是国产品牌吗| 久久午夜国产精品| 成人高清在线视频| 一区二区在线免费| 欧美日韩久久久久久| 麻豆精品精品国产自在97香蕉| 欧美成人一区二区三区在线观看| 国产乱子伦视频一区二区三区 | 狠狠网亚洲精品| 亚洲国产成人午夜在线一区| www.在线欧美| 亚洲一区二区偷拍精品| 欧美一区二区三区免费| 国产不卡在线一区| 亚洲精品国产一区二区精华液| 欧美日韩精品福利| 国产一区二区三区最好精华液| 国产精品嫩草99a| 欧美日韩一卡二卡| 国产精品综合一区二区三区| 亚洲视频一区在线| 欧美一区二区私人影院日本| 国产成人av一区二区三区在线观看| 亚洲女同女同女同女同女同69| 欧美日韩一卡二卡| 国产高清不卡一区二区| 一区二区三区美女| 337p日本欧洲亚洲大胆精品| 99久久99久久免费精品蜜臀| 亚洲不卡在线观看| 国产欧美视频一区二区三区| 欧美日韩在线直播| 国产成人精品影视| 婷婷中文字幕综合| 国产精品卡一卡二| 欧美一二三区在线观看| 91丨porny丨国产入口| 久久不见久久见免费视频1| 自拍偷拍欧美激情| 精品对白一区国产伦| 在线亚洲免费视频| 国产一区二区免费在线| 亚洲国产中文字幕| 国产精品沙发午睡系列990531| 欧美一区二区三区在线观看视频| 99久久99久久免费精品蜜臀| 久久国产精品色婷婷| 亚洲成人免费看| 亚洲天堂2014| 国产精品污网站| 久久一日本道色综合| 欧美巨大另类极品videosbest|