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

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

?? softfloat-specialize

?? <Floating Point Unit Core> fpupack.vhd pre_norm_addsub.vhd addsub_28.vhd post_norm_addsub.
??
字號:

/*============================================================================

This C source fragment is part of the SoftFloat IEC/IEEE Floating-point
Arithmetic Package, Release 2b.

Written by John R. Hauser.  This work was made possible in part by the
International Computer Science Institute, located at Suite 600, 1947 Center
Street, Berkeley, California 94704.  Funding was partially provided by the
National Science Foundation under grant MIP-9311980.  The original version
of this code was written as part of a project to build a fixed-point vector
processor in collaboration with the University of California at Berkeley,
overseen by Profs. Nelson Morgan and John Wawrzynek.  More information
is available through the Web page `http://www.cs.berkeley.edu/~jhauser/
arithmetic/SoftFloat.html'.

THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE.  Although reasonable effort has
been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES
RESULT IN INCORRECT BEHAVIOR.  USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS
AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES,
COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE
EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE
INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR
OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE.

Derivative works are acceptable, even for commercial purposes, so long as
(1) the source code for the derivative work includes prominent notice that
the work is derivative, and (2) the source code includes prominent notice with
these four paragraphs for those parts of this code that are retained.

=============================================================================*/

/*----------------------------------------------------------------------------
| Underflow tininess-detection mode, statically initialized to default value.
| (The declaration in `softfloat.h' must match the `int8' type here.)
*----------------------------------------------------------------------------*/
int8 float_detect_tininess = float_tininess_after_rounding;

/*----------------------------------------------------------------------------
| Raises the exceptions specified by `flags'.  Floating-point traps can be
| defined here if desired.  It is currently not possible for such a trap
| to substitute a result value.  If traps are not implemented, this routine
| should be simply `float_exception_flags |= flags;'.
*----------------------------------------------------------------------------*/

// create the exceptions for the FPU core
void float_raise( int8 flags )
{
    //float_exception_flags |= flags;
	if (flags == float_flag_inexact) exceptions.ine=1; else
	if (flags == float_flag_overflow) exceptions.overflow=1; else
	if (flags == float_flag_underflow) exceptions.underflow=1; else
	if (flags == float_flag_divbyzero) exceptions.div_zero=1; else
	if (flags == float_flag_invalid) exceptions.invalid=1; 
}

/*----------------------------------------------------------------------------
| Internal canonical NaN format.
*----------------------------------------------------------------------------*/
typedef struct {
    flag sign;
    bits32 high, low;
} commonNaNT;

/*----------------------------------------------------------------------------
| The pattern for a default generated single-precision NaN.
*----------------------------------------------------------------------------*/
enum {
    float32_default_nan = 0xFFC00000
};

/*----------------------------------------------------------------------------
| Returns 1 if the single-precision floating-point value `a' is a NaN;
| otherwise returns 0.
*----------------------------------------------------------------------------*/

flag float32_is_nan( float32 a )
{

    return ( 0xFF000000 < (bits32) ( a<<1 ) );

}

/*----------------------------------------------------------------------------
| Returns 1 if the single-precision floating-point value `a' is a signaling
| NaN; otherwise returns 0.
*----------------------------------------------------------------------------*/

flag float32_is_signaling_nan( float32 a )
{

    return ( ( ( a>>22 ) & 0x1FF ) == 0x1FE ) && ( a & 0x003FFFFF );

}

/*----------------------------------------------------------------------------
| Returns the result of converting the single-precision floating-point NaN
| `a' to the canonical NaN format.  If `a' is a signaling NaN, the invalid
| exception is raised.
*----------------------------------------------------------------------------*/

static commonNaNT float32ToCommonNaN( float32 a )
{
    commonNaNT z;

    if ( float32_is_signaling_nan( a ) ) float_raise( float_flag_invalid );
    z.sign = a>>31;
    z.low = 0;
    z.high = a<<9;
    return z;

}

