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

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

?? e_remainder.s

?? glibc 庫, 不僅可以學(xué)習(xí)使用庫函數(shù),還可以學(xué)習(xí)函數(shù)的具體實現(xiàn),是提高功力的好資料
?? S
字號:
.file "remainder.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// 07/21/00 Fixed quotient=2^{24*m+23}*1.q1...q23 1 bug// 08/15/00 Bundle added after call to __libm_error_support to properly//          set [the previously overwritten] GR_Parameter_RESULT.// 11/29/00 Set FR_Y to f9// 05/20/02 Cleaned up namespace and sf0 syntax// 02/10/03 Reordered header: .section, .global, .proc, .align//// API//====================================================================// double remainder(double,double);   //// Overview of operation//====================================================================//  remainder(a,b)=a-i*b,//  where i is an integer such that, if b!=0 and a is finite, //  |a/b-i|<=1/2. If |a/b-i|=1/2, i is even.//// Algorithm//====================================================================// a). eliminate special cases// b). if |a/b|<0.25 (first quotient estimate), return a// c). use single precision divide algorithm to get quotient q//     rounded to 24 bits of precision // d). calculate partial remainders (using both q and q-ulp); //     select one and RZ(a/b) based on the sign of |a|-|b|*q   // e). if the exponent difference (exponent(a)-exponent(b))//     is less than 24 (quotient estimate<2^{24}-2), use RZ(a/b) //     and sticky bits to round to integer; exit loop and//     calculate final remainder// f). if exponent(a)-exponent(b)>=24, select new value of a as//     the partial remainder calculated using RZ(a/b); //     repeat from c). //// Special cases//====================================================================// a=+/- Inf, or b=+/-0: return NaN, call libm_error_support// a=NaN or b=NaN: return NaN// Registers used//====================================================================// Predicate registers: p6-p14// General registers:   r2,r3,r28,r29,r32 (ar.pfs), r33-r39// Floating point registers: f6-f15,f32GR_SAVE_B0                    = r33GR_SAVE_PFS                   = r34GR_SAVE_GP                    = r35 GR_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(remainder)// inputs in f8, f9// result in f8{ .mfi  alloc r32=ar.pfs,1,4,4,0  // f13=|a|  fmerge.s f13=f0,f8  nop.i 0}  {.mfi  nop.m 0  // f14=|b|  fmerge.s f14=f0,f9  nop.i 0;;} {.mlx  mov r28=0x2ffdd  // r2=2^{23}  movl r3=0x4b000000;;}// Y +-NAN, +-inf, +-0?     p11{ .mfi	  setf.exp f32=r28      fclass.m.unc  p11,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;; }{.mfi  nop.m 0  mov f12=f0  nop.i 0}{ .mfi  // set p7=1  cmp.eq.unc p7,p0=r0,r0  // Step (1)  // y0 = 1 / b in f10  frcpa.s1 f10,p6=f13,f14  nop.i 0;;} {.bbb  (p9) br.cond.spnt FREM_X_NAN_INF  (p11) br.cond.spnt FREM_Y_NAN_INF_ZERO  nop.b 0}  {.mfi   nop.m 0   // set D flag if a (f8) is denormal   fnma.s0 f6=f8,f1,f8   nop.i 0;;} remloop24:   { .mfi  nop.m 0  // Step (2)  // q0 = a * y0 in f12  (p6) fma.s1 f12=f13,f10,f0  nop.i 0} { .mfi  nop.m 0  // Step (3)  // e0 = 1 - b * y0 in f7  (p6) fnma.s1 f7=f14,f10,f1  nop.i 0;;}  {.mlx  nop.m 0  // r2=1.25*2^{-24}  movl r2=0x33a00000;;} {.mfi  nop.m 0  // q1=q0*(1+e0)  (p6) fma.s1 f15=f12,f7,f12  nop.i 0}{ .mfi  nop.m 0  // Step (4)  // e1 = e0 * e0 + E in f7  (p6) fma.s1 f7=f7,f7,f32  nop.i 0;;} {.mii  (p7) getf.exp r29=f12  (p7) mov r28=0xfffd  nop.i 0;;} { .mfi  // f12=2^{23}  setf.s f12=r3  // Step (5)  // q2 = q1 + e1 * q1 in f11  (p6) fma.s.s1 f11=f7,f15,f15  nop.i 0} { .mfi   nop.m 0  // Step (6)  // q2 = q1 + e1 * q1 in f6  (p6) fma.s1 f6=f7,f15,f15  nop.i 0;;}  {.mmi  // f15=1.25*2^{-24}  setf.s f15=r2  // q<1/4 ? (i.e. expon< -2)   (p7) cmp.gt p7,p0=r28,r29  nop.i 0;;}{.mfb  // r29= -32+bias  mov r29=0xffdf // if |a/b|<1/4, set D flag before returning  (p7) fma.d.s0 f9=f9,f0,f8  nop.b 0;;} {.mfb nop.m 0 // can be combined with bundle above if sign of 0 or // FTZ enabled are not important (p7) fmerge.s f8=f8,f9 // return if |a|<4*|b| (estimated quotient < 1/4) (p7) br.ret.spnt b0;;}  {.mfi  // f7=2^{-32}  setf.exp f7=r29  // set f8 to current a value | sign  fmerge.s f8=f8,f13  nop.i 0;;}   {.mfi  getf.exp r28=f6  // last step ? (q<2^{23})  fcmp.lt.unc.s1 p0,p12=f6,f12  nop.i 0;;}  {.mfi  nop.m 0  // r=a-b*q  fnma.s1 f6=f14,f11,f13  nop.i 0} {.mfi  // r2=23+bias  mov r2=0xffff+23  // q'=q-q*(1.25*2^{-24})   (q'=q-ulp)  fnma.s.s1 f15=f11,f15,f11  nop.i 0;;}  {.mmi  nop.m 0  cmp.eq p11,p14=r2,r28  nop.i 0;;} .pred.rel "mutex",p11,p14  {.mfi  nop.m 0  // if exp_q=2^23, then r=a-b*2^{23}  (p11) fnma.s1 f13=f12,f14,f13  nop.i 0} {.mfi  nop.m 0  // r2=a-b*q'  (p14) fnma.s1 f13=f14,f15,f13  nop.i 0;;}  {.mfi  nop.m 0  // r>0 iff q=RZ(a/b) and inexact  fcmp.gt.unc.s1 p8,p0=f6,f0  nop.i 0} {.mfi  nop.m 0  // r<0 iff q'=RZ(a/b) and inexact  (p14) fcmp.lt.unc.s1 p9,p10=f6,f0  nop.i 0;;}.pred.rel "mutex",p8,p9  {.mfi   nop.m 0   // (p8) Q=q+(last iteration ? sticky bits:0)  // i.e. Q=q+q*x  (x=2^{-32} or 0)  (p8) fma.s1 f11=f11,f7,f11  nop.i 0} {.mfi  nop.m 0  // (p9) Q=q'+(last iteration ? sticky bits:0)  // i.e. Q=q'+q'*x  (x=2^{-32} or 0)  (p9) fma.s1 f11=f15,f7,f15  nop.i 0;;}  {.mfb  nop.m 0  //  (p9) set r=r2 (new a, if not last iteration)  // (p10) new a =r  (p10) mov f13=f6  (p12) br.cond.sptk remloop24;;} // last iteration  {.mfi  nop.m 0  // set f9=|b|*sgn(a)  fmerge.s f9=f8,f9  nop.i 0}  {.mfi  nop.m 0  // round to integer  fcvt.fx.s1 f11=f11  nop.i 0;;}  {.mfi  nop.m 0  // save sign of a  fmerge.s f7=f8,f8  nop.i 0} {.mfi   nop.m 0  // normalize  fcvt.xf f11=f11  nop.i 0;;}   {.mfi  nop.m 0  // This can be removed if sign of 0 is not important   // get remainder using sf1  fnma.d.s1 f12=f9,f11,f8  nop.i 0}  {.mfi  nop.m 0  // get remainder  fnma.d.s0 f8=f9,f11,f8  nop.i 0;;}  {.mfi  nop.m 0  // f12=0?  // This can be removed if sign of 0 is not important   fcmp.eq.unc.s1 p8,p0=f12,f0  nop.i 0;;}  {.mfb  nop.m 0  // if f8=0, set sign correctly  // This can be removed if sign of 0 is not important   (p8) fmerge.s f8=f7,f8  // return  br.ret.sptk b0;;}FREM_X_NAN_INF: // Y zero ?{.mfi   nop.m 0  fma.s1 f10=f9,f1,f0  nop.i 0;;}{.mfi nop.m 0 fcmp.eq.unc.s1 p11,p0=f10,f0 nop.i 0;;}{.mib  nop.m 0  nop.i 0  // if Y zero  (p11) br.cond.spnt FREM_Y_ZERO;;                        }// X infinity? Return QNAN indefinite{ .mfi      nop.m 999      fclass.m.unc  p8,p0 = f8, 0x23       nop.i 999}// X infinity? Return QNAN indefinite{ .mfi      nop.m 999      fclass.m.unc  p11,p0 = f8, 0x23       nop.i 999;; }// Y NaN ?{.mfi	 nop.m 999(p8) fclass.m.unc p0,p8=f9,0xc3	 nop.i 0;;}{.mfi	nop.m 999	// also set Denormal flag if necessary(p8) fma.s0 f9=f9,f1,f0    nop.i 0} { .mfi      nop.m 999(p8)  frcpa.s0 f8,p7 = f8,f8                 nop.i 999 ;;}{.mfi      nop.m 999(p11) mov f10=f8	  nop.i 0}{ .mfi      nop.m 999(p8) fma.d.s0 f8=f8,f1,f0                     	  nop.i 0 ;;                        }{ .mfb      nop.m 999      frcpa.s0 f8,p7=f8,f9                     	  (p11) br.cond.spnt EXP_ERROR_RETURN;;                        }{ .mib	nop.m 0	nop.i 0	br.ret.spnt    b0 ;;                        }FREM_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.d.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.d.s0 f8=f9,f1,f0                     (p9)  br.ret.spnt    b0 ;;                        }FREM_Y_ZERO:// Y zero? Must be zero at this point// because it is the only choice left.// Return QNAN indefinite// 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,f0  	  nop.i 999;;         }{ .mfi      nop.m 999      fmerge.s      f10 = f8, f8                   nop.i 999}{ .mfi      nop.m 999      fma.d.s0 f8=f11,f1,f0                           nop.i 999}EXP_ERROR_RETURN: { .mib      mov   GR_Parameter_TAG = 124                                 	  nop.i 999      br.sptk __libm_error_region;; }GLOBAL_IEEE754_END(remainder)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        stfd [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        stfd [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        stfd [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        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
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区调教| 亚洲精品视频一区二区| 国产高清亚洲一区| 日韩一区二区三区精品视频| 国产成人精品综合在线观看| 日韩电影免费在线看| 国产一区二区网址| 91美女在线视频| 91精选在线观看| 国产欧美精品一区| 中文字幕第一区二区| 91麻豆精品国产91久久久久| 日本道精品一区二区三区| 欧美一区永久视频免费观看| 久久久影院官网| 亚洲一区二区三区四区五区黄| 久久99热99| 91论坛在线播放| 中文字幕视频一区| 日韩精品福利网| 成人免费黄色在线| 欧美日韩精品一区二区| 欧美—级在线免费片| 婷婷综合久久一区二区三区| 国产黑丝在线一区二区三区| 欧美日韩国产片| 国产精品天干天干在观线| 亚洲电影一区二区三区| 国产精品 日产精品 欧美精品| 欧美揉bbbbb揉bbbbb| 日本一区二区久久| 蜜桃久久精品一区二区| 色婷婷综合久久久中文一区二区| 亚洲精品在线观看网站| 夜夜精品视频一区二区| 成人午夜免费av| 日韩视频一区二区| 亚洲一区在线看| 成人18精品视频| 2020国产精品自拍| 丝袜诱惑制服诱惑色一区在线观看| youjizz国产精品| 2021中文字幕一区亚洲| 三级成人在线视频| 色8久久人人97超碰香蕉987| 久久精品无码一区二区三区| 丝袜美腿亚洲色图| 色香蕉久久蜜桃| 亚洲欧洲三级电影| 国产福利不卡视频| 日韩欧美一卡二卡| 日韩高清在线观看| 欧美日韩久久一区| 一区二区欧美视频| 日本精品一区二区三区高清| 国产精品剧情在线亚洲| 国产综合色在线视频区| 欧美大胆一级视频| 日本欧美在线看| 欧美精品三级日韩久久| 香蕉成人伊视频在线观看| 一本一道波多野结衣一区二区| 国产精品入口麻豆九色| 国产乱码精品一区二区三| 亚洲精品一区二区三区福利| 色婷婷久久综合| ㊣最新国产の精品bt伙计久久| 国产高清不卡一区| 久久久久9999亚洲精品| 国产精品一区二区无线| 久久精品亚洲精品国产欧美| 国产一区二区三区免费观看| 精品黑人一区二区三区久久| 奇米精品一区二区三区在线观看 | 欧美四级电影网| 亚洲欧美激情小说另类| 色综合久久中文字幕| 亚洲男人的天堂一区二区| 97aⅴ精品视频一二三区| 综合在线观看色| 色国产精品一区在线观看| 亚洲中国最大av网站| 欧美这里有精品| 日韩精品乱码av一区二区| 91精品国产丝袜白色高跟鞋| 日本vs亚洲vs韩国一区三区二区 | 免费在线观看不卡| 欧美电影免费观看高清完整版 | 久久久噜噜噜久久中文字幕色伊伊 | 99久精品国产| 一区二区久久久久| 欧美日韩国产美女| 热久久久久久久| 精品sm捆绑视频| 懂色av中文一区二区三区 | 成人av影院在线| 亚洲免费成人av| 欧美电影在哪看比较好| 久久成人免费日本黄色| 欧美韩日一区二区三区| 一道本成人在线| 麻豆91在线播放| 国产精品毛片高清在线完整版| 91久久精品一区二区| 欧美a级一区二区| 国产精品视频一二三| 97久久精品人人澡人人爽| 亚洲国产综合人成综合网站| 日韩免费观看高清完整版 | 亚洲色图第一区| 欧美精品乱码久久久久久| 韩国成人福利片在线播放| 亚洲欧美在线另类| 欧美日韩国产系列| 九九热在线视频观看这里只有精品| 久久久蜜臀国产一区二区| 91女人视频在线观看| 中日韩av电影| 欧美色中文字幕| 麻豆传媒一区二区三区| 欧美国产视频在线| 欧美精品xxxxbbbb| 国产精品1区2区| 亚洲综合色视频| 精品国产精品一区二区夜夜嗨| 国产一区二区三区日韩| 国产女人18水真多18精品一级做| a在线欧美一区| 视频一区在线播放| 国产夜色精品一区二区av| 色欧美日韩亚洲| 久久se这里有精品| 国产三级久久久| 欧美日韩国产免费| 国产91精品精华液一区二区三区| 一区二区三区成人| 精品国产3级a| 91视频你懂的| 国产精品一二二区| 五月天一区二区| 国产精品久久久久久久久免费桃花| 欧美情侣在线播放| 色悠悠久久综合| 久久91精品久久久久久秒播| 亚洲美女免费视频| 精品久久久久99| 波多野结衣一区二区三区 | 91精品国模一区二区三区| 国产不卡一区视频| 激情综合色播五月| 亚洲午夜国产一区99re久久| 久久久久国产精品厨房| 欧美久久久久中文字幕| 国产69精品一区二区亚洲孕妇| 免费欧美在线视频| 亚洲黄色av一区| 国产欧美一区二区精品仙草咪| 欧美日韩www| 成人午夜激情片| 国产电影一区二区三区| 视频一区视频二区中文| 亚洲色图视频网| 久久久国产午夜精品| 日韩一级片在线播放| 在线中文字幕一区二区| 成人av动漫网站| 国产乱人伦偷精品视频不卡 | 成人性生交大片免费看中文 | 日韩视频免费观看高清完整版 | 久久亚洲一区二区三区四区| 欧美日韩亚州综合| 在线国产电影不卡| av在线不卡电影| 国产精品18久久久久久vr| 奇米在线7777在线精品| 日韩福利电影在线观看| 亚洲一区二区在线观看视频| 国产精品久久久久久久久久免费看| 久久综合av免费| 欧美成va人片在线观看| 精品国产欧美一区二区| 欧美高清hd18日本| 欧美在线影院一区二区| 欧美日韩国产综合一区二区| 亚洲妇熟xx妇色黄| 亚洲国产wwwccc36天堂| 亚洲一区欧美一区| 亚洲影院理伦片| 一区二区三区四区视频精品免费 | 日韩福利电影在线| 天堂资源在线中文精品| 亚洲综合色在线| 亚洲曰韩产成在线| 国产清纯美女被跳蛋高潮一区二区久久w| 久久嫩草精品久久久久| 久久这里只有精品首页| 精品免费国产二区三区| 26uuu另类欧美| 国产精品全国免费观看高清| 中文无字幕一区二区三区|