• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/tools/test/testfloat/

Lines Matching refs:zx

117 static floatX roundFloatXTo24( flag isTiny, floatX zx )
120 if ( zx.sig.a1 ) {
125 if ( zx.sig.a1 < 0x80000000 ) goto noIncrement;
126 if ( ( zx.sig.a1 == 0x80000000 ) && ! ( zx.sig.a0 & 1 ) ) {
133 if ( ! zx.sign ) goto noIncrement;
136 if ( zx.sign ) goto noIncrement;
139 ++zx.sig.a0;
140 if ( zx.sig.a0 == 0x01000000 ) {
141 zx.sig.a0 = 0x00800000;
142 ++zx.exp;
146 zx.sig.a1 = 0;
147 return zx;
151 static floatX roundFloatXTo53( flag isTiny, floatX zx )
155 roundBits = zx.sig.a1 & 7;
156 zx.sig.a1 -= roundBits;
163 if ( ( roundBits == 4 ) && ! ( zx.sig.a1 & 8 ) ) goto noIncrement;
168 if ( ! zx.sign ) goto noIncrement;
171 if ( zx.sign ) goto noIncrement;
174 zx.sig.a1 += 8;
175 zx.sig.a0 += ( zx.sig.a1 == 0 );
176 if ( zx.sig.a0 == 0x01000000 ) {
177 zx.sig.a0 = 0x00800000;
178 ++zx.exp;
182 return zx;
289 static float32 floatXToFloat32( floatX zx )
296 if ( zx.isZero ) return zx.sign ? 0x80000000 : 0;
297 if ( zx.isInf ) return zx.sign ? 0xFF800000 : 0x7F800000;
298 if ( zx.isNaN ) return 0xFFFFFFFF;
299 while ( 0x01000000 <= zx.sig.a0 ) {
300 zx.sig = shortShift64RightJamming( zx.sig, 1 );
301 ++zx.exp;
303 while ( zx.sig.a0 < 0x00800000 ) {
304 zx.sig = shortShift64Left( zx.sig, 1 );
305 --zx.exp;
307 savedZ = zx;
310 && ( zx.exp + 0x7F <= 0 );
311 zx = roundFloatXTo24( isTiny, zx );
312 expField = zx.exp + 0x7F;
316 if ( zx.sign ) {
344 zx = savedZ;
345 expField = zx.exp + 0x7F;
347 zx.sig.a1 = ( zx.sig.a0 != 0 ) || ( zx.sig.a1 != 0 );
348 zx.sig.a0 = 0;
352 zx.sig = shortShift64RightJamming( zx.sig, 1 );
356 zx = roundFloatXTo24( isTiny, zx );
357 expField = ( 0x00800000 <= zx.sig.a0 ) ? 1 : 0;
361 if ( zx.sign ) z |= 0x80000000;
362 z |= zx.sig.a0 & 0x007FFFFF;
416 static float64 floatXToFloat64( floatX zx )
424 if ( zx.isZero ) return zx.sign ? LIT64( 0x8000000000000000 ) : 0;
425 if ( zx.isInf ) {
427 zx.sign ? LIT64( 0xFFF0000000000000 )
430 if ( zx.isNaN ) return LIT64( 0xFFFFFFFFFFFFFFFF );
432 if ( zx.isZero ) {
434 z.high = zx.sign ? 0x80000000 : 0;
437 if ( zx.isInf ) {
439 z.high = zx.sign ? 0xFFF00000 : 0x7FF00000;
442 if ( zx.isNaN ) {
447 while ( 0x01000000 <= zx.sig.a0 ) {
448 zx.sig = shortShift64RightJamming( zx.sig, 1 );
449 ++zx.exp;
451 while ( zx.sig.a0 < 0x00800000 ) {
452 zx.sig = shortShift64Left( zx.sig, 1 );
453 --zx.exp;
455 savedZ = zx;
458 && ( zx.exp + 0x3FF <= 0 );
459 zx = roundFloatXTo53( isTiny, zx );
460 expField = zx.exp + 0x3FF;
465 if ( zx.sign ) {
490 if ( zx.sign ) {
523 zx = savedZ;
524 expField = zx.exp + 0x3FF;
526 zx.sig.a1 = ( zx.sig.a0 != 0 ) || ( zx.sig.a1 != 0 );
527 zx.sig.a0 = 0;
531 zx.sig = shortShift64RightJamming( zx.sig, 1 );
535 zx = roundFloatXTo53( isTiny, zx );
536 expField = ( 0x00800000 <= zx.sig.a0 ) ? 1 : 0;
538 zx.sig = shortShift64RightJamming( zx.sig, 3 );
542 if ( zx.sign ) z |= LIT64( 0x8000000000000000 );
543 z |= ( ( (bits64) ( zx.sig.a0 & 0x000FFFFF ) )<<32 ) | zx.sig.a1;
545 z.low = zx.sig.a1;
548 if ( zx.sign ) z.high |= 0x80000000;
549 z.high |= zx.sig.a0 & 0x000FFFFF;
591 floatX zx;
619 zx = ax;
620 zx.exp = bx.exp;
622 zx.sig.a1 = 1;
623 zx.sig.a0 = 0;
627 zx.sig = shortShift64RightJamming( zx.sig, 1 );
631 if ( ax.sign != bx.sign ) zx.sig = neg64( zx.sig );
632 zx.sign = bx.sign;
633 zx.sig = add64( zx.sig, bx.sig );
636 zx = bx;
637 zx.exp = ax.exp;
639 zx.sig.a1 = 1;
640 zx.sig.a0 = 0;
644 zx.sig = shortShift64RightJamming( zx.sig, 1 );
648 if ( ax.sign != bx.sign ) zx.sig = neg64( zx.sig );
649 zx.sign = ax.sign;
650 zx.sig = add64( zx.sig, ax.sig );
652 if ( zx.sig.a0 & 0x80000000 ) {
653 zx.sig = neg64( zx.sig );
654 zx.sign = ! zx.sign;
656 return zx;
663 floatX zx;
677 zx = ax;
678 zx.sign ^= bx.sign;
680 return zx.sign ? floatXNegativeZero : floatXPositiveZero;
682 zx.exp += bx.exp + 1;
683 zx.sig.a1 = 0;
684 zx.sig.a0 = 0;
686 if ( bx.sig.a1 & 2 ) zx.sig = add64( zx.sig, ax.sig );
688 zx.sig = shortShift64RightJamming( zx.sig, 1 );
690 return zx;
698 floatX zx;
715 zx = ax;
716 zx.sign ^= bx.sign;
718 return zx.sign ? floatXNegativeZero : floatXPositiveZero;
720 zx.exp -= bx.exp + 1;
721 zx.sig.a1 = 0;
722 zx.sig.a0 = 0;
726 zx.sig.a1 |= 1;
730 zx.sig = shortShift64Left( zx.sig, 1 );
732 if ( ax.sig.a0 || ax.sig.a1 ) zx.sig.a1 |= 1;
733 return zx;
783 floatX zx;
788 zx = ax;
789 zx.exp >>= 1;
791 zx.sig.a1 = 0;
792 zx.sig.a0 = 0;
797 ax.sig = add64( ax.sig, neg64( zx.sig ) );
804 zx.sig.a1 |= bitSig.a1;
805 zx.sig.a0 |= bitSig.a0;
809 if ( ax.sig.a0 || ax.sig.a1 ) zx.sig.a1 |= 1;
810 return zx;