Changeset d3ca210 in mainline for softfloat/generic/add.c


Ignore:
Timestamp:
2006-02-13T20:09:55Z (19 years ago)
Author:
Josef Cejka <malyzelenyhnus@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f1f95f2
Parents:
e979fea
Message:

Fixed most problems with 64bit arithmetic (but division is still buggy).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • softfloat/generic/add.c

    re979fea rd3ca210  
    103103                frac2 >>= expdiff;
    104104                frac1 += frac2;
    105                 };
     105        } else {
     106                a.parts.exp = exp1;
     107                a.parts.fraction = (frac1 >> 6) & (~(FLOAT32_HIDDEN_BIT_MASK));
     108                return a;
     109        }
    106110       
    107111        if (frac1 & (FLOAT32_HIDDEN_BIT_MASK << 7) ) {
     
    143147        __u64 frac1, frac2;
    144148       
    145         expdiff = a.parts.exp - b.parts.exp;
     149        expdiff = ((int )a.parts.exp) - b.parts.exp;
    146150        if (expdiff < 0) {
    147151                if (isFloat64NaN(b)) {
     
    212216                frac2 >>= expdiff;
    213217                frac1 += frac2;
    214                 };
     218        } else {
     219                a.parts.exp = exp1;
     220                a.parts.fraction = (frac1 >> 6) & (~(FLOAT64_HIDDEN_BIT_MASK));
     221                return a;
     222        }
    215223       
    216224        if (frac1 & (FLOAT64_HIDDEN_BIT_MASK << 7) ) {
     
    228236        };
    229237       
    230         if ((a.parts.exp == FLOAT64_MAX_EXPONENT ) || (a.parts.exp < exp1)) {
     238        if ((exp1 == FLOAT64_MAX_EXPONENT ) || (exp2 > exp1)) {
    231239                        /* overflow - set infinity as result */
    232240                        a.parts.exp = FLOAT64_MAX_EXPONENT;
     
    238246        /*Clear hidden bit and shift */
    239247        a.parts.fraction = ( (frac1 >> 6 ) & (~FLOAT64_HIDDEN_BIT_MASK));
     248       
    240249        return a;
    241250}
Note: See TracChangeset for help on using the changeset viewer.