Lines Matching refs:ax

188     floatX ax;  in int32ToFloatX()  local
190 ax.isNaN = FALSE; in int32ToFloatX()
191 ax.isInf = FALSE; in int32ToFloatX()
192 ax.sign = ( a < 0 ); in int32ToFloatX()
193 ax.sig.a1 = ax.sign ? - a : a; in int32ToFloatX()
194 ax.sig.a0 = 0; in int32ToFloatX()
196 ax.isZero = TRUE; in int32ToFloatX()
197 return ax; in int32ToFloatX()
199 ax.isZero = FALSE; in int32ToFloatX()
200 ax.sig = shortShift64Left( ax.sig, 23 ); in int32ToFloatX()
201 ax.exp = 32; in int32ToFloatX()
202 while ( ax.sig.a0 < 0x00800000 ) { in int32ToFloatX()
203 ax.sig = shortShift64Left( ax.sig, 1 ); in int32ToFloatX()
204 --ax.exp; in int32ToFloatX()
206 return ax; in int32ToFloatX()
210 static int32 floatXToInt32( floatX ax ) in floatXToInt32() argument
216 if ( ax.isInf || ax.isNaN ) { in floatXToInt32()
218 return ( ax.isInf & ax.sign ) ? 0x80000000 : 0x7FFFFFFF; in floatXToInt32()
220 if ( ax.isZero ) return 0; in floatXToInt32()
222 shiftCount = 52 - ax.exp; in floatXToInt32()
224 ax.sig.a1 = 1; in floatXToInt32()
225 ax.sig.a0 = 0; in floatXToInt32()
229 ax.sig = shortShift64RightJamming( ax.sig, 1 ); in floatXToInt32()
233 ax = roundFloatXTo53( FALSE, ax ); in floatXToInt32()
234 ax.sig = shortShift64RightJamming( ax.sig, 3 ); in floatXToInt32()
235 z = ax.sig.a1; in floatXToInt32()
236 if ( ax.sign ) z = - z; in floatXToInt32()
238 || ax.sig.a0 in floatXToInt32()
239 || ( ( z != 0 ) && ( ( ax.sign ^ ( z < 0 ) ) != 0 ) ) in floatXToInt32()
242 return ax.sign ? 0x80000000 : 0x7FFFFFFF; in floatXToInt32()
251 floatX ax; in float32ToFloatX() local
253 ax.isNaN = FALSE; in float32ToFloatX()
254 ax.isInf = FALSE; in float32ToFloatX()
255 ax.isZero = FALSE; in float32ToFloatX()
256 ax.sign = ( ( a & 0x80000000 ) != 0 ); in float32ToFloatX()
258 ax.sig.a1 = 0; in float32ToFloatX()
259 ax.sig.a0 = a & 0x007FFFFF; in float32ToFloatX()
261 if ( ax.sig.a0 == 0 ) { in float32ToFloatX()
262 ax.isZero = TRUE; in float32ToFloatX()
267 ax.sig.a0 <<= 1; in float32ToFloatX()
269 } while ( ax.sig.a0 < 0x00800000 ); in float32ToFloatX()
270 ax.exp = expField; in float32ToFloatX()
274 if ( ax.sig.a0 == 0 ) { in float32ToFloatX()
275 ax.isInf = TRUE; in float32ToFloatX()
278 ax.isNaN = TRUE; in float32ToFloatX()
282 ax.sig.a0 |= 0x00800000; in float32ToFloatX()
283 ax.exp = expField - 0x7F; in float32ToFloatX()
285 return ax; in float32ToFloatX()
370 floatX ax; in float64ToFloatX() local
372 ax.isNaN = FALSE; in float64ToFloatX()
373 ax.isInf = FALSE; in float64ToFloatX()
374 ax.isZero = FALSE; in float64ToFloatX()
376 ax.sign = ( ( a & LIT64( 0x8000000000000000 ) ) != 0 ); in float64ToFloatX()
378 ax.sig.a1 = a; in float64ToFloatX()
379 ax.sig.a0 = ( a>>32 ) & 0x000FFFFF; in float64ToFloatX()
381 ax.sign = ( ( a.high & 0x80000000 ) != 0 ); in float64ToFloatX()
383 ax.sig.a1 = a.low; in float64ToFloatX()
384 ax.sig.a0 = a.high & 0x000FFFFF; in float64ToFloatX()
387 if ( ( ax.sig.a0 == 0 ) && ( ax.sig.a1 == 0 ) ) { in float64ToFloatX()
388 ax.isZero = TRUE; in float64ToFloatX()
393 ax.sig = shortShift64Left( ax.sig, 1 ); in float64ToFloatX()
395 } while ( ax.sig.a0 < 0x00100000 ); in float64ToFloatX()
396 ax.exp = expField; in float64ToFloatX()
400 if ( ( ax.sig.a0 == 0 ) && ( ax.sig.a1 == 0 ) ) { in float64ToFloatX()
401 ax.isInf = TRUE; in float64ToFloatX()
404 ax.isNaN = TRUE; in float64ToFloatX()
408 ax.exp = expField - 0x3FF; in float64ToFloatX()
409 ax.sig.a0 |= 0x00100000; in float64ToFloatX()
411 ax.sig = shortShift64Left( ax.sig, 3 ); in float64ToFloatX()
412 return ax; in float64ToFloatX()
563 static floatX floatXRoundToInt( floatX ax ) in floatXRoundToInt() argument
567 if ( ax.isNaN || ax.isInf ) return ax; in floatXRoundToInt()
568 shiftCount = 52 - ax.exp; in floatXRoundToInt()
569 if ( shiftCount <= 0 ) return ax; in floatXRoundToInt()
571 ax.exp = 52; in floatXRoundToInt()
572 ax.sig.a1 = ! ax.isZero; in floatXRoundToInt()
573 ax.sig.a0 = 0; in floatXRoundToInt()
577 ax.sig = shortShift64RightJamming( ax.sig, 1 ); in floatXRoundToInt()
578 ++ax.exp; in floatXRoundToInt()
582 ax = roundFloatXTo53( FALSE, ax ); in floatXRoundToInt()
583 if ( ( ax.sig.a0 == 0 ) && ( ax.sig.a1 == 0 ) ) ax.isZero = TRUE; in floatXRoundToInt()
584 return ax; in floatXRoundToInt()
588 static floatX floatXAdd( floatX ax, floatX bx ) in floatXAdd() argument
593 if ( ax.isNaN ) return ax; in floatXAdd()
595 if ( ax.isInf && bx.isInf ) { in floatXAdd()
596 if ( ax.sign == bx.sign ) return ax; in floatXAdd()
599 if ( ax.isInf ) return ax; in floatXAdd()
601 if ( ax.isZero && bx.isZero ) { in floatXAdd()
602 if ( ax.sign == bx.sign ) return ax; in floatXAdd()
605 if ( ( ax.sign != bx.sign ) in floatXAdd()
606 && ( ax.exp == bx.exp ) in floatXAdd()
607 && eq64( ax.sig, bx.sig ) in floatXAdd()
615 if ( ax.isZero ) return bx; in floatXAdd()
616 if ( bx.isZero ) return ax; in floatXAdd()
617 expDiff = ax.exp - bx.exp; in floatXAdd()
619 zx = ax; in floatXAdd()
631 if ( ax.sign != bx.sign ) zx.sig = neg64( zx.sig ); in floatXAdd()
637 zx.exp = ax.exp; in floatXAdd()
648 if ( ax.sign != bx.sign ) zx.sig = neg64( zx.sig ); in floatXAdd()
649 zx.sign = ax.sign; in floatXAdd()
650 zx.sig = add64( zx.sig, ax.sig ); in floatXAdd()
660 static floatX floatXMul( floatX ax, floatX bx ) in floatXMul() argument
665 if ( ax.isNaN ) return ax; in floatXMul()
667 if ( ax.isInf ) { in floatXMul()
669 if ( bx.sign ) ax.sign = ! ax.sign; in floatXMul()
670 return ax; in floatXMul()
673 if ( ax.isZero ) return floatXInvalid(); in floatXMul()
674 if ( ax.sign ) bx.sign = ! bx.sign; in floatXMul()
677 zx = ax; in floatXMul()
679 if ( ax.isZero || bx.isZero ) { in floatXMul()
686 if ( bx.sig.a1 & 2 ) zx.sig = add64( zx.sig, ax.sig ); in floatXMul()
694 static floatX floatXDiv( floatX ax, floatX bx ) in floatXDiv() argument
700 if ( ax.isNaN ) return ax; in floatXDiv()
702 if ( ax.isInf ) { in floatXDiv()
704 if ( bx.sign ) ax.sign = ! ax.sign; in floatXDiv()
705 return ax; in floatXDiv()
708 if ( ax.isZero ) return floatXInvalid(); in floatXDiv()
710 if ( ax.sign ) bx.sign = ! bx.sign; in floatXDiv()
715 zx = ax; in floatXDiv()
717 if ( ax.isZero || bx.isInf ) { in floatXDiv()
725 if ( le64( bx.sig, ax.sig ) ) { in floatXDiv()
727 ax.sig = add64( ax.sig, negBSig ); in floatXDiv()
729 ax.sig = shortShift64Left( ax.sig, 1 ); in floatXDiv()
732 if ( ax.sig.a0 || ax.sig.a1 ) zx.sig.a1 |= 1; in floatXDiv()
737 static floatX floatXRem( floatX ax, floatX bx ) in floatXRem() argument
743 if ( ax.isNaN ) return ax; in floatXRem()
745 if ( ax.isInf || bx.isZero ) return floatXInvalid(); in floatXRem()
746 if ( ax.isZero || bx.isInf ) return ax; in floatXRem()
748 if ( ax.exp < bx.exp ) return ax; in floatXRem()
751 while ( bx.exp < ax.exp ) { in floatXRem()
752 if ( le64( bx.sig, ax.sig ) ) ax.sig = add64( ax.sig, negBSig ); in floatXRem()
753 ax.sig = shortShift64Left( ax.sig, 1 ); in floatXRem()
754 --ax.exp; in floatXRem()
756 lastQuotientBit = le64( bx.sig, ax.sig ); in floatXRem()
757 if ( lastQuotientBit ) ax.sig = add64( ax.sig, negBSig ); in floatXRem()
758 savedASig = ax.sig; in floatXRem()
759 ax.sig = neg64( add64( ax.sig, negBSig ) ); in floatXRem()
760 if ( lt64( ax.sig, savedASig ) ) { in floatXRem()
761 ax.sign = ! ax.sign; in floatXRem()
763 else if ( lt64( savedASig, ax.sig ) ) { in floatXRem()
764 ax.sig = savedASig; in floatXRem()
768 ax.sign = ! ax.sign; in floatXRem()
771 ax.sig = savedASig; in floatXRem()
774 if ( ( ax.sig.a0 == 0 ) && ( ax.sig.a1 == 0 ) ) ax.isZero = TRUE; in floatXRem()
775 return ax; in floatXRem()
779 static floatX floatXSqrt( floatX ax ) in floatXSqrt() argument
785 if ( ax.isNaN || ax.isZero ) return ax; in floatXSqrt()
786 if ( ax.sign ) return floatXInvalid(); in floatXSqrt()
787 if ( ax.isInf ) return ax; in floatXSqrt()
788 zx = ax; in floatXSqrt()
790 if ( ( ax.exp & 1 ) == 0 ) ax.sig = shortShift64RightJamming( ax.sig, 1 ); in floatXSqrt()
796 savedASig = ax.sig; in floatXSqrt()
797 ax.sig = add64( ax.sig, neg64( zx.sig ) ); in floatXSqrt()
798 ax.sig = shortShift64Left( ax.sig, 1 ); in floatXSqrt()
799 ax.sig = add64( ax.sig, neg64( bitSig ) ); in floatXSqrt()
800 if ( ax.sig.a0 & 0x80000000 ) { in floatXSqrt()
801 ax.sig = shortShift64Left( savedASig, 1 ); in floatXSqrt()
809 if ( ax.sig.a0 || ax.sig.a1 ) zx.sig.a1 |= 1; in floatXSqrt()
814 static flag floatXEq( floatX ax, floatX bx ) in floatXEq() argument
817 if ( ax.isNaN || bx.isNaN ) return FALSE; in floatXEq()
818 if ( ax.isZero && bx.isZero ) return TRUE; in floatXEq()
819 if ( ax.sign != bx.sign ) return FALSE; in floatXEq()
820 if ( ax.isInf || bx.isInf ) return ax.isInf && bx.isInf; in floatXEq()
821 return ( ax.exp == bx.exp ) && eq64( ax.sig, bx.sig ); in floatXEq()
825 static flag floatXLe( floatX ax, floatX bx ) in floatXLe() argument
828 if ( ax.isNaN || bx.isNaN ) return FALSE; in floatXLe()
829 if ( ax.isZero && bx.isZero ) return TRUE; in floatXLe()
830 if ( ax.sign != bx.sign ) return ax.sign; in floatXLe()
831 if ( ax.sign ) { in floatXLe()
832 if ( ax.isInf || bx.isZero ) return TRUE; in floatXLe()
833 if ( bx.isInf || ax.isZero ) return FALSE; in floatXLe()
834 if ( bx.exp < ax.exp ) return TRUE; in floatXLe()
835 if ( ax.exp < bx.exp ) return FALSE; in floatXLe()
836 return le64( bx.sig, ax.sig ); in floatXLe()
839 if ( bx.isInf || ax.isZero ) return TRUE; in floatXLe()
840 if ( ax.isInf || bx.isZero ) return FALSE; in floatXLe()
841 if ( ax.exp < bx.exp ) return TRUE; in floatXLe()
842 if ( bx.exp < ax.exp ) return FALSE; in floatXLe()
843 return le64( ax.sig, bx.sig ); in floatXLe()
848 static flag floatXLt( floatX ax, floatX bx ) in floatXLt() argument
851 if ( ax.isNaN || bx.isNaN ) return FALSE; in floatXLt()
852 if ( ax.isZero && bx.isZero ) return FALSE; in floatXLt()
853 if ( ax.sign != bx.sign ) return ax.sign; in floatXLt()
854 if ( ax.isInf && bx.isInf ) return FALSE; in floatXLt()
855 if ( ax.sign ) { in floatXLt()
856 if ( ax.isInf || bx.isZero ) return TRUE; in floatXLt()
857 if ( bx.isInf || ax.isZero ) return FALSE; in floatXLt()
858 if ( bx.exp < ax.exp ) return TRUE; in floatXLt()
859 if ( ax.exp < bx.exp ) return FALSE; in floatXLt()
860 return lt64( bx.sig, ax.sig ); in floatXLt()
863 if ( bx.isInf || ax.isZero ) return TRUE; in floatXLt()
864 if ( ax.isInf || bx.isZero ) return FALSE; in floatXLt()
865 if ( ax.exp < bx.exp ) return TRUE; in floatXLt()
866 if ( bx.exp < ax.exp ) return FALSE; in floatXLt()
867 return lt64( ax.sig, bx.sig ); in floatXLt()
982 floatX ax, bx; in slow_float32_le() local
984 ax = float32ToFloatX( a ); in slow_float32_le()
986 if ( ax.isNaN || bx.isNaN ) { in slow_float32_le()
989 return floatXLe( ax, bx ); in slow_float32_le()
995 floatX ax, bx; in slow_float32_lt() local
997 ax = float32ToFloatX( a ); in slow_float32_lt()
999 if ( ax.isNaN || bx.isNaN ) { in slow_float32_lt()
1002 return floatXLt( ax, bx ); in slow_float32_lt()
1008 floatX ax, bx; in slow_float32_eq_signaling() local
1010 ax = float32ToFloatX( a ); in slow_float32_eq_signaling()
1012 if ( ax.isNaN || bx.isNaN ) { in slow_float32_eq_signaling()
1015 return floatXEq( ax, bx ); in slow_float32_eq_signaling()
1133 floatX ax, bx; in slow_float64_le() local
1135 ax = float64ToFloatX( a ); in slow_float64_le()
1137 if ( ax.isNaN || bx.isNaN ) { in slow_float64_le()
1140 return floatXLe( ax, bx ); in slow_float64_le()
1146 floatX ax, bx; in slow_float64_lt() local
1148 ax = float64ToFloatX( a ); in slow_float64_lt()
1150 if ( ax.isNaN || bx.isNaN ) { in slow_float64_lt()
1153 return floatXLt( ax, bx ); in slow_float64_lt()
1159 floatX ax, bx; in slow_float64_eq_signaling() local
1161 ax = float64ToFloatX( a ); in slow_float64_eq_signaling()
1163 if ( ax.isNaN || bx.isNaN ) { in slow_float64_eq_signaling()
1166 return floatXEq( ax, bx ); in slow_float64_eq_signaling()