Lines Matching defs:zExp
167 Packs the sign `zSign', exponent `zExp', and significand `zSig' into a
172 will have an integer portion equal to 1, the `zExp' input should be 1 less
177 INLINE float32 packFloat32( flag zSign, int16 zExp, bits32 zSig )
186 : "g" (f), "g" (zSign), "g" (zExp), "g" (zSig)
190 return ( ( (bits32) zSign )<<31 ) + ( ( (bits32) zExp )<<23 ) + zSig;
196 Takes an abstract floating-point value having sign `zSign', exponent `zExp',
210 `zExp' must be 0; in that case, the result returned is a subnormal number,
212 normalized, `zExp' must be 1 less than the ``true'' floating-point exponent.
217 static float32 roundAndPackFloat32( struct roundingData *roundData, flag zSign, int16 zExp, bits32 zSig )
242 if ( 0xFD <= (bits16) zExp ) {
243 if ( ( 0xFD < zExp )
244 || ( ( zExp == 0xFD )
250 if ( zExp < 0 ) {
253 || ( zExp < -1 )
255 shift32RightJamming( zSig, - zExp, &zSig );
256 zExp = 0;
264 if ( zSig == 0 ) zExp = 0;
265 return packFloat32( zSign, zExp, zSig );
271 Takes an abstract floating-point value having sign `zSign', exponent `zExp',
275 any way. In all cases, `zExp' must be 1 less than the ``true'' floating-
280 normalizeRoundAndPackFloat32( struct roundingData *roundData, flag zSign, int16 zExp, bits32 zSig )
285 return roundAndPackFloat32( roundData, zSign, zExp - shiftCount, zSig<<shiftCount );
348 Packs the sign `zSign', exponent `zExp', and significand `zSig' into a
353 will have an integer portion equal to 1, the `zExp' input should be 1 less
358 INLINE float64 packFloat64( flag zSign, int16 zExp, bits64 zSig )
361 return ( ( (bits64) zSign )<<63 ) + ( ( (bits64) zExp )<<52 ) + zSig;
367 Takes an abstract floating-point value having sign `zSign', exponent `zExp',
381 `zExp' must be 0; in that case, the result returned is a subnormal number,
383 normalized, `zExp' must be 1 less than the ``true'' floating-point exponent.
388 static float64 roundAndPackFloat64( struct roundingData *roundData, flag zSign, int16 zExp, bits64 zSig )
413 if ( 0x7FD <= (bits16) zExp ) {
414 if ( ( 0x7FD < zExp )
415 || ( ( zExp == 0x7FD )
423 if ( zExp < 0 ) {
426 || ( zExp < -1 )
428 shift64RightJamming( zSig, - zExp, &zSig );
429 zExp = 0;
437 if ( zSig == 0 ) zExp = 0;
438 return packFloat64( zSign, zExp, zSig );
444 Takes an abstract floating-point value having sign `zSign', exponent `zExp',
448 any way. In all cases, `zExp' must be 1 less than the ``true'' floating-
453 normalizeRoundAndPackFloat64( struct roundingData *roundData, flag zSign, int16 zExp, bits64 zSig )
458 return roundAndPackFloat64( roundData, zSign, zExp - shiftCount, zSig<<shiftCount );
524 Packs the sign `zSign', exponent `zExp', and significand `zSig' into an
528 INLINE floatx80 packFloatx80( flag zSign, int32 zExp, bits64 zSig )
533 z.high = ( ( (bits16) zSign )<<15 ) + zExp;
541 Takes an abstract floating-point value having sign `zSign', exponent `zExp',
558 significand is not normalized, `zExp' must be 0; in that case, the result
566 struct roundingData *roundData, flag zSign, int32 zExp, bits64 zSig0, bits64 zSig1
604 if ( 0x7FFD <= (bits32) ( zExp - 1 ) ) {
605 if ( ( 0x7FFE < zExp )
606 || ( ( zExp == 0x7FFE ) && ( zSig0 + roundIncrement < zSig0 ) )
610 if ( zExp <= 0 ) {
613 || ( zExp < 0 )
615 shift64RightJamming( zSig0, 1 - zExp, &zSig0 );
616 zExp = 0;
621 if ( (sbits64) zSig0 < 0 ) zExp = 1;
627 return packFloatx80( zSign, zExp, zSig0 );
633 ++zExp;
641 if ( zSig0 == 0 ) zExp = 0;
642 return packFloatx80( zSign, zExp, zSig0 );
658 if ( 0x7FFD <= (bits32) ( zExp - 1 ) ) {
659 if ( ( 0x7FFE < zExp )
660 || ( ( zExp == 0x7FFE )
676 if ( zExp <= 0 ) {
679 || ( zExp < 0 )
682 shift64ExtraRightJamming( zSig0, zSig1, 1 - zExp, &zSig0, &zSig1 );
683 zExp = 0;
700 if ( (sbits64) zSig0 < 0 ) zExp = 1;
702 return packFloatx80( zSign, zExp, zSig0 );
709 ++zExp;
717 if ( zSig0 == 0 ) zExp = 0;
720 return packFloatx80( zSign, zExp, zSig0 );
726 `zExp', and significand formed by the concatenation of `zSig0' and `zSig1',
735 struct roundingData *roundData, flag zSign, int32 zExp, bits64 zSig0, bits64 zSig1
743 zExp -= 64;
747 zExp -= shiftCount;
749 roundAndPackFloatx80( roundData, zSign, zExp, zSig0, zSig1 );
1031 int16 aExp, bExp, zExp;
1054 zExp = aExp;
1068 zExp = bExp;
1077 zExp = aExp;
1082 --zExp;
1085 ++zExp;
1088 return roundAndPackFloat32( roundData, zSign, zExp, zSig );
1103 int16 aExp, bExp, zExp;
1143 zExp = bExp;
1161 zExp = aExp;
1163 --zExp;
1164 return normalizeRoundAndPackFloat32( roundData, zSign, zExp, zSig );
1222 int16 aExp, bExp, zExp;
1260 zExp = aExp + bExp - 0x7F;
1267 --zExp;
1269 return roundAndPackFloat32( roundData, zSign, zExp, zSig );
1283 int16 aExp, bExp, zExp;
1321 zExp = aExp - bExp + 0x7D;
1326 ++zExp;
1336 return roundAndPackFloat32( roundData, zSign, zExp, zSig );
1453 int16 aExp, zExp;
1475 zExp = ( ( aExp - 0x7F )>>1 ) + 0x7E;
1494 return roundAndPackFloat32( roundData, 0, zExp, zSig );
1927 int16 aExp, bExp, zExp;
1950 zExp = aExp;
1964 zExp = bExp;
1973 zExp = aExp;
1978 --zExp;
1981 ++zExp;
1984 return roundAndPackFloat64( roundData, zSign, zExp, zSig );
1999 int16 aExp, bExp, zExp;
2039 zExp = bExp;
2057 zExp = aExp;
2059 --zExp;
2060 return normalizeRoundAndPackFloat64( roundData, zSign, zExp, zSig );
2118 int16 aExp, bExp, zExp;
2154 zExp = aExp + bExp - 0x3FF;
2161 --zExp;
2163 return roundAndPackFloat64( roundData, zSign, zExp, zSig0 );
2177 int16 aExp, bExp, zExp;
2217 zExp = aExp - bExp + 0x3FD;
2222 ++zExp;
2234 return roundAndPackFloat64( roundData, zSign, zExp, zSig );
2334 int16 aExp, zExp;
2357 zExp = ( ( aExp - 0x3FF )>>1 ) + 0x3FE;
2381 return roundAndPackFloat64( roundData, 0, zExp, zSig );
2747 int32 aExp, bExp, zExp;
2763 zExp = aExp;
2772 zExp = bExp;
2784 normalizeFloatx80Subnormal( zSig0, &zExp, &zSig0 );
2787 zExp = aExp;
2797 ++zExp;
2801 roundData, zSign, zExp, zSig0, zSig1 );
2816 int32 aExp, bExp, zExp;
2855 zExp = bExp;
2867 zExp = aExp;
2871 roundData, zSign, zExp, zSig0, zSig1 );
2929 int32 aExp, bExp, zExp;
2968 zExp = aExp + bExp - 0x3FFE;
2972 --zExp;
2976 roundData, zSign, zExp, zSig0, zSig1 );
2990 int32 aExp, bExp, zExp;
3033 zExp = aExp - bExp + 0x3FFE;
3037 ++zExp;
3058 roundData, zSign, zExp, zSig0, zSig1 );
3172 int32 aExp, zExp;
3199 zExp = ( ( aExp - 0x3FFF )>>1 ) + 0x3FFF;
3235 roundData, 0, zExp, zSig0, zSig1 );