From bca9da0ec7a71d66ef2e08bb84015c016acd2042 Mon Sep 17 00:00:00 2001 From: florian Date: Sun, 14 Mar 2004 21:45:11 +0000 Subject: [PATCH] * draft for qword mul --- rtl/arm/arm.inc | 7 +++++-- rtl/arm/int64p.inc | 22 +++++++++++++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/rtl/arm/arm.inc b/rtl/arm/arm.inc index 713c18c7e6..6037f49854 100644 --- a/rtl/arm/arm.inc +++ b/rtl/arm/arm.inc @@ -117,7 +117,10 @@ end; { $Log$ - Revision 1.5 2004-01-21 23:12:07 florian + Revision 1.6 2004-03-14 21:45:11 florian + * draft for qword mul + + Revision 1.5 2004/01/21 23:12:07 florian + get_caller_addr/frame implemented Revision 1.4 2004/01/20 21:01:57 florian @@ -135,4 +138,4 @@ end; Revision 1.1 2003/08/21 16:41:54 florian * empty dummy files + [long|set]jmp implemented -} \ No newline at end of file +} diff --git a/rtl/arm/int64p.inc b/rtl/arm/int64p.inc index 621bc68484..6c5b1b079c 100644 --- a/rtl/arm/int64p.inc +++ b/rtl/arm/int64p.inc @@ -14,8 +14,28 @@ **********************************************************************} +{!!!! +function fpc_mul_qword(f1,f2 : qword;checkoverflow : longbool) : qword;[public,alias: 'FPC_MUL_QWORD']; {$ifdef hascompilerproc} compilerproc; {$endif} +asm + mov r6,#0 + umull r4,r5,r0,r2 + umlal r5,r6,r0,r3 + { overflow? } + or r0,r1,r3 + umlal r5,r6,r1,r2 + { check for overflow } + ors r6,r6,r0 + mov r0,r4 + mov r1,r5 +end; +} + + { $Log$ - Revision 1.1 2003-11-03 17:28:21 florian + Revision 1.2 2004-03-14 21:45:11 florian + * draft for qword mul + + Revision 1.1 2003/11/03 17:28:21 florian * initial revision }