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

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

?? ppc_fmul.s

?? powerpc 405 優化過的硬浮點庫
?? S
?? 第 1 頁 / 共 3 頁
字號:
/* fpopt/ppc_fmul.S, pl_FPE_common, pl_linux 11/24/03 16:17:34                                                                  */
/*----------------------------------------------------------------------------- */
/*  Copyright (c) 2003, IBM Corporation                                         */
/*  All rights reserved.                                                        */
/*                                                                              */
/*  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.                                         */
/*    * Neither the name of IBM nor the names of its contributors               */
/*      may 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 THE COPYRIGHT OWNER OR 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.    */
/*                                                                              */
/*----------------------------------------------------------------------------- */
/*                                                                              */
/* Function: multiply two double floating point values.  frt = fpa * fpb        */
/* Input:    r3,r4(fpa)                                                         */
/*           r5,r6(fpb)                                                         */
/* Output:   r3,r4(frt)                                                         */
/* Notes:   1. No stack frame is created for the normal case of this function,  */
/*             so the following registers must be preserved, as required by     */
/*             ABI specification:                                               */
/*               LR, CR0, R1, R2, R13-R31                                       */
/*          2. For the full function case, a stack frame is created, following  */
/*             ABI specification, and non-volatile registers are saved and      */
/*             restored on the stack.                                           */
/*          3. operation performed according to IEEE754-1985 standard with      */
/*             rounding mode = nearest even.                                    */
/*                                                                              */
/*----------------------------------------------------------------------------- */

#include <ppc4xx.inc>
#include "fpeLib.inc"

function_prolog(__muldf3)

     mfcr      r0                     /* save cr */
     mtctr     r13                    /* save r13 */
     
/* load fpa into     r8,r9,r10 and cr6.  load fpb into r11, r12, r13     and cr7 */
     mr        r9,r3                  /* load fpa.exp, fpa.S, fpa.hi */
     mr        r12,r5                 /* load fpb.exp, fpb.S, fpb.hi */
     rlwinm    r8,r9,32-20,0x7ff      /* isolate exponent of fpa into r8 */
     rlwinm    r11,r12,32-20,0x7ff    /* isolate exponent of fpb into r11 */
     mr        r10,r4                 /* load fpa.lo */
                                      /* load fpb.lo (already in r6) */
     
/* test for normal:                                                             */
     cmpwi     cr0,r8,0x7ff           /* if (fpa.exp == DEXPMAX) */
     cmpwi     cr1,r8,0               /* if (fpa.exp == 0) */
     cmpwi     cr2,r11,0x7ff          /* if (fpb.exp == DEXPMAX) */
     cmpwi     cr3,r11,0              /* if (fpb.exp == 0) */
     beq       full                        /*fpa.exp is max */
     beq       cr2,full               /* fpb.exp is max */
     beq       cr1,tst0a              /* fpa.exp is 0  */
     beq       cr3,tst0b              /* fpb.exp is 0  */

/* normal case only:                                                            */
     oris      r9,r9,0x0010           /*    fpa.hi |= 0x00100000; */
     oris      r12,r12,0x0010         /*    fpb.hi |= 0x00100000; */
     
/* Calculate exponent                                                         */
     add       r8,r8,r11              /* result.expt = fpa.exp + fpb.exp; */
                                      /* ------- note: r11 is now free */
     addic.    r8,r8,-1022            /* result.exp -= DEXPBIAS; check for negative */
                                      /* result.exp += 1 (for multiplying left-just */
                                      /* numbers if result is left-just) */
     cmpwi     cr2,r8,0x7fd           /* if (result.exp >= DEXPMAX-2) */
     ble       full
     bge       cr2,full    
     
/* Multiply the numbers:                                                      */
/* Start by shifting everything left 11 bits, so that the MSW is full:        */
     rlwinm    r9,r9,11,0,20          /* r9 = fpa.hi */
     rlwimi    r9,r10,11,21,31
     rlwinm    r10,r10,11,0,20        /* r10 = fpa.lo */

     rlwinm    r12,r12,11,0,20        /* r12 = fpb.hi */
     rlwimi    r12,r6,11,21,31
     rlwinm    r13,r6,11,0,20         /* r13 = fpb.lo */
     
/* Multiply a-high and     b-high:                                            */
     mulhwu    r7,r9,r12              /* r7 gets high word of result */
     mullw     r11,r9,r12             /* r11 gets low word of result */
    
/* Multiply a-high and b-low (upper half only):                           */
     mulhwu    r13,r9,r13
     addc      r13,r11,r13
     addze     r7,r7
     
/* Multiply a-low and b-high (upper half only):                               */
     mulhwu    r10,r10,r12
     addc      r13,r13,r10
     addze.    r7,r7
                                      /* r7/r13 now have result hi/lo */
                                      /* ------- note:     r9-r12 are now free */