/*----------------------------------------------------------------------------
| Returns the result of converting the canonical NaN `a' to the single-
| precision floating-point format.
*----------------------------------------------------------------------------*/

static float32 commonNaNToFloat32( commonNaNT a )
{

    return ( ( (bits32) a.sign )<<31 ) | 0x7FC00000 | ( a.high>>9 );

}

/*----------------------------------------------------------------------------
| Takes two single-precision floating-point values `a' and `b', one of which
| is a NaN, and returns the appropriate NaN result.  If either `a' or `b' is a
| signaling NaN, the invalid exception is raised.
*----------------------------------------------------------------------------*/

static float32 propagateFloat32NaN( float32 a, float32 b )
{
    flag aIsNaN, aIsSignalingNaN, bIsNaN, bIsSignalingNaN;

    aIsNaN = float32_is_nan( a );
    aIsSignalingNaN = float32_is_signaling_nan( a );
    bIsNaN = float32_is_nan( b );
    bIsSignalingNaN = float32_is_signaling_nan( b );
    a |= 0x00400000;
    b |= 0x00400000;
    if ( aIsSignalingNaN | bIsSignalingNaN ) float_raise( float_flag_invalid );
    if ( aIsSignalingNaN ) {
        if ( bIsSignalingNaN ) goto returnLargerSignificand;
        return bIsNaN ? b : a;
    }
    else if ( aIsNaN ) {
        if ( bIsSignalingNaN | ! bIsNaN ) return a;
 returnLargerSignificand:
        if ( (bits32) ( a<<1 ) < (bits32) ( b<<1 ) ) return b;
        if ( (bits32) ( b<<1 ) < (bits32) ( a<<1 ) ) return a;
        return ( a < b ) ? a : b;
    }
    else {
        return b;
    }

}

/*----------------------------------------------------------------------------
| The pattern for a default generated double-precision NaN.  The `high' and
| `low' values hold the most- and least-significant bits, respectively.
*----------------------------------------------------------------------------*/
enum {
    float64_default_nan_high = 0xFFF80000,
    float64_default_nan_low  = 0x00000000
};

/*----------------------------------------------------------------------------
| Returns 1 if the double-precision floating-point value `a' is a NaN;
| otherwise returns 0.
*----------------------------------------------------------------------------*/

flag float64_is_nan( float64 a )
{

    return
           ( 0xFFE00000 <= (bits32) ( a.high<<1 ) )
        && ( a.low || ( a.high & 0x000FFFFF ) );

}

/*----------------------------------------------------------------------------
| Returns 1 if the double-precision floating-point value `a' is a signaling
| NaN; otherwise returns 0.
*----------------------------------------------------------------------------*/

flag float64_is_signaling_nan( float64 a )
{

    return
           ( ( ( a.high>>19 ) & 0xFFF ) == 0xFFE )
        && ( a.low || ( a.high & 0x0007FFFF ) );

}

/*----------------------------------------------------------------------------
| Returns the result of converting the double-precision floating-point NaN
| `a' to the canonical NaN format.  If `a' is a signaling NaN, the invalid
| exception is raised.
*----------------------------------------------------------------------------*/

static commonNaNT float64ToCommonNaN( float64 a )
{
    commonNaNT z;

    if ( float64_is_signaling_nan( a ) ) float_raise( float_flag_invalid );
    z.sign = a.high>>31;
    shortShift64Left( a.high, a.low, 12, &z.high, &z.low );
    return z;

}

/*----------------------------------------------------------------------------
| Returns the result of converting the canonical NaN `a' to the double-
| precision floating-point format.
*----------------------------------------------------------------------------*/

static float64 commonNaNToFloat64( commonNaNT a )
{
    float64 z;

    shift64Right( a.high, a.low, 12, &z.high, &z.low );
    z.high |= ( ( (bits32) a.sign )<<31 ) | 0x7FF80000;
    return z;

}

