* softfpu.pp: fixed two more porting bugs, and also added two typecasts to avoid unnecessary 64-bit operations.

git-svn-id: trunk@28609 -
This commit is contained in:
sergei 2014-09-06 21:01:50 +00:00
parent e4095588d6
commit 5279693919

View File

@ -612,13 +612,13 @@ begin
end; end;
end; end;
end; end;
roundBits := absZ and $7F; roundBits := lo(absZ) and $7F;
absZ := ( absZ + roundIncrement ) shr 7; absZ := ( absZ + roundIncrement ) shr 7;
absZ := absZ and not( ord( ( roundBits xor $40 ) = 0 ) and ord(roundNearestEven) ); absZ := absZ and not( bits64( ord( ( roundBits xor $40 ) = 0 ) and ord(roundNearestEven) ));
z := absZ; z := absZ;
if ( zSign<>0 ) then if ( zSign<>0 ) then
z := - z; z := - z;
if ( ( absZ shr 32 ) or ( z and ( ord( z < 0 ) xor zSign ) ) )<>0 then if ( longint(hi( absZ )) or ( z and ( ord( z < 0 ) xor zSign ) ) )<>0 then
begin begin
float_raise( float_flag_invalid ); float_raise( float_flag_invalid );
if zSign<>0 then if zSign<>0 then
@ -1602,7 +1602,7 @@ Begin
z := ( z shl 15 ); z := ( z shl 15 );
if ( z <= a ) then if ( z <= a ) then
Begin Begin
estimateSqrt32 := bits32 ( ( sbits32 (a )) shr 1 ); estimateSqrt32 := bits32 ( SarLongint( sbits32 (a)) );
exit; exit;
End; End;
End; End;