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

Lines Matching refs:zx

120 static floatX roundFloatXTo24( flag isTiny, floatX zx )
124 zx.sig.a0 |= ( zx.sig.a1 != 0 );
125 zx.sig.a1 = 0;
126 roundBits = zx.sig.a0 & 0xFFFFFFFF;
127 zx.sig.a0 -= roundBits;
135 && ! ( zx.sig.a0 & LIT64( 0x100000000 ) ) ) {
142 if ( ! zx.sign ) goto noIncrement;
145 if ( zx.sign ) goto noIncrement;
148 zx.sig.a0 += LIT64( 0x100000000 );
149 if ( zx.sig.a0 == LIT64( 0x0100000000000000 ) ) {
150 zx.sig.a0 = LIT64( 0x0080000000000000 );
151 ++zx.exp;
155 return zx;
159 static floatX roundFloatXTo53( flag isTiny, floatX zx )
163 zx.sig.a0 |= ( zx.sig.a1 != 0 );
164 zx.sig.a1 = 0;
165 roundBits = zx.sig.a0 & 7;
166 zx.sig.a0 -= roundBits;
173 if ( ( roundBits == 4 ) && ! ( zx.sig.a0 & 8 ) ) goto noIncrement;
178 if ( ! zx.sign ) goto noIncrement;
181 if ( zx.sign ) goto noIncrement;
184 zx.sig.a0 += 8;
185 if ( zx.sig.a0 == LIT64( 0x0100000000000000 ) ) {
186 zx.sig.a0 = LIT64( 0x0080000000000000 );
187 ++zx.exp;
191 return zx;
195 static floatX roundFloatXTo64( flag isTiny, floatX zx )
199 roundBits = zx.sig.a1 & LIT64( 0x00FFFFFFFFFFFFFF );
200 zx.sig.a1 -= roundBits;
208 && ! ( zx.sig.a1 & LIT64( 0x0100000000000000 ) ) ) {
215 if ( ! zx.sign ) goto noIncrement;
218 if ( zx.sign ) goto noIncrement;
221 zx.sig.a1 += LIT64( 0x0100000000000000 );
222 zx.sig.a0 += ( zx.sig.a1 == 0 );
223 if ( zx.sig.a0 == LIT64( 0x0100000000000000 ) ) {
224 zx.sig.a0 = LIT64( 0x0080000000000000 );
225 ++zx.exp;
229 return zx;
233 static floatX roundFloatXTo113( flag isTiny, floatX zx )
237 roundBits = zx.sig.a1 & 0x7F;
238 zx.sig.a1 -= roundBits;
246 && ! ( zx.sig.a1 & 0x80 ) ) goto noIncrement;
251 if ( ! zx.sign ) goto noIncrement;
254 if ( zx.sign ) goto noIncrement;
257 zx.sig.a1 += 0x80;
258 zx.sig.a0 += ( zx.sig.a1 == 0 );
259 if ( zx.sig.a0 == LIT64( 0x0100000000000000 ) ) {
260 zx.sig.a0 = LIT64( 0x0080000000000000 );
261 ++zx.exp;
265 return zx;
440 static float32 floatXToFloat32( floatX zx )
447 if ( zx.isZero ) return zx.sign ? 0x80000000 : 0;
448 if ( zx.isInf ) return zx.sign ? 0xFF800000 : 0x7F800000;
449 if ( zx.isNaN ) return 0xFFFFFFFF;
450 while ( LIT64( 0x0100000000000000 ) <= zx.sig.a0 ) {
451 zx.sig = shortShift128RightJamming( zx.sig, 1 );
452 ++zx.exp;
454 while ( zx.sig.a0 < LIT64( 0x0080000000000000 ) ) {
455 zx.sig = shortShift128Left( zx.sig, 1 );
456 --zx.exp;
458 savedZ = zx;
461 && ( zx.exp + 0x7F <= 0 );
462 zx = roundFloatXTo24( isTiny, zx );
463 expField = zx.exp + 0x7F;
467 if ( zx.sign ) {
495 zx = savedZ;
496 expField = zx.exp + 0x7F;
498 zx.sig.a1 = ( zx.sig.a0 != 0 ) || ( zx.sig.a1 != 0 );
499 zx.sig.a0 = 0;
503 zx.sig = shortShift128RightJamming( zx.sig, 1 );
507 zx = roundFloatXTo24( isTiny, zx );
508 expField = ( LIT64( 0x0080000000000000 ) <= zx.sig.a0 ) ? 1 : 0;
512 if ( zx.sign ) z |= 0x80000000;
513 z |= ( zx.sig.a0>>32 ) & 0x007FFFFF;
560 static float64 floatXToFloat64( floatX zx )
567 if ( zx.isZero ) return zx.sign ? LIT64( 0x8000000000000000 ) : 0;
568 if ( zx.isInf ) {
570 zx.sign ? LIT64( 0xFFF0000000000000 )
573 if ( zx.isNaN ) return LIT64( 0xFFFFFFFFFFFFFFFF );
574 while ( LIT64( 0x0100000000000000 ) <= zx.sig.a0 ) {
575 zx.sig = shortShift128RightJamming( zx.sig, 1 );
576 ++zx.exp;
578 while ( zx.sig.a0 < LIT64( 0x0080000000000000 ) ) {
579 zx.sig = shortShift128Left( zx.sig, 1 );
580 --zx.exp;
582 savedZ = zx;
585 && ( zx.exp + 0x3FF <= 0 );
586 zx = roundFloatXTo53( isTiny, zx );
587 expField = zx.exp + 0x3FF;
591 if ( zx.sign ) {
619 zx = savedZ;
620 expField = zx.exp + 0x3FF;
622 zx.sig.a1 = ( zx.sig.a0 != 0 ) || ( zx.sig.a1 != 0 );
623 zx.sig.a0 = 0;
627 zx.sig = shortShift128RightJamming( zx.sig, 1 );
631 zx = roundFloatXTo53( isTiny, zx );
632 expField = ( LIT64( 0x0080000000000000 ) <= zx.sig.a0 ) ? 1 : 0;
634 zx.sig.a0 >>= 3;
637 if ( zx.sign ) z |= LIT64( 0x8000000000000000 );
638 z |= zx.sig.a0 & LIT64( 0x000FFFFFFFFFFFFF );
686 static floatx80 floatXToFloatx80( floatX zx )
693 if ( zx.isZero ) {
695 z.high = zx.sign ? 0x8000 : 0;
698 if ( zx.isInf ) {
700 z.high = zx.sign ? 0xFFFF : 0x7FFF;
703 if ( zx.isNaN ) {
708 while ( LIT64( 0x0100000000000000 ) <= zx.sig.a0 ) {
709 zx.sig = shortShift128RightJamming( zx.sig, 1 );
710 ++zx.exp;
712 while ( zx.sig.a0 < LIT64( 0x0080000000000000 ) ) {
713 zx.sig = shortShift128Left( zx.sig, 1 );
714 --zx.exp;
716 savedZ = zx;
719 && ( zx.exp + 0x3FFF <= 0 );
722 zx = roundFloatXTo24( isTiny, zx );
725 zx = roundFloatXTo53( isTiny, zx );
728 zx = roundFloatXTo64( isTiny, zx );
731 expField = zx.exp + 0x3FFF;
735 if ( zx.sign ) {
787 zx = savedZ;
788 expField = zx.exp + 0x3FFF;
790 zx.sig.a1 = ( zx.sig.a0 != 0 ) || ( zx.sig.a1 != 0 );
791 zx.sig.a0 = 0;
795 zx.sig = shortShift128RightJamming( zx.sig, 1 );
801 zx = roundFloatXTo24( isTiny, zx );
804 zx = roundFloatXTo53( isTiny, zx );
807 zx = roundFloatXTo64( isTiny, zx );
810 expField = ( LIT64( 0x0080000000000000 ) <= zx.sig.a0 ) ? 1 : 0;
812 zx.sig = shortShift128RightJamming( zx.sig, 56 );
813 z.low = zx.sig.a1;
815 if ( zx.sign ) z.high |= 0x8000;
866 static float128 floatXToFloat128( floatX zx )
873 if ( zx.isZero ) {
875 z.high = zx.sign ? LIT64( 0x8000000000000000 ) : 0;
878 if ( zx.isInf ) {
881 zx.sign ? LIT64( 0xFFFF000000000000 )
885 if ( zx.isNaN ) {
889 while ( LIT64( 0x0100000000000000 ) <= zx.sig.a0 ) {
890 zx.sig = shortShift128RightJamming( zx.sig, 1 );
891 ++zx.exp;
893 while ( zx.sig.a0 < LIT64( 0x0080000000000000 ) ) {
894 zx.sig = shortShift128Left( zx.sig, 1 );
895 --zx.exp;
897 savedZ = zx;
900 && ( zx.exp + 0x3FFF <= 0 );
901 zx = roundFloatXTo113( isTiny, zx );
902 expField = zx.exp + 0x3FFF;
906 if ( zx.sign ) {
938 zx = savedZ;
939 expField = zx.exp + 0x3FFF;
941 zx.sig.a1 = ( zx.sig.a0 != 0 ) || ( zx.sig.a1 != 0 );
942 zx.sig.a0 = 0;
946 zx.sig = shortShift128RightJamming( zx.sig, 1 );
950 zx = roundFloatXTo113( isTiny, zx );
951 expField = ( LIT64( 0x0080000000000000 ) <= zx.sig.a0 ) ? 1 : 0;
953 zx.sig = shortShift128RightJamming( zx.sig, 7 );
954 z.low = zx.sig.a1;
957 if ( zx.sign ) z.high |= LIT64( 0x8000000000000000 );
958 z.high |= zx.sig.a0 & LIT64( 0x0000FFFFFFFFFFFF );
1001 floatX zx;
1029 zx = ax;
1030 zx.exp = bx.exp;
1032 zx.sig.a1 = 1;
1033 zx.sig.a0 = 0;
1037 zx.sig = shortShift128RightJamming( zx.sig, 1 );
1041 if ( ax.sign != bx.sign ) zx.sig = neg128( zx.sig );
1042 zx.sign = bx.sign;
1043 zx.sig = add128( zx.sig, bx.sig );
1046 zx = bx;
1047 zx.exp = ax.exp;
1049 zx.sig.a1 = 1;
1050 zx.sig.a0 = 0;
1054 zx.sig = shortShift128RightJamming( zx.sig, 1 );
1058 if ( ax.sign != bx.sign ) zx.sig = neg128( zx.sig );
1059 zx.sign = ax.sign;
1060 zx.sig = add128( zx.sig, ax.sig );
1062 if ( zx.sig.a0 & LIT64( 0x8000000000000000 ) ) {
1063 zx.sig = neg128( zx.sig );
1064 zx.sign = ! zx.sign;
1066 return zx;
1073 floatX zx;
1087 zx = ax;
1088 zx.sign ^= bx.sign;
1090 return zx.sign ? floatXNegativeZero : floatXPositiveZero;
1092 zx.exp += bx.exp + 1;
1093 zx.sig.a1 = 0;
1094 zx.sig.a0 = 0;
1096 if ( bx.sig.a1 & 2 ) zx.sig = add128( zx.sig, ax.sig );
1098 zx.sig = shortShift128RightJamming( zx.sig, 1 );
1100 return zx;
1108 floatX zx;
1125 zx = ax;
1126 zx.sign ^= bx.sign;
1128 return zx.sign ? floatXNegativeZero : floatXPositiveZero;
1130 zx.exp -= bx.exp + 1;
1131 zx.sig.a1 = 0;
1132 zx.sig.a0 = 0;
1136 zx.sig.a1 |= 1;
1140 zx.sig = shortShift128Left( zx.sig, 1 );
1142 if ( ax.sig.a0 || ax.sig.a1 ) zx.sig.a1 |= 1;
1143 return zx;
1193 floatX zx;
1198 zx = ax;
1199 zx.exp >>= 1;
1201 zx.sig.a1 = 0;
1202 zx.sig.a0 = 0;
1207 ax.sig = add128( ax.sig, neg128( zx.sig ) );
1214 zx.sig.a1 |= bitSig.a1;
1215 zx.sig.a0 |= bitSig.a0;
1219 if ( ax.sig.a0 || ax.sig.a1 ) zx.sig.a1 |= 1;
1220 return zx;