/*   There are two possibilities for the result:                        */
/*   Either (bit 0 is 1) or (bit 0 is 0 and bit 1 is 1).            */
/*   If bit 0 is 0, then shift left 1 bit to normalize:                 */
     blt       msb_is_bit0
     addc      r13,r13,r13               /* shift r7/r13 left 1 bit */
     adde      r7,r7,r7               /* */
     addic.    r8,r8,-1               /* shifted case: exponent is 1 less */
                                      /* than non-shifted */
     beq       full                   /* if exponent out of range, go to full handler */
msb_is_bit0:

/*   See if we need to round. (NOTE: the exact .5 case needs more precision */
/*   than what we have calculated; in that case, go to the full handler.)   */
/*   53 bits (bits 0-52 of the 2-word result) are significant. The sticky bit   */
/*   is bit 53 = bit (53-32= 21) of the low word (r13). If it is 0, then no */
/*   rounding.                                                                  */
/*   BUT we don't really know the sticky bit for sure yet -- the uncalculated */
/*   low-order 64 bits of the 128-bit product could conceivably cause the low   */
/*   bits of our LSW to round up, changing the state of bit 21.             */
/*   The round-up is the result of a carry-out from 3 neglected summands, */
/*   so at most it adds 2 to the low word. But we have already              */
/*   shifted left one bit, just above, so by now the carry-out could add    */
/*   as much as 4. The addition of a 3-bit number can                           */
/*   propagate up to bit 21 ONLY if bits 22-29 are all ones:        */
     rlwinm.   r10,r13,0,22,31
     cmpwi     cr2,r10,0x3fc          /* special case if bits 22-29 all 1's */
     rlwinm    r11,r13,0,20,21         /* test LSb and sticky bit */
     bge       cr2,full
     cmpwi     cr3,r11,0x400          /* special rounding if LSb=0 and sticky=1 */
     addic     r13,r13,0x400            /* standard rounding = add 1 to sticky */
     bne+      cr3,finish_std_round
     beq       full                   /* if LSb=0 and sticky=1 and 22-31 all */
                                      /* zeros, then special case */
finish_std_round:
     addze.    r7,r7                  /* add carry-out of low word to high */
                                      /* -- if     this overflowed us, then we */
                                      /* need to shift back right 1 bit */
                                      /* and increment the exponent */
                                      /* to reflect this shift: */
     bne+      std_done
     addi      r8,r8,1
     rlwinm    r13,r13,32-1,1,31
     rlwimi    r13,r7,32-1,0,0
     rlwinm    r7,r7,32-1,1,31

std_done:

/*   We're done! Just assemble the result back into IEEE format:          */
/*   r3 = IEEE MSW, r4 = IEEE LSW                                         */

     xor       r9,r3,r5              /* get product sign */

/*   Shift right 11 bits (= left 21 bits) to put the MSb into bit 11, but */
/*   mask it off since it's implied:                                        */
     rlwinm    r3,r7,32-11,12,31
     
/*   Bits 0-10 of the IEEE LSW represent bits 21-31 of the result, so they  */
/*   come from bits 21-31 of the high word (r7):                            */
     rlwinm    r4,r7,21,0,10
     
/*   Bits 11-31 of the IEEE LSW represent bits 32-52 of the result, so they     */
/*   come from bits 0-20 of the low word (r13):                          */
     rlwimi    r4,r13,32-11,11,31
     
/*   Put the exponent into bits 1-11 of the MSW:                            */
     rlwimi    r3,r8,20,1,11
     
/*   Insert sign bit:                                                       */
     rlwimi    r3,r9,0,0,0

     mtcr      r0                     /* restore cr */
     mfctr     r13                    /* restore r13 */
     blr                              /* return; */
                                   
