Lines Matching defs:roundData

70 static int32 roundAndPackInt32( struct roundingData *roundData, flag zSign, bits64 absZ )
77 roundingMode = roundData->mode;
100 roundData->exception |= float_flag_invalid;
103 if ( roundBits ) roundData->exception |= float_flag_inexact;
217 static float32 roundAndPackFloat32( struct roundingData *roundData, flag zSign, int16 zExp, bits32 zSig )
224 roundingMode = roundData->mode;
247 roundData->exception |= float_flag_overflow | float_flag_inexact;
258 if ( isTiny && roundBits ) roundData->exception |= float_flag_underflow;
261 if ( roundBits ) roundData->exception |= float_flag_inexact;
280 normalizeRoundAndPackFloat32( struct roundingData *roundData, flag zSign, int16 zExp, bits32 zSig )
285 return roundAndPackFloat32( roundData, zSign, zExp - shiftCount, zSig<<shiftCount );
388 static float64 roundAndPackFloat64( struct roundingData *roundData, flag zSign, int16 zExp, bits64 zSig )
395 roundingMode = roundData->mode;
420 roundData->exception |= float_flag_overflow | float_flag_inexact;
431 if ( isTiny && roundBits ) roundData->exception |= float_flag_underflow;
434 if ( roundBits ) roundData->exception |= float_flag_inexact;
453 normalizeRoundAndPackFloat64( struct roundingData *roundData, flag zSign, int16 zExp, bits64 zSig )
458 return roundAndPackFloat64( roundData, zSign, zExp - shiftCount, zSig<<shiftCount );
566 struct roundingData *roundData, flag zSign, int32 zExp, bits64 zSig0, bits64 zSig1
573 roundingMode = roundData->mode;
574 roundingPrecision = roundData->precision;
618 if ( isTiny && roundBits ) roundData->exception |= float_flag_underflow;
619 if ( roundBits ) roundData->exception |= float_flag_inexact;
630 if ( roundBits ) roundData->exception |= float_flag_inexact;
667 roundData->exception |= float_flag_overflow | float_flag_inexact;
684 if ( isTiny && zSig1 ) roundData->exception |= float_flag_underflow;
685 if ( zSig1 ) roundData->exception |= float_flag_inexact;
705 if ( zSig1 ) roundData->exception |= float_flag_inexact;
735 struct roundingData *roundData, flag zSign, int32 zExp, bits64 zSig0, bits64 zSig1
749 roundAndPackFloatx80( roundData, zSign, zExp, zSig0, zSig1 );
762 float32 int32_to_float32(struct roundingData *roundData, int32 a)
769 return normalizeRoundAndPackFloat32( roundData, zSign, 0x9C, zSign ? - a : a );
835 int32 float32_to_int32( struct roundingData *roundData, float32 a )
851 return roundAndPackInt32( roundData, aSign, zSig );
968 float32 float32_round_to_int( struct roundingData *roundData, float32 a )
983 roundingMode = roundData->mode;
986 roundData->exception |= float_flag_inexact;
1015 if ( z != a ) roundData->exception |= float_flag_inexact;
1029 static float32 addFloat32Sigs( struct roundingData *roundData, float32 a, float32 b, flag zSign )
1088 return roundAndPackFloat32( roundData, zSign, zExp, zSig );
1101 static float32 subFloat32Sigs( struct roundingData *roundData, float32 a, float32 b, flag zSign )
1118 roundData->exception |= float_flag_invalid;
1127 return packFloat32( roundData->mode == float_round_down, 0, 0 );
1164 return normalizeRoundAndPackFloat32( roundData, zSign, zExp, zSig );
1175 float32 float32_add( struct roundingData *roundData, float32 a, float32 b )
1182 return addFloat32Sigs( roundData, a, b, aSign );
1185 return subFloat32Sigs( roundData, a, b, aSign );
1197 float32 float32_sub( struct roundingData *roundData, float32 a, float32 b )
1204 return subFloat32Sigs( roundData, a, b, aSign );
1207 return addFloat32Sigs( roundData, a, b, aSign );
1219 float32 float32_mul( struct roundingData *roundData, float32 a, float32 b )
1239 roundData->exception |= float_flag_invalid;
1247 roundData->exception |= float_flag_invalid;
1269 return roundAndPackFloat32( roundData, zSign, zExp, zSig );
1280 float32 float32_div( struct roundingData *roundData, float32 a, float32 b )
1297 roundData->exception |= float_flag_invalid;
1309 roundData->exception |= float_flag_invalid;
1312 roundData->exception |= float_flag_divbyzero;
1336 return roundAndPackFloat32( roundData, zSign, zExp, zSig );
1347 float32 float32_rem( struct roundingData *roundData, float32 a, float32 b )
1367 roundData->exception |= float_flag_invalid;
1376 roundData->exception |= float_flag_invalid;
1439 return normalizeRoundAndPackFloat32( roundData, aSign ^ zSign, bExp, aSig );
1450 float32 float32_sqrt( struct roundingData *roundData, float32 a )
1463 roundData->exception |= float_flag_invalid;
1468 roundData->exception |= float_flag_invalid;
1494 return roundAndPackFloat32( roundData, 0, zExp, zSig );
1652 int32 float64_to_int32( struct roundingData *roundData, float64 a )
1665 return roundAndPackInt32( roundData, aSign, aSig );
1727 int32 float64_to_uint32( struct roundingData *roundData, float64 a )
1740 return roundAndPackInt32( roundData, aSign, aSig );
1796 float32 float64_to_float32( struct roundingData *roundData, float64 a )
1816 return roundAndPackFloat32( roundData, aSign, aExp, zSig );
1863 float64 float64_round_to_int( struct roundingData *roundData, float64 a )
1880 roundData->exception |= float_flag_inexact;
1882 switch ( roundData->mode ) {
1900 roundingMode = roundData->mode;
1911 if ( z != a ) roundData->exception |= float_flag_inexact;
1925 static float64 addFloat64Sigs( struct roundingData *roundData, float64 a, float64 b, flag zSign )
1984 return roundAndPackFloat64( roundData, zSign, zExp, zSig );
1997 static float64 subFloat64Sigs( struct roundingData *roundData, float64 a, float64 b, flag zSign )
2014 roundData->exception |= float_flag_invalid;
2023 return packFloat64( roundData->mode == float_round_down, 0, 0 );
2060 return normalizeRoundAndPackFloat64( roundData, zSign, zExp, zSig );
2071 float64 float64_add( struct roundingData *roundData, float64 a, float64 b )
2078 return addFloat64Sigs( roundData, a, b, aSign );
2081 return subFloat64Sigs( roundData, a, b, aSign );
2093 float64 float64_sub( struct roundingData *roundData, float64 a, float64 b )
2100 return subFloat64Sigs( roundData, a, b, aSign );
2103 return addFloat64Sigs( roundData, a, b, aSign );
2115 float64 float64_mul( struct roundingData *roundData, float64 a, float64 b )
2133 roundData->exception |= float_flag_invalid;
2141 roundData->exception |= float_flag_invalid;
2163 return roundAndPackFloat64( roundData, zSign, zExp, zSig0 );
2174 float64 float64_div( struct roundingData *roundData, float64 a, float64 b )
2193 roundData->exception |= float_flag_invalid;
2205 roundData->exception |= float_flag_invalid;
2208 roundData->exception |= float_flag_divbyzero;
2234 return roundAndPackFloat64( roundData, zSign, zExp, zSig );
2245 float64 float64_rem( struct roundingData *roundData, float64 a, float64 b )
2263 roundData->exception |= float_flag_invalid;
2272 roundData->exception |= float_flag_invalid;
2320 return normalizeRoundAndPackFloat64( roundData, aSign ^ zSign, bExp, aSig );
2331 float64 float64_sqrt( struct roundingData *roundData, float64 a )
2345 roundData->exception |= float_flag_invalid;
2350 roundData->exception |= float_flag_invalid;
2381 return roundAndPackFloat64( roundData, 0, zExp, zSig );
2541 int32 floatx80_to_int32( struct roundingData *roundData, floatx80 a )
2554 return roundAndPackInt32( roundData, aSign, aSig );
2612 float32 floatx80_to_float32( struct roundingData *roundData, floatx80 a )
2629 return roundAndPackFloat32( roundData, aSign, aExp, aSig );
2641 float64 floatx80_to_float64( struct roundingData *roundData, floatx80 a )
2658 return roundAndPackFloat64( roundData, aSign, aExp, zSig );
2670 floatx80 floatx80_round_to_int( struct roundingData *roundData, floatx80 a )
2690 roundData->exception |= float_flag_inexact;
2692 switch ( roundData->mode ) {
2716 roundingMode = roundData->mode;
2731 if ( z.low != a.low ) roundData->exception |= float_flag_inexact;
2745 static floatx80 addFloatx80Sigs( struct roundingData *roundData, floatx80 a, floatx80 b, flag zSign )
2801 roundData, zSign, zExp, zSig0, zSig1 );
2814 static floatx80 subFloatx80Sigs( struct roundingData *roundData, floatx80 a, floatx80 b, flag zSign )
2832 roundData->exception |= float_flag_invalid;
2845 return packFloatx80( roundData->mode == float_round_down, 0, 0 );
2871 roundData, zSign, zExp, zSig0, zSig1 );
2882 floatx80 floatx80_add( struct roundingData *roundData, floatx80 a, floatx80 b )
2889 return addFloatx80Sigs( roundData, a, b, aSign );
2892 return subFloatx80Sigs( roundData, a, b, aSign );
2904 floatx80 floatx80_sub( struct roundingData *roundData, floatx80 a, floatx80 b )
2911 return subFloatx80Sigs( roundData, a, b, aSign );
2914 return addFloatx80Sigs( roundData, a, b, aSign );
2926 floatx80 floatx80_mul( struct roundingData *roundData, floatx80 a, floatx80 b )
2952 roundData->exception |= float_flag_invalid;
2976 roundData, zSign, zExp, zSig0, zSig1 );
2987 floatx80 floatx80_div( struct roundingData *roundData, floatx80 a, floatx80 b )
3018 roundData->exception |= float_flag_invalid;
3024 roundData->exception |= float_flag_divbyzero;
3058 roundData, zSign, zExp, zSig0, zSig1 );
3069 floatx80 floatx80_rem( struct roundingData *roundData, floatx80 a, floatx80 b )
3097 roundData->exception |= float_flag_invalid;
3158 roundData, zSign, bExp + expDiff, aSig0, aSig1 );
3169 floatx80 floatx80_sqrt( struct roundingData *roundData, floatx80 a )
3189 roundData->exception |= float_flag_invalid;
3235 roundData, 0, zExp, zSig0, zSig1 );