From 1332005afc433134a1bb762a9917c7171ea81df7 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 2 Sep 2003 17:41:49 +0000 Subject: [PATCH] * updated for int64 to double --- rtl/sparc/math.inc | 79 +++------------------------------------------- 1 file changed, 4 insertions(+), 75 deletions(-) diff --git a/rtl/sparc/math.inc b/rtl/sparc/math.inc index a464bf1234..36e063bd52 100644 --- a/rtl/sparc/math.inc +++ b/rtl/sparc/math.inc @@ -24,80 +24,6 @@ const cardinal_to_real_helper: int64 = $430000000000000; int_to_real_factor: double = double(high(cardinal))+1.0; -function fpc_int64_to_double(i: int64): double; compilerproc; -{assembler;} -{ input: high(i) in r3, low(i) in r4 } -{ output: double(i) in f0 } -var - temp: packed record - case byte of - 0: (l1,l2: cardinal); - 1: (d: double); - end; -begin{asm} -(* lis r0,0x4330 - stw r0,temp - xoris r3,r3,0x8000 - stw r3,4+temp - {$ifndef macos} - lis r3,longint_to_real_helper@ha - lfd f1,longint_to_real_helper@l(r3) - {$else} - lfd f1,longint_to_real_helper(r2) - {$endif} - lfd f0,temp - stw r4,4+temp - fsub f0,f0,f1 - {$ifndef macos} - lis r4,cardinal_to_real_helper@ha - lfd f1,cardinal_to_real_helper@l(r4) - lis r3,int_to_real_factor@ha - lfd f3,temp - lfd f2,int_to_real_factor@l(r3) - {$else} - lfd f1,cardinal_to_real_helper(r2) - lfd f3,temp - lfd f2,int_to_real_factor(r2) - {$endif} - fsub f3,f3,f1 - fmadd f1,f0,f2,f3*) -end{ ['R0','R3','R4','F0','F1','F2','F3']}; - - -function fpc_qword_to_double(q: qword): double; compilerproc; -{assembler;} -{ input: high(q) in r3, low(q) in r4 } -{ output: double(q) in f0 } -var - temp: packed record - case byte of - 0: (l1,l2: cardinal); - 1: (d: double); - end; -begin{asm} -(* lis r0,0x4330 - stw r0,temp - stw r3,4+temp - lfd f0,temp - {$ifndef macos} - lis r3,cardinal_to_real_helper@ha - lfd f1,cardinal_to_real_helper@l(r3) - {$else} - lfd f1,cardinal_to_real_helper(r2) - {$endif} - stw r4,4+temp - fsub f0,f0,f1 - lfd f3,temp - {$ifndef macos} - lis r3,int_to_real_factor@ha - lfd f2,int_to_real_factor@l(r3) - {$else} - lfd f2,int_to_real_factor(r2) - {$endif} - fsub f3,f3,f1 - fmadd f1,f0,f2,f3*) -end{ ['R0','R3','F0','F1','F2','F3']}; - {**************************************************************************** EXTENDED data type routines @@ -308,7 +234,10 @@ end; { $Log$ - Revision 1.5 2003-09-01 20:46:32 peter + Revision 1.6 2003-09-02 17:41:49 peter + * updated for int64 to double + + Revision 1.5 2003/09/01 20:46:32 peter * new dummies Revision 1.4 2003/04/23 21:28:21 peter