tst0a:                             

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
性久久久久久久| 136国产福利精品导航| 欧美日韩黄色一区二区| 成人av免费在线| 国产成人精品在线看| 久久国产生活片100| 青青草视频一区| 日韩激情一区二区| 日韩精品一区第一页| 三级一区在线视频先锋| 亚洲高清免费观看| 午夜精品久久久久久久蜜桃app| 亚洲精品欧美激情| 亚洲老妇xxxxxx| 一卡二卡欧美日韩| 午夜免费久久看| 蜜桃av一区二区在线观看| 免费看日韩精品| 韩国精品久久久| 国产99久久久国产精品| aa级大片欧美| 欧美三级三级三级爽爽爽| 91精品欧美综合在线观看最新| 6080午夜不卡| 26uuu亚洲婷婷狠狠天堂| 久久奇米777| 亚洲乱码日产精品bd| 亚洲电影一区二区三区| 蜜桃视频免费观看一区| 国产99久久久国产精品免费看| 色综合天天视频在线观看| 欧美日韩国产片| 精品国产免费一区二区三区香蕉| 久久久久国产精品麻豆| 亚洲日本一区二区| 亚洲成人免费在线| 粉嫩aⅴ一区二区三区四区| 99精品欧美一区二区三区小说| 欧美日韩久久一区| 久久久不卡网国产精品二区| 亚洲男人的天堂网| 美女mm1313爽爽久久久蜜臀| 成人av在线网站| 日韩精品专区在线影院观看| 中文字幕一区日韩精品欧美| 午夜a成v人精品| 99精品国产视频| 日韩视频一区在线观看| 亚洲三级久久久| 蜜臀久久99精品久久久久宅男| caoporen国产精品视频| 91精品国产综合久久精品app| 久久综合五月天婷婷伊人| 一个色综合av| 大尺度一区二区| 欧美一区二区在线视频| 最新热久久免费视频| 捆绑紧缚一区二区三区视频| 色综合久久九月婷婷色综合| 精品国产1区二区| 亚洲国产精品久久人人爱蜜臀| 激情综合色丁香一区二区| 欧美三区在线视频| 亚洲视频免费在线| 国产伦精品一区二区三区在线观看| 在线观看亚洲精品| 综合自拍亚洲综合图不卡区| 国内精品写真在线观看| 在线综合+亚洲+欧美中文字幕| 亚洲视频 欧洲视频| 国产999精品久久久久久绿帽| 日韩精品专区在线| 日韩精品视频网| 精品视频在线免费| 亚洲精品自拍动漫在线| 成人一区二区视频| 2023国产精华国产精品| 极品美女销魂一区二区三区 | 日韩一区二区在线免费观看| 亚洲欧美偷拍卡通变态| 国产成人av网站| 亚洲精品一区二区三区在线观看| 日本视频在线一区| 欧美伦理电影网| 亚洲一区二区三区不卡国产欧美| 成人激情动漫在线观看| 成人激情午夜影院| 欧美激情一区二区三区| 国产精品一品视频| xf在线a精品一区二区视频网站| 麻豆极品一区二区三区| 91精品国产综合久久精品性色| 日韩国产欧美在线观看| 这里只有精品免费| 激情综合色播激情啊| 欧美sm极限捆绑bd| 国产精品456露脸| 国产精品免费视频网站| 成人亚洲精品久久久久软件| 国产日韩精品久久久| 成人av动漫在线| 亚洲人午夜精品天堂一二香蕉| 91丨九色丨蝌蚪丨老版| 亚洲综合一区二区| 欧美一级片在线| 国产一区欧美一区| 中文字幕一区二区三区不卡在线 | 亚洲三级视频在线观看| 91国偷自产一区二区三区观看| 亚洲美女屁股眼交| 538在线一区二区精品国产| 日韩精品一二三区| 中文字幕精品在线不卡| 韩国av一区二区三区在线观看| 国产人伦精品一区二区| 色综合网站在线| 三级久久三级久久| 欧美高清在线视频| 91成人国产精品| 精品中文字幕一区二区| 国产午夜亚洲精品理论片色戒| 国产美女娇喘av呻吟久久| 专区另类欧美日韩| 欧美高清hd18日本| 国产精品一区二区久久不卡| 一区二区三区在线观看网站| 欧美精品在线观看播放| 国产69精品一区二区亚洲孕妇| 伊人一区二区三区| 精品国产乱码久久久久久夜甘婷婷| aaa亚洲精品| 精品一区中文字幕| 亚洲综合区在线| 国产日韩欧美高清在线| 在线视频综合导航| 国产精品亚洲人在线观看| 亚洲一二三专区| 国产亚洲婷婷免费| 欧美精品精品一区| 波多野结衣精品在线| 裸体在线国模精品偷拍| 亚洲综合色成人| 国产精品久久久久久久浪潮网站| 欧美色爱综合网| 91农村精品一区二区在线| 国模大尺度一区二区三区| 亚洲国产精品久久人人爱| 中文字幕免费观看一区| 欧美成人女星排行榜| 欧美精品黑人性xxxx| 91久久免费观看| 97精品国产露脸对白| 国产美女精品在线| 日韩av一区二| 亚洲一二三区在线观看| 亚洲视频1区2区| 日韩一区在线播放| 中文成人av在线| 国产亚洲一区二区三区| 精品国产123| 日韩一区二区三| 欧美一区二视频| 日韩你懂的电影在线观看| 欧美精品自拍偷拍| 欧美调教femdomvk| 成人99免费视频| yourporn久久国产精品| 成人免费高清在线观看| 国产麻豆91精品| 国产永久精品大片wwwapp | 中文字幕亚洲欧美在线不卡| 久久久高清一区二区三区| 精品国产免费一区二区三区四区| 欧美一区二区三区四区视频 | 91老司机福利 在线| 成人avav在线| 日本精品裸体写真集在线观看| 91香蕉视频黄| 在线观看91精品国产入口| 欧美亚洲国产bt| 欧美一区二区在线不卡| 日韩亚洲欧美中文三级| 精品免费日韩av| 国产精品免费久久| 一区二区三区在线观看欧美| 亚洲香蕉伊在人在线观| 日韩av在线发布| 国产精品一区二区久久精品爱涩 | 天天影视涩香欲综合网 | 51精品国自产在线| 日韩欧美国产三级电影视频| 日韩欧美久久一区| 国产欧美视频一区二区| 亚洲乱码一区二区三区在线观看| 亚洲一区在线观看免费观看电影高清| 亚洲色图一区二区三区| 日韩电影一区二区三区四区| 精品一区二区三区香蕉蜜桃| 成人一区二区视频| 欧美日韩一区二区三区不卡|