+ round/trunc/int for AArch64

git-svn-id: trunk@29881 -
This commit is contained in:
Jonas Maebe 2015-02-23 22:50:54 +00:00
parent 66d4e9a3a5
commit 4c7f75c93b
2 changed files with 87 additions and 0 deletions

1
.gitattributes vendored
View File

@ -7869,6 +7869,7 @@ rtl/Makefile svneol=native#text/plain
rtl/Makefile.fpc svneol=native#text/plain
rtl/README.txt svneol=native#text/plain
rtl/aarch64/int64p.inc svneol=native#text/plain
rtl/aarch64/math.inc svneol=native#text/plain
rtl/aarch64/mathu.inc svneol=native#text/plain
rtl/aix/Makefile svneol=native#text/plain
rtl/aix/Makefile.fpc svneol=native#text/plain

86
rtl/aarch64/math.inc Normal file
View File

@ -0,0 +1,86 @@
{
Implementation of mathematical routines for x86_64
This file is part of the Free Pascal run time library.
Copyright (c) 1999-2005 by the Free Pascal development team
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
**********************************************************************}
{****************************************************************************
Floating point type routines
****************************************************************************}
{$ifndef FPC_SYSTEM_HAS_ABS}
{$define FPC_SYSTEM_HAS_ABS}
function fpc_abs_real(d : ValReal) : ValReal;compilerproc;
begin
{ Function is handled internal in the compiler }
runerror(207);
result:=0;
end;
{$endif FPC_SYSTEM_HAS_ABS}
{$ifndef FPC_SYSTEM_HAS_SQR}
{$define FPC_SYSTEM_HAS_SQR}
function fpc_sqr_real(d : ValReal) : ValReal;compilerproc;
begin
{ Function is handled internal in the compiler }
runerror(207);
result:=0;
end;
{$endif FPC_SYSTEM_HAS_SQR}
{$ifndef FPC_SYSTEM_HAS_SQRT}
{$define FPC_SYSTEM_HAS_SQRT}
function fpc_sqrt_real(d : ValReal) : ValReal;compilerproc;
begin
{ Function is handled internal in the compiler }
runerror(207);
result:=0;
end;
{$endif FPC_SYSTEM_HAS_SQRT}
{$ifndef FPC_SYSTEM_HAS_INT}
{$define FPC_SYSTEM_HAS_INT}
function fpc_int_real(d : ValReal) : ValReal;assembler;nostackframe;compilerproc;
asm
{ round as floating point towards zero }
frintz d0,d0
end;
{$endif FPC_SYSTEM_HAS_INT}
{$ifndef FPC_SYSTEM_HAS_TRUNC}
{$define FPC_SYSTEM_HAS_TRUNC}
function fpc_trunc_real(d : ValReal) : int64;assembler;nostackframe;compilerproc;
asm
{ round to signed integer towards zero }
fcvtzs x0,d0
end;
{$endif FPC_SYSTEM_HAS_TRUNC}
{$ifndef FPC_SYSTEM_HAS_ROUND}
{$define FPC_SYSTEM_HAS_ROUND}
function fpc_round_real(d : ValReal) : int64;assembler;nostackframe;compilerproc;
asm
{ round as floating point using current rounding mode }
frintx d0,d0
{ convert to signed integer rounding towards zero (there's no "round to
integer using current rounding mode") }
fcvtzs x0,d0
end;
{$endif FPC_SYSTEM_HAS_ROUND}