VirtualBox

Ignore:
Timestamp:
Mar 4, 2011 12:49:02 PM (14 years ago)
Author:
vboxsync
Message:

rem: synced up to svn://svn.savannah.nongnu.org/qemu/trunk@6686 (repo UUID c046a42c-6fe2-441c-8c8c-71466251a162).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/recompiler/fpu/softfloat-native.c

    r36140 r36170  
    6161#endif
    6262
    63 #if defined(__powerpc__)
     63#if defined(_ARCH_PPC)
    6464
    6565/* correct (but slow) PowerPC rint() (glibc version is incorrect) */
    66 double qemu_rint(double x)
     66static double qemu_rint(double x)
    6767{
    6868    double y = 4503599627370496.0;
     
    230230{
    231231    if (a < b) {
    232         return -1;
     232        return float_relation_less;
    233233    } else if (a == b) {
    234         return 0;
     234        return float_relation_equal;
    235235    } else if (a > b) {
    236         return 1;
    237     } else {
    238         return 2;
     236        return float_relation_greater;
     237    } else {
     238        return float_relation_unordered;
    239239    }
    240240}
     
    242242{
    243243    if (isless(a, b)) {
    244         return -1;
     244        return float_relation_less;
    245245    } else if (a == b) {
    246         return 0;
     246        return float_relation_equal;
    247247    } else if (isgreater(a, b)) {
    248         return 1;
    249     } else {
    250         return 2;
     248        return float_relation_greater;
     249    } else {
     250        return float_relation_unordered;
    251251    }
    252252}
     
    258258    a = u.i;
    259259    return ( ( ( a>>22 ) & 0x1FF ) == 0x1FE ) && ( a & 0x003FFFFF );
     260}
     261
     262int float32_is_nan( float32 a1 )
     263{
     264    float32u u;
     265    uint64_t a;
     266    u.f = a1;
     267    a = u.i;
     268    return ( 0xFF800000 < ( a<<1 ) );
    260269}
    261270
     
    392401{
    393402    if (a < b) {
    394         return -1;
     403        return float_relation_less;
    395404    } else if (a == b) {
    396         return 0;
     405        return float_relation_equal;
    397406    } else if (a > b) {
    398         return 1;
    399     } else {
    400         return 2;
     407        return float_relation_greater;
     408    } else {
     409        return float_relation_unordered;
    401410    }
    402411}
     
    404413{
    405414    if (isless(a, b)) {
    406         return -1;
     415        return float_relation_less;
    407416    } else if (a == b) {
    408         return 0;
     417        return float_relation_equal;
    409418    } else if (isgreater(a, b)) {
    410         return 1;
    411     } else {
    412         return 2;
     419        return float_relation_greater;
     420    } else {
     421        return float_relation_unordered;
    413422    }
    414423}
     
    432441    a = u.i;
    433442
    434     return ( LIT64( 0xFFE0000000000000 ) < (bits64) ( a<<1 ) );
     443    return ( LIT64( 0xFFF0000000000000 ) < (bits64) ( a<<1 ) );
    435444
    436445}
     
    484493{
    485494    if (a < b) {
    486         return -1;
     495        return float_relation_less;
    487496    } else if (a == b) {
    488         return 0;
     497        return float_relation_equal;
    489498    } else if (a > b) {
    490         return 1;
    491     } else {
    492         return 2;
     499        return float_relation_greater;
     500    } else {
     501        return float_relation_unordered;
    493502    }
    494503}
     
    496505{
    497506    if (isless(a, b)) {
    498         return -1;
     507        return float_relation_less;
    499508    } else if (a == b) {
    500         return 0;
     509        return float_relation_equal;
    501510    } else if (isgreater(a, b)) {
    502         return 1;
    503     } else {
    504         return 2;
     511        return float_relation_greater;
     512    } else {
     513        return float_relation_unordered;
    505514    }
    506515}
    507516int floatx80_is_signaling_nan( floatx80 a1)
     517{
     518    floatx80u u;
     519    uint64_t aLow;
     520    u.f = a1;
     521
     522    aLow = u.i.low & ~ LIT64( 0x4000000000000000 );
     523    return
     524           ( ( u.i.high & 0x7FFF ) == 0x7FFF )
     525        && (bits64) ( aLow<<1 )
     526        && ( u.i.low == aLow );
     527}
     528
     529int floatx80_is_nan( floatx80 a1 )
    508530{
    509531    floatx80u u;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette