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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? s_nexttoward.s

?? glibc 庫, 不僅可以學習使用庫函數,還可以學習函數的具體實現,是提高功力的好資料
?? S
字號:
.file "nexttoward.s"// Copyright (c) 2001 - 2004, Intel Corporation// All rights reserved.//// Contributed 2001 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//==============================================================// 08/15/01 Initial version // 08/23/01 Corrected error tag number// 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 nexttoward( double x, long 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//==============================================================// nexttoward determines the next representable value // after x in the direction of y. .section .textGLOBAL_LIBM_ENTRY(nexttoward)// 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)  fnorm.d.s0 f8=f9  //Normalise      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 = 271      // 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 = 199      // 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(nexttoward)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#

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲主播在线观看| 91国产视频在线观看| 99re热视频这里只精品| 91精品国产欧美一区二区18| 国产精品色呦呦| 免费在线观看一区二区三区| 成人国产精品免费观看视频| 91精品麻豆日日躁夜夜躁| 成人免费在线播放视频| 国产专区综合网| 4438成人网| 一区二区三区.www| 99久久99久久综合| 国产性做久久久久久| 免费看欧美女人艹b| 欧美三级资源在线| 亚洲男人电影天堂| 成人99免费视频| 久久精品人人做人人综合| 日韩中文字幕91| 精品视频一区二区三区免费| 亚洲男帅同性gay1069| 高清久久久久久| 国产人妖乱国产精品人妖| 久草在线在线精品观看| 欧美久久免费观看| 香蕉成人伊视频在线观看| 91久久精品一区二区三区| 亚洲欧洲日本在线| 91免费国产在线观看| 国产精品卡一卡二| va亚洲va日韩不卡在线观看| 国产婷婷色一区二区三区四区 | 久久国产视频网| 91精品国产一区二区| 五月婷婷激情综合网| 欧美挠脚心视频网站| 视频一区视频二区中文字幕| 欧美色图在线观看| 日韩电影免费在线看| 91麻豆精品国产91久久久资源速度| 亚洲影视在线播放| 欧美日韩高清不卡| 日本不卡的三区四区五区| 日韩一级精品视频在线观看| 久久电影国产免费久久电影| 久久综合色8888| 国产99一区视频免费| 国产精品短视频| 色久综合一二码| 视频一区中文字幕国产| 精品久久久久久久久久久院品网| 国产精品一区三区| 亚洲私人黄色宅男| 欧美日韩国产高清一区| 麻豆一区二区在线| 日本一区二区综合亚洲| 91蜜桃免费观看视频| 偷拍日韩校园综合在线| 日韩美女一区二区三区四区| 成人一区在线看| 亚洲午夜久久久久久久久久久| 91麻豆精品国产91久久久久| 狠狠久久亚洲欧美| 亚洲欧洲三级电影| 91精品国产福利| 成人app软件下载大全免费| 午夜久久久影院| 国产日韩精品一区| 欧美性生交片4| 国产精品自拍一区| 亚洲自拍另类综合| 久久久天堂av| 欧美亚洲国产一卡| 国产一区二区免费看| 亚洲综合色在线| 久久亚洲影视婷婷| 欧美亚洲禁片免费| 成人网男人的天堂| 日韩高清在线观看| 亚洲欧美日韩电影| 久久美女艺术照精彩视频福利播放 | eeuss鲁一区二区三区| 无码av免费一区二区三区试看| 欧美激情一区三区| 日韩一区二区在线播放| 91视频观看视频| 久久激情五月婷婷| 亚洲二区视频在线| 亚洲欧洲精品一区二区精品久久久| 欧美一区二区三区啪啪| 在线免费观看日韩欧美| 国产成人免费9x9x人网站视频| 日韩电影在线免费| 亚洲精品免费一二三区| 国产欧美精品一区二区色综合| 制服丝袜成人动漫| 欧美视频一区二区三区在线观看| 不卡一卡二卡三乱码免费网站| 久久爱另类一区二区小说| 亚洲伊人伊色伊影伊综合网| 国产精品你懂的在线| 国产亚洲自拍一区| 欧美tk—视频vk| 欧美一区二区视频观看视频| 欧美在线免费观看亚洲| av动漫一区二区| 成人av中文字幕| 国产成人免费视频网站 | 亚洲国产欧美一区二区三区丁香婷| 久久久久97国产精华液好用吗| 欧美丰满高潮xxxx喷水动漫| 欧美亚洲一区二区在线| 欧美中文字幕一区二区三区| 99vv1com这只有精品| 成人午夜在线播放| 国产成人99久久亚洲综合精品| 国产精品夜夜爽| 国产精品一区二区黑丝| 国产又黄又大久久| 国产曰批免费观看久久久| 国产一区二区三区最好精华液| 国产精品一色哟哟哟| 成人黄色软件下载| 91一区在线观看| 欧美色图在线观看| 91麻豆精品国产91| 久久亚洲一级片| 国产精品久久看| 亚洲天堂免费看| 亚洲国产精品一区二区久久恐怖片| 婷婷久久综合九色综合绿巨人| 午夜精品免费在线| 久久99精品国产麻豆婷婷| 国产一区不卡视频| caoporen国产精品视频| 色94色欧美sute亚洲13| 欧美精品一卡二卡| 精品理论电影在线| 国产精品久久久久久久久免费相片 | 成人精品视频.| 日本高清不卡aⅴ免费网站| 欧美在线|欧美| 日韩一区二区三区高清免费看看| 久久久久久久久伊人| 亚洲精品中文字幕乱码三区| 午夜视频一区二区三区| 久久成人免费电影| 成人高清伦理免费影院在线观看| 99国产精品久久| 欧美福利视频一区| 中文字幕在线一区免费| 亚洲h精品动漫在线观看| 国产在线麻豆精品观看| 91麻豆自制传媒国产之光| 欧美精品v国产精品v日韩精品| 久久人人爽人人爽| 亚洲成av人影院| 国产激情一区二区三区四区| 欧美制服丝袜第一页| 久久久午夜精品理论片中文字幕| 亚洲中国最大av网站| 国产电影一区在线| 在线播放欧美女士性生活| 国产精品网友自拍| 免费成人在线影院| 在线观看日产精品| 亚洲国产精品99久久久久久久久| 午夜精品爽啪视频| 色香蕉久久蜜桃| 久久久久久久久久久黄色| 午夜精品在线视频一区| 色综合网色综合| 国产欧美日韩久久| 精品亚洲国产成人av制服丝袜| 色av一区二区| 欧美国产激情二区三区| 久久99国产精品久久| 欧美电影一区二区| 亚洲午夜免费电影| 日本韩国精品一区二区在线观看| 国产日韩欧美激情| 国产不卡高清在线观看视频| 91精品国产免费| 日韩黄色在线观看| 欧美高清一级片在线| 亚洲一区二区五区| 在线观看网站黄不卡| 亚洲另类在线一区| 色8久久人人97超碰香蕉987| 国产欧美精品一区二区色综合| 国产成人一区在线| 久久久国产午夜精品| 国产乱码精品一区二区三| 精品国产精品网麻豆系列 | 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 精品美女被调教视频大全网站| 一级女性全黄久久生活片免费| 不卡的电影网站| 国产亚洲综合色|