Changeset 56a39dde in mainline


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

Bugfixes in softfloat conversion functions.

Location:
softfloat/generic
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • softfloat/generic/conversion.c

    rfeef1cd r56a39dde  
    6060                        --result.parts.exp;
    6161                };
     62               
     63                ++result.parts.exp;
    6264                result.parts.mantisa = mant;
    6365        };
     
    109111               
    110112                exp *= -1;     
    111                
    112113                if (exp > FLOAT32_MANTISA_SIZE ) {
    113114                        /* FIXME: underflow */
     
    118119                /* denormalized */
    119120               
    120                 mant = result.parts.mantisa >> 1;
     121                mant = a.parts.mantisa;
    121122                mant |= 0x10000000000000ll; /* denormalize and set hidden bit */
     123               
     124                mant >>= (FLOAT64_MANTISA_SIZE - FLOAT32_MANTISA_SIZE + 1);
    122125               
    123126                while (exp > 0) {
  • softfloat/generic/softfloat.c

    rfeef1cd r56a39dde  
    5050        }
    5151        return addFloat32(fa,fb).f;
    52 };
     52}
    5353
    5454float __subsf3(float a, float b)
     
    6262        }
    6363        return subFloat32(fa,fb).f;
    64 };
     64}
    6565
    6666float __mulsf3(float a, float b)
     
    7878        fb.f=b;
    7979//      return  divFloat32(fa, fb).f;
    80 };
     80}
    8181
    8282float __negsf2(float a)
     
    8686        fa.parts.sign=!fa.parts.sign;
    8787        return fa.f;
    88 };
     88}
    8989
    9090double __negdf2(double a)
     
    9494        fa.parts.sign=!fa.parts.sign;
    9595        return fa.d;
    96 };
     96}
    9797
    9898/* Conversion functions */
     
    103103        fa.f = a;
    104104        return convertFloat32ToFloat64(fa).d;
    105 };
     105}
    106106
    107107float __truncdfsf2(double a)
     
    111111        return convertFloat64ToFloat32(da).f;
    112112}
     113
    113114/* Comparison functions */
    114115
     
    144145        fb.f=b;
    145146        return ((isFloat32NaN(fa))||(isFloat32NaN(fb)));
    146 };
     147}
    147148
    148149/**
     
    159160                };
    160161        return isFloat32eq(fa,fb)-1;
    161 };
     162}
    162163
    163164/* strange behavior, but it was in gcc documentation */
     
    165166{
    166167        return __eqsf2(a,b);
    167 };
     168}
    168169
    169170/* return value >= 0 if a>=b and neither is NaN */
     
    245246/* Other functions */
    246247
     248float __powisf2(float a, int b)
     249{
     250//TODO:
     251}
     252
     253float __mulsc3(float a, float b, float c, float d)
     254{
     255//TODO:
     256}
     257
     258float __divsc3(float a, float b, float c, float d)
     259{
     260//TODO:
     261}
     262
Note: See TracChangeset for help on using the changeset viewer.