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

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

?? e_fmodf.s

?? glibc 庫, 不僅可以學習使用庫函數,還可以學習函數的具體實現,是提高功力的好資料
?? S
字號:
.file "fmodf.s"// Copyright (c) 2000 - 2003, 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/02/00 New Algorithm// 04/04/00 Unwind support added// 08/15/00 Bundle added after call to __libm_error_support to properly//          set [the previously overwritten] GR_Parameter_RESULT.// 11/28/00 Set FR_Y to f9// 03/11/02 Fixed flags for fmodf(qnan,zero)// 05/20/02 Cleaned up namespace and sf0 syntax// 02/10/03 Reordered header: .section, .global, .proc, .align// 04/28/03 Fix: fmod(sNaN,0) no longer sets errno//// API//====================================================================// float fmodf(float,float);//// Overview of operation//====================================================================//  fmod(a,b)=a-i*b,//  where i is an integer such that, if b!=0,//  |i|<|a/b| and |a/b-i|<1// Algorithm//====================================================================// a). if |a|<|b|, return a// b). get quotient and reciprocal overestimates accurate to//     33 bits (q2,y2)// c). if the exponent difference (exponent(a)-exponent(b))//     is less than 32, truncate quotient to integer and//     finish in one iteration// d). if exponent(a)-exponent(b)>=32 (q2>=2^32)//     round quotient estimate to single precision (k=RN(q2)),//     calculate partial remainder (a'=a-k*b),//     get quotient estimate (a'*y2), and repeat from c).// Special cases//====================================================================// b=+/-0: return NaN, call libm_error_support// a=+/-Inf, a=NaN or b=NaN: return NaN// Registers used//====================================================================// Predicate registers: p6-p11// General registers:   r2,r29,r32 (ar.pfs), r33-r39// Floating point registers: f6-f15GR_SAVE_B0                    = r33GR_SAVE_PFS                   = r34GR_SAVE_GP                    = r35GR_SAVE_SP                    = r36GR_Parameter_X                = r37GR_Parameter_Y                = r38GR_Parameter_RESULT           = r39GR_Parameter_TAG              = r40FR_X             = f10FR_Y             = f9FR_RESULT        = f8.section .textGLOBAL_IEEE754_ENTRY(fmodf)// inputs in f8, f9// result in f8{ .mfi  alloc r32=ar.pfs,1,4,4,0  // f6=|a|  fmerge.s f6=f0,f8  mov r2 = 0x0ffdd}  {.mfi  nop.m 0  // f7=|b|  fmerge.s f7=f0,f9  nop.i 0;;}{ .mfi  setf.exp f11 = r2  // (1) y0  frcpa.s1 f10,p6=f6,f7  nop.i 0}// eliminate special cases// Y +-NAN, +-inf, +-0?     p7{ .mfi      nop.m 999      fclass.m.unc  p7,p0 = f9, 0xe7      nop.i 999;;}// qnan snan inf norm     unorm 0 -+// 1    1    1   0        0     0 11// e                      3// X +-NAN, +-inf, ?        p9{ .mfi      nop.m 999      fclass.m.unc  p9,p0 = f8, 0xe3      nop.i 999}// |x| < |y|? Return x p8{ .mfi      nop.m 999      fcmp.lt.unc.s1 p8,p0 = f6,f7      nop.i 999 ;;}{ .mfi  nop.m 0  // normalize y (if |x|<|y|)  (p8) fma.s0 f9=f9,f1,f0  nop.i 0;;}  { .mfi  mov r2=0x1001f  // (2) q0=a*y0  (p6) fma.s1 f13=f6,f10,f0  nop.i 0}{ .mfi  nop.m 0  // (3) e0 = 1 - b * y0  (p6) fnma.s1 f12=f7,f10,f1  nop.i 0;;}  {.mfi  nop.m 0  // normalize x (if |x|<|y|)  (p8) fma.s.s0 f8=f8,f1,f0  nop.i 0}{.bbb  (p9) br.cond.spnt FMOD_X_NAN_INF  (p7) br.cond.spnt FMOD_Y_NAN_INF_ZERO  // if |x|<|y|, return  (p8) br.ret.spnt    b0;;}  {.mfi  nop.m 0  // normalize x  fma.s0 f6=f6,f1,f0  nop.i 0}{.mfi  nop.m 0  // normalize y  fma.s0 f7=f7,f1,f0  nop.i 0;;}  {.mfi  // f15=2^32  setf.exp f15=r2  // (4) q1=q0+e0*q0  (p6) fma.s1 f13=f12,f13,f13  nop.i 0}{ .mfi  nop.m 0  // (5) e1 = e0 * e0 + 2^-34  (p6) fma.s1 f14=f12,f12,f11  nop.i 0;;}{.mlx  nop.m 0  movl r2=0x33a00000;;}{ .mfi  nop.m 0  // (6) y1 = y0 + e0 * y0  (p6) fma.s1 f10=f12,f10,f10  nop.i 0;;}{.mfi  // set f12=1.25*2^{-24}  setf.s f12=r2  // (7) q2=q1+e1*q1  (p6) fma.s1 f13=f13,f14,f13  nop.i 0;;}{.mfi  nop.m 0  fmerge.s f9=f8,f9  nop.i 0}{ .mfi  nop.m 0  // (8) y2 = y1 + e1 * y1  (p6) fma.s1 f10=f14,f10,f10  // set p6=0, p10=0  cmp.ne.and p6,p10=r0,r0;;}.align 32loop24:  {.mfi  nop.m 0  // compare q2, 2^32  fcmp.lt.unc.s1 p8,p7=f13,f15  nop.i 0}  {.mfi  nop.m 0  // will truncate quotient to integer, if exponent<32 (in advance)  fcvt.fx.trunc.s1 f11=f13  nop.i 0;;}  {.mfi  nop.m 0  // if exponent>32, round quotient to single precision (perform in advance)  fma.s.s1 f13=f13,f1,f0  nop.i 0;;}  {.mfi  nop.m 0  // set f12=sgn(a)  (p8) fmerge.s f12=f8,f1  nop.i 0}  {.mfi  nop.m 0  // normalize truncated quotient  (p8) fcvt.xf f13=f11  nop.i 0;;}  { .mfi  nop.m 0  // calculate remainder (assuming f13=RZ(Q))  (p7) fnma.s1 f14=f13,f7,f6  nop.i 0}  {.mfi  nop.m 0  // also if exponent>32, round quotient to single precision  // and subtract 1 ulp: q=q-q*(1.25*2^{-24})  (p7) fnma.s.s1 f11=f13,f12,f13  nop.i 0;;}  {.mfi  nop.m 0  // (p8) calculate remainder (82-bit format)  (p8) fnma.s1 f11=f13,f7,f6  nop.i 0}  {.mfi  nop.m 0  // (p7) calculate remainder (assuming f11=RZ(Q))  (p7) fnma.s1 f6=f11,f7,f6  nop.i 0;;}  {.mfi  nop.m 0  // Final iteration (p8): is f6 the correct remainder (quotient was not overestimated) ?  (p8) fcmp.lt.unc.s1 p6,p10=f11,f0  nop.i 0;;}  {.mfi  nop.m 0  // get new quotient estimation: a'*y2  (p7) fma.s1 f13=f14,f10,f0  nop.i 0}  {.mfb  nop.m 0  // was f14=RZ(Q) ? (then new remainder f14>=0)  (p7) fcmp.lt.unc.s1 p7,p9=f14,f0  nop.b 0;;}.pred.rel "mutex",p6,p10  {.mfb  nop.m 0  // add b to estimated remainder (to cover the case when the quotient was overestimated)  // also set correct sign by using f9=|b|*sgn(a), f12=sgn(a)  (p6) fma.s.s0 f8=f11,f12,f9  nop.b 0}  {.mfb  nop.m 0  // calculate remainder (single precision)  // set correct sign of result before returning  (p10) fma.s.s0 f8=f11,f12,f0  (p8) br.ret.sptk b0;;}  {.mfi  nop.m 0  // if f13!=RZ(Q), get alternative quotient estimation: a''*y2  (p7) fma.s1 f13=f6,f10,f0  nop.i 0}  {.mfb  nop.m 0  // if f14 was RZ(Q), set remainder to f14  (p9) mov f6=f14  br.cond.sptk loop24;;}  {  .mmb    nop.m 0    nop.m 0    br.ret.sptk b0;; }FMOD_X_NAN_INF:// Y zero ?{.mfi  nop.m 0  fclass.m p10,p0=f8,0xc3     // Test x=nan  nop.i 0}{.mfi  nop.m 0  fma.s1 f10=f9,f1,f0  nop.i 0;;}{.mfi  nop.m 0  fma.s0 f8=f8,f1,f0  nop.i 0}{.mfi  nop.m 0(p10) fclass.m p10,p0=f9,0x07 // Test x=nan, and y=zero  nop.i 0;;}{.mfb nop.m 0 fcmp.eq.unc.s1 p11,p0=f10,f0(p10) br.ret.spnt b0;;        // Exit with result=x if x=nan and y=zero}{.mib  nop.m 0  nop.i 0  // if Y zero  (p11) br.cond.spnt FMOD_Y_ZERO;;}// X infinity? Return QNAN indefinite{ .mfi      nop.m 999      fclass.m.unc  p8,p9 = f8, 0x23      nop.i 999;;}// Y NaN ?{.mfi     nop.m 999(p8) fclass.m p9,p8=f9,0xc3     nop.i 0;;}{.mfi    nop.m 999(p8)  frcpa.s0 f8,p0 = f8,f8    nop.i 0}{ .mfi      nop.m 999    // also set Denormal flag if necessary(p8)  fma.s0 f9=f9,f1,f0      nop.i 999 ;;}{ .mfb      nop.m 999(p8)  fma.s.s0 f8=f8,f1,f0      nop.b 999 ;;}{ .mfb      nop.m 999(p9)  frcpa.s0 f8,p7=f8,f9      br.ret.sptk    b0 ;;}FMOD_Y_NAN_INF_ZERO:// Y INF{ .mfi      nop.m 999      fclass.m.unc  p7,p0 = f9, 0x23      nop.i 999 ;;}{ .mfb      nop.m 999(p7)  fma.s.s0 f8=f8,f1,f0(p7)  br.ret.spnt    b0 ;;}// Y NAN?{ .mfi      nop.m 999      fclass.m.unc  p9,p0 = f9, 0xc3      nop.i 999 ;;}{ .mfb      nop.m 999(p9)  fma.s.s0 f8=f9,f1,f0(p9)  br.ret.spnt    b0 ;;}FMOD_Y_ZERO:// Y zero? Must be zero at this point// because it is the only choice left.// Return QNAN indefinite{.mfi  nop.m 0  // set Invalid  frcpa.s0 f12,p0=f0,f0  nop.i 999}// X NAN?{ .mfi      nop.m 999      fclass.m.unc  p9,p10 = f8, 0xc3      nop.i 999 ;;}{ .mfi      nop.m 999(p10)  fclass.nm  p9,p10 = f8, 0xff      nop.i 999 ;;}{.mfi nop.m 999 (p9) frcpa.s0 f11,p7=f8,f0 nop.i 0;;}{ .mfi      nop.m 999(p10) frcpa.s0 f11,p7 = f0,f0nop.i 999;;}{ .mfi      nop.m 999      fmerge.s      f10 = f8, f8      nop.i 999}{ .mfi      nop.m 999      fma.s.s0 f8=f11,f1,f0      nop.i 999;;}EXP_ERROR_RETURN:{ .mib      nop.m 0      mov GR_Parameter_TAG=122      br.sptk __libm_error_region;;}GLOBAL_IEEE754_END(fmodf)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] = FR_Y,16         // Save 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] = FR_X            // Store Parameter 1 on stack        add   GR_Parameter_RESULT = 0,GR_Parameter_Y    nop.b 0                                 // Parameter 3 address}{ .mib        stfs [GR_Parameter_Y] = FR_RESULT      // 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};;{ .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 + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品夜色噜噜亚洲a∨| 91精品国产综合久久精品app| 国产精品系列在线| 秋霞成人午夜伦在线观看| 日韩精品专区在线影院重磅| 国产毛片精品国产一区二区三区| 亚洲欧洲中文日韩久久av乱码| 欧美精品第一页| 99久久婷婷国产| 亚洲精品国久久99热| 欧美色视频一区| aaa国产一区| 国产老肥熟一区二区三区| 一区二区三区四区不卡在线| 久久久亚洲午夜电影| 欧美日韩在线亚洲一区蜜芽| 91首页免费视频| 国产一区二区在线看| 免费观看日韩电影| 亚洲国产wwwccc36天堂| 国产精品久久久久久久久免费桃花| 日韩视频在线观看一区二区| 欧日韩精品视频| 色综合久久综合中文综合网| 成人在线综合网| 日本一道高清亚洲日美韩| 一区二区三区不卡视频在线观看 | 韩国v欧美v日本v亚洲v| 日韩影院在线观看| 丝袜脚交一区二区| 亚洲一本大道在线| 亚洲一区影音先锋| 亚洲自拍偷拍九九九| 国产超碰在线一区| 国产一区二区视频在线播放| 经典三级在线一区| 国产一区二区福利| 国产成人在线视频网址| 国产ts人妖一区二区| 亚洲人成在线播放网站岛国| 综合久久久久久久| 亚洲精品国久久99热| 亚洲一区二区三区小说| 亚洲国产成人av| 免费精品99久久国产综合精品| 蜜臀av一区二区在线免费观看 | 亚洲欧美激情视频在线观看一区二区三区| 欧美亚洲尤物久久| 欧美日韩国产精品成人| 337p亚洲精品色噜噜狠狠| 欧美tickling挠脚心丨vk| 欧美成人一区二区三区片免费| 精品国产免费视频| 久久久一区二区三区捆绑**| 欧美精品一区二区三区四区| 国产精品狼人久久影院观看方式| 亚洲欧美日韩在线不卡| 亚洲成人av一区| 国产精品中文字幕欧美| 99久久免费视频.com| 91在线视频网址| 欧美精品777| 欧美激情一区三区| 五月激情综合网| 国产·精品毛片| 4438成人网| 国产精品伦理在线| 99久久99久久久精品齐齐| 欧美丝袜丝交足nylons图片| 精品久久国产97色综合| 亚洲免费观看视频| 精品一区二区三区免费毛片爱| 成人美女视频在线看| 色先锋aa成人| 国产欧美日韩精品一区| 五月天婷婷综合| 91影院在线观看| 久久久久久免费| 视频一区二区国产| 色妞www精品视频| 精品少妇一区二区三区视频免付费| 国产精品久久久久久妇女6080| 亚洲图片欧美色图| 国产成人亚洲综合a∨猫咪| 欧美一区二区三区免费在线看| 国产精品成人免费在线| 中文字幕在线免费不卡| 国产精品99久久久久久宅男| 欧美三级电影在线观看| 中文字幕在线不卡| 国产精品一区二区在线看| 国产一区二区视频在线播放| 欧美一级夜夜爽| 亚洲第一av色| 91亚洲精华国产精华精华液| 2020国产精品久久精品美国| 天堂在线一区二区| 成人av动漫网站| 国产精品久久久久久亚洲伦| 极品尤物av久久免费看| 日韩你懂的电影在线观看| 日韩成人伦理电影在线观看| 本田岬高潮一区二区三区| 精品国产麻豆免费人成网站| 偷拍亚洲欧洲综合| 欧美日韩国产高清一区二区三区 | 欧美视频一区二区在线观看| 亚洲图片激情小说| 亚洲国产日日夜夜| 欧美天堂亚洲电影院在线播放| 一区二区三区成人在线视频| 国产69精品久久久久毛片| 国产亚洲制服色| 免费人成精品欧美精品| 欧美日韩国产综合一区二区三区| 国产色产综合产在线视频| 国产福利精品一区| 久久久三级国产网站| 国产成人激情av| 国产精品久99| 成人一道本在线| 91精品国产丝袜白色高跟鞋| 日本不卡1234视频| 99国产一区二区三精品乱码| 国产欧美1区2区3区| 国产福利电影一区二区三区| 国产精品三级电影| 色香色香欲天天天影视综合网| 亚洲香蕉伊在人在线观| 欧美美女激情18p| 捆绑变态av一区二区三区| 久久精品无码一区二区三区| 99久久精品免费| 久久久久久久久久久久久夜| 亚洲国产欧美另类丝袜| 欧美一区二区性放荡片| 国产精品一卡二卡| 精品久久久久久综合日本欧美| 亚洲国产成人精品视频| 日韩久久精品一区| 国产一区三区三区| 亚洲欧美日韩在线| 欧美一级高清片在线观看| 久久精品国产网站| 国产欧美精品日韩区二区麻豆天美| 黄页网站大全一区二区| 亚洲色图清纯唯美| 91丨porny丨首页| 久久精工是国产品牌吗| 日韩不卡一区二区三区| 亚洲五月六月丁香激情| 日韩美女啊v在线免费观看| 亚洲另类春色国产| 蜜桃精品在线观看| 成人性生交大片免费| 日本久久一区二区| 欧美日韩国产综合久久| 久久久精品天堂| 亚洲国产综合人成综合网站| 亚洲国产视频一区| 老司机午夜精品| 成人在线一区二区三区| 欧美伊人久久久久久久久影院| 欧美日韩mp4| 国产精品成人网| 久久精品国产**网站演员| www.亚洲国产| 日韩欧美国产电影| 99视频在线精品| 欧美电影免费观看高清完整版在线| 中文字幕一区二区三区精华液| 欧美亚洲综合色| 久久久午夜精品理论片中文字幕| 亚洲免费观看高清| 国产成人激情av| 久久麻豆一区二区| 国产在线观看一区二区| 欧美日韩三级一区| 依依成人综合视频| 国产成人精品影视| 亚洲国产精品自拍| 久久亚洲一级片| www日韩大片| 亚洲大片在线观看| 色94色欧美sute亚洲线路一久| 91精品国产色综合久久不卡蜜臀| 中文字幕在线不卡一区| 精品一区二区三区影院在线午夜| 欧美中文字幕一区二区三区| 国产欧美视频一区二区| 久久99国产精品麻豆| 欧美一区二区三级| 日本不卡的三区四区五区| 欧美揉bbbbb揉bbbbb| 亚洲综合色视频| 国产一区二区三区在线观看免费视频| 久久久精品免费免费| 91在线视频免费观看| 国产不卡视频一区二区三区| 国产一区二区三区日韩|