/*----------------------------------------------------------------------------
| Takes two double-precision floating-point values `a' and `b', one of which
| is a NaN, and returns the appropriate NaN result.  If either `a' or `b' is a
| signaling NaN, the invalid exception is raised.
*----------------------------------------------------------------------------*/

static float64 propagateFloat64NaN( float64 a, float64 b )
{
    flag aIsNaN, aIsSignalingNaN, bIsNaN, bIsSignalingNaN;

    aIsNaN = float64_is_nan( a );
    aIsSignalingNaN = float64_is_signaling_nan( a );
    bIsNaN = float64_is_nan( b );
    bIsSignalingNaN = float64_is_signaling_nan( b );
    a.high |= 0x00080000;
    b.high |= 0x00080000;
    if ( aIsSignalingNaN | bIsSignalingNaN ) float_raise( float_flag_invalid );
    if ( aIsSignalingNaN ) {
        if ( bIsSignalingNaN ) goto returnLargerSignificand;
        return bIsNaN ? b : a;
    }
    else if ( aIsNaN ) {
        if ( bIsSignalingNaN | ! bIsNaN ) return a;
 returnLargerSignificand:
        if ( lt64( a.high<<1, a.low, b.high<<1, b.low ) ) return b;
        if ( lt64( b.high<<1, b.low, a.high<<1, a.low ) ) return a;
        return ( a.high < b.high ) ? a : b;
    }
    else {
        return b;
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜视频免费看| 久久91精品久久久久久秒播| 国产欧美日韩一区二区三区在线观看| 在线日韩av片| 欧美色网一区二区| 欧美日韩精品专区| 欧美日韩激情一区二区| 欧美裸体bbwbbwbbw| 日韩精品一区二区三区中文不卡| 日韩一级高清毛片| 久久综合999| 国产精品三级av| 亚洲人亚洲人成电影网站色| 自拍偷拍亚洲激情| 亚洲国产cao| 乱一区二区av| 成人高清视频免费观看| 欧美视频一区在线| 欧美一区二区视频在线观看2022| 欧美一区二区黄| 国产精品久久毛片av大全日韩| 亚洲色图欧美在线| 日韩国产精品久久久| 国产一区亚洲一区| 在线精品视频免费观看| 日韩欧美你懂的| 国产精品国产自产拍高清av王其 | av激情综合网| 欧美系列在线观看| 久久久国产精华| 亚洲精品成人少妇| 麻豆一区二区三| 懂色av中文一区二区三区| 色综合天天在线| 日韩精品中文字幕在线一区| 亚洲欧洲三级电影| 日本欧美一区二区| 99re在线精品| 欧美成人一级视频| 亚洲综合在线免费观看| 久久99精品久久久久久动态图| 91欧美一区二区| 日韩精品中文字幕在线不卡尤物| 亚洲日本青草视频在线怡红院 | 26uuu欧美| 成人免费在线视频| 久久aⅴ国产欧美74aaa| 色94色欧美sute亚洲线路一久| 精品福利在线导航| 日韩福利电影在线观看| 91首页免费视频| 中文字幕av一区二区三区免费看| 日本不卡一二三区黄网| 欧美精品一二三四| 亚洲色图欧洲色图婷婷| 国产精品一级二级三级| 欧美一级欧美一级在线播放| 亚洲女人的天堂| www.成人网.com| 久久久国产综合精品女国产盗摄| 日韩精品免费专区| 欧美日韩国产美| 一区二区三区四区不卡在线| 99久久99久久综合| 国产精品毛片无遮挡高清| 国产一区二区三区电影在线观看 | 最新高清无码专区| 成人精品在线视频观看| 久久久久99精品一区| 激情小说欧美图片| 精品国产乱码91久久久久久网站| 日韩在线一区二区| 欧美一级精品在线| 天堂精品中文字幕在线| 欧美日韩一区久久| 视频在线在亚洲| 日韩精品最新网址| 久久99精品国产麻豆不卡| 欧美α欧美αv大片| 国产一区二三区| 精品对白一区国产伦| 国产成人一区二区精品非洲| 欧美激情中文不卡| 色综合久久六月婷婷中文字幕| 综合网在线视频| 欧美亚州韩日在线看免费版国语版| 亚洲精品国久久99热| 欧美日韩在线播放一区| 男女性色大片免费观看一区二区| 日韩精品一区在线| 成人免费黄色在线| 夜夜揉揉日日人人青青一国产精品| 欧美色网站导航| 激情综合色综合久久| 日本一区二区免费在线观看视频| 不卡一二三区首页| 五月综合激情婷婷六月色窝| 久久久久久电影| 成人精品鲁一区一区二区| 一区二区欧美视频| 欧美精品一二三区| 国产白丝精品91爽爽久久| 一区二区免费视频| 久久综合久久综合久久| av在线播放不卡| 日本中文字幕一区二区视频 | 欧美在线视频不卡| 美国三级日本三级久久99| 国产日产精品一区| 欧美私模裸体表演在线观看| 老司机精品视频在线| 中文字幕一区日韩精品欧美| 欧美放荡的少妇| 99久久免费精品| 久久激情综合网| 亚洲激情男女视频| 久久久久久久久久久电影| 91福利精品视频| 粉嫩一区二区三区性色av| 亚洲国产一区二区视频| 中文字幕精品在线不卡| 91精品婷婷国产综合久久性色| 成人在线一区二区三区| 久久se这里有精品| 亚洲最新视频在线观看| 精品国产乱码久久久久久闺蜜| 日本韩国一区二区| 成人国产精品视频| 韩国精品主播一区二区在线观看| 亚洲三级理论片| 欧美高清在线一区二区| 精品久久一区二区| 欧美精品久久久久久久久老牛影院| 99综合影院在线| 国产成人免费视频一区| 国产在线精品一区二区夜色| 视频一区视频二区中文字幕| 夜夜嗨av一区二区三区中文字幕| 中文字幕第一区综合| 精品国产亚洲一区二区三区在线观看| 欧美性色综合网| 91国产福利在线| 色94色欧美sute亚洲13| 色先锋aa成人| 成人国产精品免费观看| 成人永久看片免费视频天堂| 国产一区二区三区观看| 国产乱码精品一区二区三区五月婷| 偷偷要91色婷婷| 日本一道高清亚洲日美韩| 亚洲v日本v欧美v久久精品| 亚洲国产精品麻豆| 亚洲国产成人tv| 日韩电影在线观看一区| 日韩成人午夜精品| 久久丁香综合五月国产三级网站| 天天爽夜夜爽夜夜爽精品视频| 五月激情丁香一区二区三区| 天天操天天色综合| 久久精工是国产品牌吗| 国产酒店精品激情| 91在线精品一区二区三区| 色婷婷精品久久二区二区蜜臀av| 91在线精品一区二区| 欧美色综合网站| 56国语精品自产拍在线观看| 欧美一级高清片在线观看| 日韩一级片网址| 国产精品全国免费观看高清| 中文字幕一区二区三区在线不卡| 亚洲精品国产无天堂网2021| 天天色图综合网| 国产精品18久久久久久久久久久久 | 日韩欧美国产综合在线一区二区三区| 欧美一区二区三区不卡| 久久九九影视网| 亚洲男帅同性gay1069| 亚洲sss视频在线视频| 免费成人在线视频观看| 成人免费视频一区| 欧美在线播放高清精品| 欧美顶级少妇做爰| 欧美国产精品专区| 夜夜亚洲天天久久| 久国产精品韩国三级视频| 成人激情文学综合网| 欧美一区二区三区男人的天堂| 欧美大片日本大片免费观看| 欧美国产国产综合| 日韩成人一级片| 99精品黄色片免费大全| 91精品国产入口| 亚洲品质自拍视频| 激情五月婷婷综合| 欧美日韩精品电影| 国产精品乱码一区二区三区软件 | 97se亚洲国产综合自在线| 欧美日韩精品是欧美日韩精品| 国产色91在线| 日韩二区三区四区|