Lines Matching refs:zSig0
648 int8 roundingPrecision, flag zSign, int32 zExp, bits64 zSig0, bits64 zSig1 in roundAndPackFloatx80() argument
669 zSig0 |= ( zSig1 != 0 ); in roundAndPackFloatx80()
684 roundBits = zSig0 & roundMask; in roundAndPackFloatx80()
687 || ( ( zExp == 0x7FFE ) && ( zSig0 + roundIncrement < zSig0 ) ) in roundAndPackFloatx80()
695 || ( zSig0 <= zSig0 + roundIncrement ); in roundAndPackFloatx80()
696 shift64RightJamming( zSig0, 1 - zExp, &zSig0 ); in roundAndPackFloatx80()
698 roundBits = zSig0 & roundMask; in roundAndPackFloatx80()
701 zSig0 += roundIncrement; in roundAndPackFloatx80()
702 if ( (sbits64) zSig0 < 0 ) zExp = 1; in roundAndPackFloatx80()
707 zSig0 &= ~ roundMask; in roundAndPackFloatx80()
708 return packFloatx80( zSign, zExp, zSig0 ); in roundAndPackFloatx80()
712 zSig0 += roundIncrement; in roundAndPackFloatx80()
713 if ( zSig0 < roundIncrement ) { in roundAndPackFloatx80()
715 zSig0 = LIT64( 0x8000000000000000 ); in roundAndPackFloatx80()
721 zSig0 &= ~ roundMask; in roundAndPackFloatx80()
722 if ( zSig0 == 0 ) zExp = 0; in roundAndPackFloatx80()
723 return packFloatx80( zSign, zExp, zSig0 ); in roundAndPackFloatx80()
742 && ( zSig0 == LIT64( 0xFFFFFFFFFFFFFFFF ) ) in roundAndPackFloatx80()
762 || ( zSig0 < LIT64( 0xFFFFFFFFFFFFFFFF ) ); in roundAndPackFloatx80()
763 shift64ExtraRightJamming( zSig0, zSig1, 1 - zExp, &zSig0, &zSig1 ); in roundAndPackFloatx80()
779 ++zSig0; in roundAndPackFloatx80()
780 zSig0 &= in roundAndPackFloatx80()
782 if ( (sbits64) zSig0 < 0 ) zExp = 1; in roundAndPackFloatx80()
784 return packFloatx80( zSign, zExp, zSig0 ); in roundAndPackFloatx80()
789 ++zSig0; in roundAndPackFloatx80()
790 if ( zSig0 == 0 ) { in roundAndPackFloatx80()
792 zSig0 = LIT64( 0x8000000000000000 ); in roundAndPackFloatx80()
795 zSig0 &= ~ ( ( (bits64) ( zSig1<<1 ) == 0 ) & roundNearestEven ); in roundAndPackFloatx80()
799 if ( zSig0 == 0 ) zExp = 0; in roundAndPackFloatx80()
801 return packFloatx80( zSign, zExp, zSig0 ); in roundAndPackFloatx80()
817 int8 roundingPrecision, flag zSign, int32 zExp, bits64 zSig0, bits64 zSig1 in normalizeRoundAndPackFloatx80() argument
822 if ( zSig0 == 0 ) { in normalizeRoundAndPackFloatx80()
823 zSig0 = zSig1; in normalizeRoundAndPackFloatx80()
827 shiftCount = countLeadingZeros64( zSig0 ); in normalizeRoundAndPackFloatx80()
828 shortShift128Left( zSig0, zSig1, shiftCount, &zSig0, &zSig1 ); in normalizeRoundAndPackFloatx80()
831 roundAndPackFloatx80( roundingPrecision, zSign, zExp, zSig0, zSig1 ); in normalizeRoundAndPackFloatx80()
947 packFloat128( flag zSign, int32 zExp, bits64 zSig0, bits64 zSig1 ) in packFloat128() argument
952 z.high = ( ( (bits64) zSign )<<63 ) + ( ( (bits64) zExp )<<48 ) + zSig0; in packFloat128()
981 flag zSign, int32 zExp, bits64 zSig0, bits64 zSig1, bits64 zSig2 ) in roundAndPackFloat128() argument
1008 zSig0, in roundAndPackFloat128()
1035 zSig0, in roundAndPackFloat128()
1041 zSig0, zSig1, zSig2, - zExp, &zSig0, &zSig1, &zSig2 ); in roundAndPackFloat128()
1059 add128( zSig0, zSig1, 0, 1, &zSig0, &zSig1 ); in roundAndPackFloat128()
1063 if ( ( zSig0 | zSig1 ) == 0 ) zExp = 0; in roundAndPackFloat128()
1065 return packFloat128( zSign, zExp, zSig0, zSig1 ); in roundAndPackFloat128()
1082 flag zSign, int32 zExp, bits64 zSig0, bits64 zSig1 ) in normalizeRoundAndPackFloat128() argument
1087 if ( zSig0 == 0 ) { in normalizeRoundAndPackFloat128()
1088 zSig0 = zSig1; in normalizeRoundAndPackFloat128()
1092 shiftCount = countLeadingZeros64( zSig0 ) - 15; in normalizeRoundAndPackFloat128()
1095 shortShift128Left( zSig0, zSig1, shiftCount, &zSig0, &zSig1 ); in normalizeRoundAndPackFloat128()
1099 zSig0, zSig1, 0, - shiftCount, &zSig0, &zSig1, &zSig2 ); in normalizeRoundAndPackFloat128()
1102 return roundAndPackFloat128( zSign, zExp, zSig0, zSig1, zSig2 ); in normalizeRoundAndPackFloat128()
1226 bits64 zSig0; in int32_to_float128() local
1232 zSig0 = absA; in int32_to_float128()
1233 return packFloat128( zSign, 0x402E - shiftCount, zSig0<<shiftCount, 0 ); in int32_to_float128()
1240 bits64 zSig0 = a; in uint32_to_float128() local
1244 return packFloat128( 0, 0x402E - shiftCount, zSig0<<shiftCount, 0 ); in uint32_to_float128()
1347 bits64 zSig0, zSig1; in int64_to_float128() local
1356 zSig0 = absA; in int64_to_float128()
1361 zSig0 = 0; in int64_to_float128()
1363 shortShift128Left( zSig0, zSig1, shiftCount, &zSig0, &zSig1 ); in int64_to_float128()
1364 return packFloat128( zSign, zExp, zSig0, zSig1 ); in int64_to_float128()
2574 bits64 aSig, zSig0, zSig1; in float64_to_float128() local
2588 shift128Right( aSig, 0, 4, &zSig0, &zSig1 ); in float64_to_float128()
2589 return packFloat128( aSign, aExp + 0x3C00, zSig0, zSig1 ); in float64_to_float128()
2863 bits64 aSig, bSig, zSig0, zSig1; in float64_mul() local
2901 mul64To128( aSig, bSig, &zSig0, &zSig1 ); in float64_mul()
2902 zSig0 |= ( zSig1 != 0 ); in float64_mul()
2903 if ( 0 <= (sbits64) ( zSig0<<1 ) ) { in float64_mul()
2904 zSig0 <<= 1; in float64_mul()
2907 return roundAndPackFloat64( zSign, zExp, zSig0 ); in float64_mul()
3513 bits64 aSig, zSig0, zSig1; in floatx80_to_float128() local
3521 shift128Right( aSig<<1, 0, 16, &zSig0, &zSig1 ); in floatx80_to_float128()
3522 return packFloat128( aSign, aExp, zSig0, zSig1 ); in floatx80_to_float128()
3616 bits64 aSig, bSig, zSig0, zSig1; in addFloatx80Sigs() local
3650 zSig0 = aSig + bSig; in addFloatx80Sigs()
3652 normalizeFloatx80Subnormal( zSig0, &zExp, &zSig0 ); in addFloatx80Sigs()
3658 zSig0 = aSig + bSig; in addFloatx80Sigs()
3659 if ( (sbits64) zSig0 < 0 ) goto roundAndPack; in addFloatx80Sigs()
3661 shift64ExtraRightJamming( zSig0, zSig1, 1, &zSig0, &zSig1 ); in addFloatx80Sigs()
3662 zSig0 |= LIT64( 0x8000000000000000 ); in addFloatx80Sigs()
3667 floatx80_rounding_precision, zSign, zExp, zSig0, zSig1 ); in addFloatx80Sigs()
3683 bits64 aSig, bSig, zSig0, zSig1; in subFloatx80Sigs() local
3719 sub128( bSig, 0, aSig, zSig1, &zSig0, &zSig1 ); in subFloatx80Sigs()
3731 sub128( aSig, 0, bSig, zSig1, &zSig0, &zSig1 ); in subFloatx80Sigs()
3736 floatx80_rounding_precision, zSign, zExp, zSig0, zSig1 ); in subFloatx80Sigs()
3795 bits64 aSig, bSig, zSig0, zSig1; in floatx80_mul() local
3833 mul64To128( aSig, bSig, &zSig0, &zSig1 ); in floatx80_mul()
3834 if ( 0 < (sbits64) zSig0 ) { in floatx80_mul()
3835 shortShift128Left( zSig0, zSig1, 1, &zSig0, &zSig1 ); in floatx80_mul()
3840 floatx80_rounding_precision, zSign, zExp, zSig0, zSig1 ); in floatx80_mul()
3855 bits64 aSig, bSig, zSig0, zSig1; in floatx80_div() local
3902 zSig0 = estimateDiv128To64( aSig, rem1, bSig ); in floatx80_div()
3903 mul64To128( bSig, zSig0, &term0, &term1 ); in floatx80_div()
3906 --zSig0; in floatx80_div()
3921 floatx80_rounding_precision, zSign, zExp, zSig0, zSig1 ); in floatx80_div()
4034 bits64 aSig0, aSig1, zSig0, zSig1, doubleZSig0; in floatx80_sqrt() local
4059 zSig0 = estimateSqrt32( aExp, aSig0>>32 ); in floatx80_sqrt()
4061 zSig0 = estimateDiv128To64( aSig0, aSig1, zSig0<<32 ) + ( zSig0<<30 ); in floatx80_sqrt()
4062 doubleZSig0 = zSig0<<1; in floatx80_sqrt()
4063 mul64To128( zSig0, zSig0, &term0, &term1 ); in floatx80_sqrt()
4066 --zSig0; in floatx80_sqrt()
4068 add128( rem0, rem1, zSig0>>63, doubleZSig0 | 1, &rem0, &rem1 ); in floatx80_sqrt()
4086 shortShift128Left( 0, zSig1, 1, &zSig0, &zSig1 ); in floatx80_sqrt()
4087 zSig0 |= doubleZSig0; in floatx80_sqrt()
4090 floatx80_rounding_precision, 0, zExp, zSig0, zSig1 ); in floatx80_sqrt()
4765 bits64 aSig0, aSig1, bSig0, bSig1, zSig0, zSig1, zSig2; in addFloat128Sigs() local
4812 add128( aSig0, aSig1, bSig0, bSig1, &zSig0, &zSig1 ); in addFloat128Sigs()
4813 if ( aExp == 0 ) return packFloat128( zSign, 0, zSig0, zSig1 ); in addFloat128Sigs()
4815 zSig0 |= LIT64( 0x0002000000000000 ); in addFloat128Sigs()
4820 add128( aSig0, aSig1, bSig0, bSig1, &zSig0, &zSig1 ); in addFloat128Sigs()
4822 if ( zSig0 < LIT64( 0x0002000000000000 ) ) goto roundAndPack; in addFloat128Sigs()
4826 zSig0, zSig1, zSig2, 1, &zSig0, &zSig1, &zSig2 ); in addFloat128Sigs()
4828 return roundAndPackFloat128( zSign, zExp, zSig0, zSig1, zSig2 ); in addFloat128Sigs()
4844 bits64 aSig0, aSig1, bSig0, bSig1, zSig0, zSig1; in subFloat128Sigs() local
4891 sub128( bSig0, bSig1, aSig0, aSig1, &zSig0, &zSig1 ); in subFloat128Sigs()
4909 sub128( aSig0, aSig1, bSig0, bSig1, &zSig0, &zSig1 ); in subFloat128Sigs()
4913 return normalizeRoundAndPackFloat128( zSign, zExp - 14, zSig0, zSig1 ); in subFloat128Sigs()
4972 bits64 aSig0, aSig1, bSig0, bSig1, zSig0, zSig1, zSig2, zSig3; in float128_mul() local
5014 mul128To256( aSig0, aSig1, bSig0, bSig1, &zSig0, &zSig1, &zSig2, &zSig3 ); in float128_mul()
5015 add128( zSig0, zSig1, aSig0, aSig1, &zSig0, &zSig1 ); in float128_mul()
5017 if ( LIT64( 0x0002000000000000 ) <= zSig0 ) { in float128_mul()
5019 zSig0, zSig1, zSig2, 1, &zSig0, &zSig1, &zSig2 ); in float128_mul()
5022 return roundAndPackFloat128( zSign, zExp, zSig0, zSig1, zSig2 ); in float128_mul()
5037 bits64 aSig0, aSig1, bSig0, bSig1, zSig0, zSig1, zSig2; in float128_div() local
5089 zSig0 = estimateDiv128To64( aSig0, aSig1, bSig0 ); in float128_div()
5090 mul128By64To192( bSig0, bSig1, zSig0, &term0, &term1, &term2 ); in float128_div()
5093 --zSig0; in float128_div()
5106 shift128ExtraRightJamming( zSig0, zSig1, 0, 15, &zSig0, &zSig1, &zSig2 ); in float128_div()
5107 return roundAndPackFloat128( zSign, zExp, zSig0, zSig1, zSig2 ); in float128_div()
5233 bits64 aSig0, aSig1, zSig0, zSig1, zSig2, doubleZSig0; in float128_sqrt() local
5260 zSig0 = estimateSqrt32( aExp, aSig0>>17 ); in float128_sqrt()
5262 zSig0 = estimateDiv128To64( aSig0, aSig1, zSig0<<32 ) + ( zSig0<<30 ); in float128_sqrt()
5263 doubleZSig0 = zSig0<<1; in float128_sqrt()
5264 mul64To128( zSig0, zSig0, &term0, &term1 ); in float128_sqrt()
5267 --zSig0; in float128_sqrt()
5269 add128( rem0, rem1, zSig0>>63, doubleZSig0 | 1, &rem0, &rem1 ); in float128_sqrt()
5287 shift128ExtraRightJamming( zSig0, zSig1, 0, 14, &zSig0, &zSig1, &zSig2 ); in float128_sqrt()
5288 return roundAndPackFloat128( 0, zExp, zSig0, zSig1, zSig2 ); in float128_sqrt()