summaryrefslogtreecommitdiff
path: root/macos
diff options
context:
space:
mode:
authorKent Boortz <kent@mysql.se>2000-07-25 21:09:56 +0200
committerKent Boortz <kent@mysql.se>2000-07-25 21:09:56 +0200
commit138958c1d66e8e65e76b2a81c250a8627dba5ae9 (patch)
tree3096734a4741812d8b925048b4856c6b951ed3c7 /macos
parentdc077532c150c6801220173f10210b74ee23eed7 (diff)
downloadgmp-138958c1d66e8e65e76b2a81c250a8627dba5ae9.tar.gz
Now (C) stay (C) after asm preprocessing
Diffstat (limited to 'macos')
-rw-r--r--macos/Asm/add_n.s2
-rw-r--r--macos/Asm/addmul_1.s2
-rw-r--r--macos/Asm/lshift.s2
-rw-r--r--macos/Asm/mul_1.s2
-rw-r--r--macos/Asm/rshift.s2
-rw-r--r--macos/Asm/sub_n.s2
-rw-r--r--macos/Asm/submul_1.s2
7 files changed, 7 insertions, 7 deletions
diff --git a/macos/Asm/add_n.s b/macos/Asm/add_n.s
index 6562e1008..a76bfe1a6 100644
--- a/macos/Asm/add_n.s
+++ b/macos/Asm/add_n.s
@@ -1 +1 @@
-; PowerPC-32 mpn_add_n -- Add two limb vectors of the same length > 0 and ; store sum in a third limb vector. ; Copyright (;) 1995, 1997, 2000 Free Software Foundation, Inc. ; This file is part of the GNU MP Library. ; The GNU MP Library is free software; you can redistribute it and/or modify ; it under the terms of the GNU Library General Public License as published by ; the Free Software Foundation; either version 2 of the License, or (at your ; option) any later version. ; The GNU MP Library 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. See the GNU Library General Public ; License for more details. ; You should have received a copy of the GNU Library General Public License ; along with the GNU MP Library; see the file COPYING.LIB. If not, write to ; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ; MA 02111-1307, USA. ; INPUT PARAMETERS ; res_ptr r3 ; s1_ptr r4 ; s2_ptr r5 ; size r6 toc EXPORT __gmpn_add_n[DS] EXPORT .__gmpn_add_n[PR] TC __gmpn_add_n[TC], __gmpn_add_n[DS] CSECT __gmpn_add_n[DS] DC.L .__gmpn_add_n[PR] DC.L TOC[tc0] CSECT .__gmpn_add_n[PR] FUNCTION .__gmpn_add_n[PR] mtctr r6 ; copy size into CTR addic r0,r0,0 ; clear cy lwz r8,0(r4) ; load least significant s1 limb lwz r0,0(r5) ; load least significant s2 limb addi r3,r3,-4 ; offset res_ptr, it's updated before it's used bdz .Lend ; If done, skip loop .Loop: lwz r9,4(r4) ; load s1 limb lwz r10,4(r5) ; load s2 limb adde r7,r0,r8 ; add limbs with cy, set cy stw r7,4(r3) ; store result limb bdz .Lexit ; decrement CTR and exit if done lwzu r8,8(r4) ; load s1 limb and update s1_ptr lwzu r0,8(r5) ; load s2 limb and update s2_ptr adde r7,r10,r9 ; add limbs with cy, set cy stwu r7,8(r3) ; store result limb and update res_ptr bdnz .Loop ; decrement CTR and loop back .Lend: adde r7,r0,r8 stw r7,4(r3) ; store ultimate result limb li r3,0 ; load cy into ... addze r3,r3 ; ... return value register blr .Lexit: adde r7,r10,r9 stw r7,8(r3) li r3,0 ; load cy into ... addze r3,r3 ; ... return value register blr csect .__gmpn_add_n[pr] \ No newline at end of file
+; PowerPC-32 mpn_add_n -- Add two limb vectors of the same length > 0 and ; store sum in a third limb vector. ; Copyright (C) 1995, 1997, 2000 Free Software Foundation, Inc. ; This file is part of the GNU MP Library. ; The GNU MP Library is free software; you can redistribute it and/or modify ; it under the terms of the GNU Library General Public License as published by ; the Free Software Foundation; either version 2 of the License, or (at your ; option) any later version. ; The GNU MP Library 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. See the GNU Library General Public ; License for more details. ; You should have received a copy of the GNU Library General Public License ; along with the GNU MP Library; see the file COPYING.LIB. If not, write to ; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ; MA 02111-1307, USA. ; INPUT PARAMETERS ; res_ptr r3 ; s1_ptr r4 ; s2_ptr r5 ; size r6 toc EXPORT __gmpn_add_n[DS] EXPORT .__gmpn_add_n[PR] TC __gmpn_add_n[TC], __gmpn_add_n[DS] CSECT __gmpn_add_n[DS] DC.L .__gmpn_add_n[PR] DC.L TOC[tc0] CSECT .__gmpn_add_n[PR] FUNCTION .__gmpn_add_n[PR] mtctr r6 ; copy size into CTR addic r0,r0,0 ; clear cy lwz r8,0(r4) ; load least significant s1 limb lwz r0,0(r5) ; load least significant s2 limb addi r3,r3,-4 ; offset res_ptr, it's updated before it's used bdz .Lend ; If done, skip loop .Loop: lwz r9,4(r4) ; load s1 limb lwz r10,4(r5) ; load s2 limb adde r7,r0,r8 ; add limbs with cy, set cy stw r7,4(r3) ; store result limb bdz .Lexit ; decrement CTR and exit if done lwzu r8,8(r4) ; load s1 limb and update s1_ptr lwzu r0,8(r5) ; load s2 limb and update s2_ptr adde r7,r10,r9 ; add limbs with cy, set cy stwu r7,8(r3) ; store result limb and update res_ptr bdnz .Loop ; decrement CTR and loop back .Lend: adde r7,r0,r8 stw r7,4(r3) ; store ultimate result limb li r3,0 ; load cy into ... addze r3,r3 ; ... return value register blr .Lexit: adde r7,r10,r9 stw r7,8(r3) li r3,0 ; load cy into ... addze r3,r3 ; ... return value register blr csect .__gmpn_add_n[pr] \ No newline at end of file
diff --git a/macos/Asm/addmul_1.s b/macos/Asm/addmul_1.s
index ee2aa3be2..efa6b18db 100644
--- a/macos/Asm/addmul_1.s
+++ b/macos/Asm/addmul_1.s
@@ -1 +1 @@
-; PowerPC-32 mpn_addmul_1 -- Multiply a limb vector with a limb and add ; the result to a second limb vector. ; Copyright (;) 1995, 1997, 1998, 2000 Free Software Foundation, Inc. ; This file is part of the GNU MP Library. ; The GNU MP Library is free software; you can redistribute it and/or modify ; it under the terms of the GNU Library General Public License as published by ; the Free Software Foundation; either version 2 of the License, or (at your ; option) any later version. ; The GNU MP Library 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. See the GNU Library General Public ; License for more details. ; You should have received a copy of the GNU Library General Public License ; along with the GNU MP Library; see the file COPYING.LIB. If not, write to ; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ; MA 02111-1307, USA. ; INPUT PARAMETERS ; res_ptr r3 ; s1_ptr r4 ; size r5 ; s2_limb r6 ; This is optimized for the PPC604. It has not been tested on PPC601, PPC603 ; or PPC750 since I don't have access to any such machines. toc EXPORT __gmpn_addmul_1[DS] EXPORT .__gmpn_addmul_1[PR] TC __gmpn_addmul_1[TC], __gmpn_addmul_1[DS] CSECT __gmpn_addmul_1[DS] DC.L .__gmpn_addmul_1[PR] DC.L TOC[tc0] CSECT .__gmpn_addmul_1[PR] FUNCTION .__gmpn_addmul_1[PR] cmpi cr0,r5,9 ; more than 9 limbs? bgt cr0,.Lbig ; branch if more than 9 limbs mtctr r5 lwz r0,0(r4) mullw r7,r0,r6 mulhwu r10,r0,r6 lwz r9,0(r3) addc r8,r7,r9 addi r3,r3,-4 bdz .Lend .Lloop: lwzu r0,4(r4) stwu r8,4(r3) mullw r8,r0,r6 adde r7,r8,r10 mulhwu r10,r0,r6 lwz r9,4(r3) addze r10,r10 addc r8,r7,r9 bdnz .Lloop .Lend: stw r8,4(r3) addze r3,r10 blr .Lbig: stmw r30,-32(r1) addi r5,r5,-1 srwi r0,r5,2 mtctr r0 lwz r7,0(r4) mullw r8,r7,r6 mulhwu r0,r7,r6 lwz r7,0(r3) addc r8,r8,r7 stw r8,0(r3) .LloopU: lwz r7,4(r4) lwz r12,8(r4) lwz r30,12(r4) lwzu r31,16(r4) mullw r8,r7,r6 mullw r9,r12,r6 mullw r10,r30,r6 mullw r11,r31,r6 adde r8,r8,r0 ; add cy_limb mulhwu r0,r7,r6 lwz r7,4(r3) adde r9,r9,r0 mulhwu r0,r12,r6 lwz r12,8(r3) adde r10,r10,r0 mulhwu r0,r30,r6 lwz r30,12(r3) adde r11,r11,r0 mulhwu r0,r31,r6 lwz r31,16(r3) addze r0,r0 ; new cy_limb addc r8,r8,r7 stw r8,4(r3) adde r9,r9,r12 stw r9,8(r3) adde r10,r10,r30 stw r10,12(r3) adde r11,r11,r31 stwu r11,16(r3) bdnz .LloopU andi. r31,r5,3 mtctr r31 beq cr0,.Lendx .LloopE: lwzu r7,4(r4) mullw r8,r7,r6 adde r8,r8,r0 ; add cy_limb mulhwu r0,r7,r6 lwz r7,4(r3) addze r0,r0 ; new cy_limb addc r8,r8,r7 stwu r8,4(r3) bdnz .LloopE .Lendx: addze r3,r0 lmw r30,-32(r1) blr csect .__gmpn_addmul_1[pr] \ No newline at end of file
+; PowerPC-32 mpn_addmul_1 -- Multiply a limb vector with a limb and add ; the result to a second limb vector. ; Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc. ; This file is part of the GNU MP Library. ; The GNU MP Library is free software; you can redistribute it and/or modify ; it under the terms of the GNU Library General Public License as published by ; the Free Software Foundation; either version 2 of the License, or (at your ; option) any later version. ; The GNU MP Library 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. See the GNU Library General Public ; License for more details. ; You should have received a copy of the GNU Library General Public License ; along with the GNU MP Library; see the file COPYING.LIB. If not, write to ; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ; MA 02111-1307, USA. ; INPUT PARAMETERS ; res_ptr r3 ; s1_ptr r4 ; size r5 ; s2_limb r6 ; This is optimized for the PPC604. It has not been tested on PPC601, PPC603 ; or PPC750 since I don't have access to any such machines. toc EXPORT __gmpn_addmul_1[DS] EXPORT .__gmpn_addmul_1[PR] TC __gmpn_addmul_1[TC], __gmpn_addmul_1[DS] CSECT __gmpn_addmul_1[DS] DC.L .__gmpn_addmul_1[PR] DC.L TOC[tc0] CSECT .__gmpn_addmul_1[PR] FUNCTION .__gmpn_addmul_1[PR] cmpi cr0,r5,9 ; more than 9 limbs? bgt cr0,.Lbig ; branch if more than 9 limbs mtctr r5 lwz r0,0(r4) mullw r7,r0,r6 mulhwu r10,r0,r6 lwz r9,0(r3) addc r8,r7,r9 addi r3,r3,-4 bdz .Lend .Lloop: lwzu r0,4(r4) stwu r8,4(r3) mullw r8,r0,r6 adde r7,r8,r10 mulhwu r10,r0,r6 lwz r9,4(r3) addze r10,r10 addc r8,r7,r9 bdnz .Lloop .Lend: stw r8,4(r3) addze r3,r10 blr .Lbig: stmw r30,-32(r1) addi r5,r5,-1 srwi r0,r5,2 mtctr r0 lwz r7,0(r4) mullw r8,r7,r6 mulhwu r0,r7,r6 lwz r7,0(r3) addc r8,r8,r7 stw r8,0(r3) .LloopU: lwz r7,4(r4) lwz r12,8(r4) lwz r30,12(r4) lwzu r31,16(r4) mullw r8,r7,r6 mullw r9,r12,r6 mullw r10,r30,r6 mullw r11,r31,r6 adde r8,r8,r0 ; add cy_limb mulhwu r0,r7,r6 lwz r7,4(r3) adde r9,r9,r0 mulhwu r0,r12,r6 lwz r12,8(r3) adde r10,r10,r0 mulhwu r0,r30,r6 lwz r30,12(r3) adde r11,r11,r0 mulhwu r0,r31,r6 lwz r31,16(r3) addze r0,r0 ; new cy_limb addc r8,r8,r7 stw r8,4(r3) adde r9,r9,r12 stw r9,8(r3) adde r10,r10,r30 stw r10,12(r3) adde r11,r11,r31 stwu r11,16(r3) bdnz .LloopU andi. r31,r5,3 mtctr r31 beq cr0,.Lendx .LloopE: lwzu r7,4(r4) mullw r8,r7,r6 adde r8,r8,r0 ; add cy_limb mulhwu r0,r7,r6 lwz r7,4(r3) addze r0,r0 ; new cy_limb addc r8,r8,r7 stwu r8,4(r3) bdnz .LloopE .Lendx: addze r3,r0 lmw r30,-32(r1) blr csect .__gmpn_addmul_1[pr] \ No newline at end of file
diff --git a/macos/Asm/lshift.s b/macos/Asm/lshift.s
index 3903fd075..beb5bcf89 100644
--- a/macos/Asm/lshift.s
+++ b/macos/Asm/lshift.s
@@ -1 +1 @@
-; PowerPC-32 mpn_lshift -- Shift a number left. ; Copyright (;) 1995, 1998, 2000 Free Software Foundation, Inc. ; This file is part of the GNU MP Library. ; The GNU MP Library is free software; you can redistribute it and/or modify ; it under the terms of the GNU Library General Public License as published by ; the Free Software Foundation; either version 2 of the License, or (at your ; option) any later version. ; The GNU MP Library 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. See the GNU Library General Public ; License for more details. ; You should have received a copy of the GNU Library General Public License ; along with the GNU MP Library; see the file COPYING.LIB. If not, write to ; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ; MA 02111-1307, USA. ; INPUT PARAMETERS ; res_ptr r3 ; s1_ptr r4 ; size r5 ; cnt r6 toc EXPORT __gmpn_lshift[DS] EXPORT .__gmpn_lshift[PR] TC __gmpn_lshift[TC], __gmpn_lshift[DS] CSECT __gmpn_lshift[DS] DC.L .__gmpn_lshift[PR] DC.L TOC[tc0] CSECT .__gmpn_lshift[PR] FUNCTION .__gmpn_lshift[PR] cmpi cr0,r5,12 ; more than 12 limbs? slwi r0,r5,2 add r4,r4,r0 ; make r4 point at end of s1 add r7,r3,r0 ; make r7 point at end of res bgt .LBIG ; branch if more than 12 limbs mtctr r5 ; copy size into CTR subfic r8,r6,32 lwzu r11,-4(r4) ; load first s1 limb srw r3,r11,r8 ; compute function return value bdz .Lend1 .Loop: lwzu r10,-4(r4) slw r9,r11,r6 srw r12,r10,r8 or r9,r9,r12 stwu r9,-4(r7) bdz .Lend2 lwzu r11,-4(r4) slw r9,r10,r6 srw r12,r11,r8 or r9,r9,r12 stwu r9,-4(r7) bdnz .Loop .Lend1: slw r0,r11,r6 stw r0,-4(r7) blr .Lend2: slw r0,r10,r6 stw r0,-4(r7) blr .LBIG: stmw r24,-32(r1) ; save registers we are supposed to preserve lwzu r9,-4(r4) subfic r8,r6,32 srw r3,r9,r8 ; compute function return value slw r0,r9,r6 addi r5,r5,-1 andi. r10,r5,3 ; count for spill loop beq .Le mtctr r10 lwzu r28,-4(r4) bdz .Lxe0 .Loop0: slw r12,r28,r6 srw r24,r28,r8 lwzu r28,-4(r4) or r24,r0,r24 stwu r24,-4(r7) mr r0,r12 bdnz .Loop0 ; taken at most once! .Lxe0: slw r12,r28,r6 srw r24,r28,r8 or r24,r0,r24 stwu r24,-4(r7) mr r0,r12 .Le: srwi r5,r5,2 ; count for unrolled loop addi r5,r5,-1 mtctr r5 lwz r28,-4(r4) lwz r29,-8(r4) lwz r30,-12(r4) lwzu r31,-16(r4) .LoopU: slw r9,r28,r6 srw r24,r28,r8 lwz r28,-4(r4) slw r10,r29,r6 srw r25,r29,r8 lwz r29,-8(r4) slw r11,r30,r6 srw r26,r30,r8 lwz r30,-12(r4) slw r12,r31,r6 srw r27,r31,r8 lwzu r31,-16(r4) or r24,r0,r24 stw r24,-4(r7) or r25,r9,r25 stw r25,-8(r7) or r26,r10,r26 stw r26,-12(r7) or r27,r11,r27 stwu r27,-16(r7) mr r0,r12 bdnz .LoopU slw r9,r28,r6 srw r24,r28,r8 slw r10,r29,r6 srw r25,r29,r8 slw r11,r30,r6 srw r26,r30,r8 slw r12,r31,r6 srw r27,r31,r8 or r24,r0,r24 stw r24,-4(r7) or r25,r9,r25 stw r25,-8(r7) or r26,r10,r26 stw r26,-12(r7) or r27,r11,r27 stwu r27,-16(r7) mr r0,r12 stw r0,-4(r7) lmw r24,-32(r1) ; restore registers blr csect .__gmpn_lshift[pr] \ No newline at end of file
+; PowerPC-32 mpn_lshift -- Shift a number left. ; Copyright (C) 1995, 1998, 2000 Free Software Foundation, Inc. ; This file is part of the GNU MP Library. ; The GNU MP Library is free software; you can redistribute it and/or modify ; it under the terms of the GNU Library General Public License as published by ; the Free Software Foundation; either version 2 of the License, or (at your ; option) any later version. ; The GNU MP Library 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. See the GNU Library General Public ; License for more details. ; You should have received a copy of the GNU Library General Public License ; along with the GNU MP Library; see the file COPYING.LIB. If not, write to ; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ; MA 02111-1307, USA. ; INPUT PARAMETERS ; res_ptr r3 ; s1_ptr r4 ; size r5 ; cnt r6 toc EXPORT __gmpn_lshift[DS] EXPORT .__gmpn_lshift[PR] TC __gmpn_lshift[TC], __gmpn_lshift[DS] CSECT __gmpn_lshift[DS] DC.L .__gmpn_lshift[PR] DC.L TOC[tc0] CSECT .__gmpn_lshift[PR] FUNCTION .__gmpn_lshift[PR] cmpi cr0,r5,12 ; more than 12 limbs? slwi r0,r5,2 add r4,r4,r0 ; make r4 point at end of s1 add r7,r3,r0 ; make r7 point at end of res bgt .LBIG ; branch if more than 12 limbs mtctr r5 ; copy size into CTR subfic r8,r6,32 lwzu r11,-4(r4) ; load first s1 limb srw r3,r11,r8 ; compute function return value bdz .Lend1 .Loop: lwzu r10,-4(r4) slw r9,r11,r6 srw r12,r10,r8 or r9,r9,r12 stwu r9,-4(r7) bdz .Lend2 lwzu r11,-4(r4) slw r9,r10,r6 srw r12,r11,r8 or r9,r9,r12 stwu r9,-4(r7) bdnz .Loop .Lend1: slw r0,r11,r6 stw r0,-4(r7) blr .Lend2: slw r0,r10,r6 stw r0,-4(r7) blr .LBIG: stmw r24,-32(r1) ; save registers we are supposed to preserve lwzu r9,-4(r4) subfic r8,r6,32 srw r3,r9,r8 ; compute function return value slw r0,r9,r6 addi r5,r5,-1 andi. r10,r5,3 ; count for spill loop beq .Le mtctr r10 lwzu r28,-4(r4) bdz .Lxe0 .Loop0: slw r12,r28,r6 srw r24,r28,r8 lwzu r28,-4(r4) or r24,r0,r24 stwu r24,-4(r7) mr r0,r12 bdnz .Loop0 ; taken at most once! .Lxe0: slw r12,r28,r6 srw r24,r28,r8 or r24,r0,r24 stwu r24,-4(r7) mr r0,r12 .Le: srwi r5,r5,2 ; count for unrolled loop addi r5,r5,-1 mtctr r5 lwz r28,-4(r4) lwz r29,-8(r4) lwz r30,-12(r4) lwzu r31,-16(r4) .LoopU: slw r9,r28,r6 srw r24,r28,r8 lwz r28,-4(r4) slw r10,r29,r6 srw r25,r29,r8 lwz r29,-8(r4) slw r11,r30,r6 srw r26,r30,r8 lwz r30,-12(r4) slw r12,r31,r6 srw r27,r31,r8 lwzu r31,-16(r4) or r24,r0,r24 stw r24,-4(r7) or r25,r9,r25 stw r25,-8(r7) or r26,r10,r26 stw r26,-12(r7) or r27,r11,r27 stwu r27,-16(r7) mr r0,r12 bdnz .LoopU slw r9,r28,r6 srw r24,r28,r8 slw r10,r29,r6 srw r25,r29,r8 slw r11,r30,r6 srw r26,r30,r8 slw r12,r31,r6 srw r27,r31,r8 or r24,r0,r24 stw r24,-4(r7) or r25,r9,r25 stw r25,-8(r7) or r26,r10,r26 stw r26,-12(r7) or r27,r11,r27 stwu r27,-16(r7) mr r0,r12 stw r0,-4(r7) lmw r24,-32(r1) ; restore registers blr csect .__gmpn_lshift[pr] \ No newline at end of file
diff --git a/macos/Asm/mul_1.s b/macos/Asm/mul_1.s
index 8c425e83a..6ceed6f99 100644
--- a/macos/Asm/mul_1.s
+++ b/macos/Asm/mul_1.s
@@ -1 +1 @@
-; PowerPC-32 mpn_mul_1 -- Multiply a limb vector with a limb and store ; the result in a second limb vector. ; Copyright (;) 1995, 1997, 2000 Free Software Foundation, Inc. ; This file is part of the GNU MP Library. ; The GNU MP Library is free software; you can redistribute it and/or modify ; it under the terms of the GNU Library General Public License as published by ; the Free Software Foundation; either version 2 of the License, or (at your ; option) any later version. ; The GNU MP Library 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. See the GNU Library General Public ; License for more details. ; You should have received a copy of the GNU Library General Public License ; along with the GNU MP Library; see the file COPYING.LIB. If not, write to ; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ; MA 02111-1307, USA. ; INPUT PARAMETERS ; res_ptr r3 ; s1_ptr r4 ; size r5 ; s2_limb r6 ; This is optimized for the PPC604 but it runs decently even on PPC601. It ; has not been tested on a PPC603 since I don't have access to any such ; machines. toc EXPORT __gmpn_mul_1[DS] EXPORT .__gmpn_mul_1[PR] TC __gmpn_mul_1[TC], __gmpn_mul_1[DS] CSECT __gmpn_mul_1[DS] DC.L .__gmpn_mul_1[PR] DC.L TOC[tc0] CSECT .__gmpn_mul_1[PR] FUNCTION .__gmpn_mul_1[PR] mtctr r5 addi r3,r3,-4 ; adjust res_ptr, it's offset before it's used li r12,0 ; clear upper product reg addic r0,r0,0 ; clear cy ; Start software pipeline lwz r8,0(r4) bdz .Lend3 stmw r30,-8(r1) ; save registers we are supposed to preserve lwzu r9,4(r4) mullw r11,r8,r6 mulhwu r0,r8,r6 bdz .Lend1 ; Software pipelined main loop .Loop: lwz r8,4(r4) mullw r10,r9,r6 adde r30,r11,r12 mulhwu r12,r9,r6 stw r30,4(r3) bdz .Lend2 lwzu r9,8(r4) mullw r11,r8,r6 adde r31,r10,r0 mulhwu r0,r8,r6 stwu r31,8(r3) bdnz .Loop ; Finish software pipeline .Lend1: mullw r10,r9,r6 adde r30,r11,r12 mulhwu r12,r9,r6 stw r30,4(r3) adde r31,r10,r0 stwu r31,8(r3) addze r3,r12 lmw r30,-8(r1) ; restore registers from stack blr .Lend2: mullw r11,r8,r6 adde r31,r10,r0 mulhwu r0,r8,r6 stwu r31,8(r3) adde r30,r11,r12 stw r30,4(r3) addze r3,r0 lmw r30,-8(r1) ; restore registers from stack blr .Lend3: mullw r11,r8,r6 stw r11,4(r3) mulhwu r3,r8,r6 blr csect .__gmpn_mul_1[pr] \ No newline at end of file
+; PowerPC-32 mpn_mul_1 -- Multiply a limb vector with a limb and store ; the result in a second limb vector. ; Copyright (C) 1995, 1997, 2000 Free Software Foundation, Inc. ; This file is part of the GNU MP Library. ; The GNU MP Library is free software; you can redistribute it and/or modify ; it under the terms of the GNU Library General Public License as published by ; the Free Software Foundation; either version 2 of the License, or (at your ; option) any later version. ; The GNU MP Library 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. See the GNU Library General Public ; License for more details. ; You should have received a copy of the GNU Library General Public License ; along with the GNU MP Library; see the file COPYING.LIB. If not, write to ; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ; MA 02111-1307, USA. ; INPUT PARAMETERS ; res_ptr r3 ; s1_ptr r4 ; size r5 ; s2_limb r6 ; This is optimized for the PPC604 but it runs decently even on PPC601. It ; has not been tested on a PPC603 since I don't have access to any such ; machines. toc EXPORT __gmpn_mul_1[DS] EXPORT .__gmpn_mul_1[PR] TC __gmpn_mul_1[TC], __gmpn_mul_1[DS] CSECT __gmpn_mul_1[DS] DC.L .__gmpn_mul_1[PR] DC.L TOC[tc0] CSECT .__gmpn_mul_1[PR] FUNCTION .__gmpn_mul_1[PR] mtctr r5 addi r3,r3,-4 ; adjust res_ptr, it's offset before it's used li r12,0 ; clear upper product reg addic r0,r0,0 ; clear cy ; Start software pipeline lwz r8,0(r4) bdz .Lend3 stmw r30,-8(r1) ; save registers we are supposed to preserve lwzu r9,4(r4) mullw r11,r8,r6 mulhwu r0,r8,r6 bdz .Lend1 ; Software pipelined main loop .Loop: lwz r8,4(r4) mullw r10,r9,r6 adde r30,r11,r12 mulhwu r12,r9,r6 stw r30,4(r3) bdz .Lend2 lwzu r9,8(r4) mullw r11,r8,r6 adde r31,r10,r0 mulhwu r0,r8,r6 stwu r31,8(r3) bdnz .Loop ; Finish software pipeline .Lend1: mullw r10,r9,r6 adde r30,r11,r12 mulhwu r12,r9,r6 stw r30,4(r3) adde r31,r10,r0 stwu r31,8(r3) addze r3,r12 lmw r30,-8(r1) ; restore registers from stack blr .Lend2: mullw r11,r8,r6 adde r31,r10,r0 mulhwu r0,r8,r6 stwu r31,8(r3) adde r30,r11,r12 stw r30,4(r3) addze r3,r0 lmw r30,-8(r1) ; restore registers from stack blr .Lend3: mullw r11,r8,r6 stw r11,4(r3) mulhwu r3,r8,r6 blr csect .__gmpn_mul_1[pr] \ No newline at end of file
diff --git a/macos/Asm/rshift.s b/macos/Asm/rshift.s
index 252c0b3fa..274854b09 100644
--- a/macos/Asm/rshift.s
+++ b/macos/Asm/rshift.s
@@ -1 +1 @@
-; PowerPC-32 mpn_rshift -- Shift a number right. ; Copyright (;) 1995, 2000 Free Software Foundation, Inc. ; This file is part of the GNU MP Library. ; The GNU MP Library is free software; you can redistribute it and/or modify ; it under the terms of the GNU Library General Public License as published by ; the Free Software Foundation; either version 2 of the License, or (at your ; option) any later version. ; The GNU MP Library 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. See the GNU Library General Public ; License for more details. ; You should have received a copy of the GNU Library General Public License ; along with the GNU MP Library; see the file COPYING.LIB. If not, write to ; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ; MA 02111-1307, USA. ; INPUT PARAMETERS ; res_ptr r3 ; s1_ptr r4 ; size r5 ; cnt r6 toc EXPORT __gmpn_rshift[DS] EXPORT .__gmpn_rshift[PR] TC __gmpn_rshift[TC], __gmpn_rshift[DS] CSECT __gmpn_rshift[DS] DC.L .__gmpn_rshift[PR] DC.L TOC[tc0] CSECT .__gmpn_rshift[PR] FUNCTION .__gmpn_rshift[PR] mtctr r5 ; copy size into CTR addi r7,r3,-4 ; move adjusted res_ptr to free return reg subfic r8,r6,32 lwz r11,0(r4) ; load first s1 limb slw r3,r11,r8 ; compute function return value bdz .Lend1 .Loop: lwzu r10,4(r4) srw r9,r11,r6 slw r12,r10,r8 or r9,r9,r12 stwu r9,4(r7) bdz .Lend2 lwzu r11,4(r4) srw r9,r10,r6 slw r12,r11,r8 or r9,r9,r12 stwu r9,4(r7) bdnz .Loop .Lend1: srw r0,r11,r6 stw r0,4(r7) blr .Lend2: srw r0,r10,r6 stw r0,4(r7) blr csect .__gmpn_rshift[pr] \ No newline at end of file
+; PowerPC-32 mpn_rshift -- Shift a number right. ; Copyright (C) 1995, 2000 Free Software Foundation, Inc. ; This file is part of the GNU MP Library. ; The GNU MP Library is free software; you can redistribute it and/or modify ; it under the terms of the GNU Library General Public License as published by ; the Free Software Foundation; either version 2 of the License, or (at your ; option) any later version. ; The GNU MP Library 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. See the GNU Library General Public ; License for more details. ; You should have received a copy of the GNU Library General Public License ; along with the GNU MP Library; see the file COPYING.LIB. If not, write to ; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ; MA 02111-1307, USA. ; INPUT PARAMETERS ; res_ptr r3 ; s1_ptr r4 ; size r5 ; cnt r6 toc EXPORT __gmpn_rshift[DS] EXPORT .__gmpn_rshift[PR] TC __gmpn_rshift[TC], __gmpn_rshift[DS] CSECT __gmpn_rshift[DS] DC.L .__gmpn_rshift[PR] DC.L TOC[tc0] CSECT .__gmpn_rshift[PR] FUNCTION .__gmpn_rshift[PR] mtctr r5 ; copy size into CTR addi r7,r3,-4 ; move adjusted res_ptr to free return reg subfic r8,r6,32 lwz r11,0(r4) ; load first s1 limb slw r3,r11,r8 ; compute function return value bdz .Lend1 .Loop: lwzu r10,4(r4) srw r9,r11,r6 slw r12,r10,r8 or r9,r9,r12 stwu r9,4(r7) bdz .Lend2 lwzu r11,4(r4) srw r9,r10,r6 slw r12,r11,r8 or r9,r9,r12 stwu r9,4(r7) bdnz .Loop .Lend1: srw r0,r11,r6 stw r0,4(r7) blr .Lend2: srw r0,r10,r6 stw r0,4(r7) blr csect .__gmpn_rshift[pr] \ No newline at end of file
diff --git a/macos/Asm/sub_n.s b/macos/Asm/sub_n.s
index cf89f05f2..b999138a8 100644
--- a/macos/Asm/sub_n.s
+++ b/macos/Asm/sub_n.s
@@ -1 +1 @@
-; PowerPC-32 mpn_sub_n -- Subtract two limb vectors of the same length > 0 ; and store difference in a third limb vector. ; Copyright (;) 1995, 1997, 2000 Free Software Foundation, Inc. ; This file is part of the GNU MP Library. ; The GNU MP Library is free software; you can redistribute it and/or modify ; it under the terms of the GNU Library General Public License as published by ; the Free Software Foundation; either version 2 of the License, or (at your ; option) any later version. ; The GNU MP Library 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. See the GNU Library General Public ; License for more details. ; You should have received a copy of the GNU Library General Public License ; along with the GNU MP Library; see the file COPYING.LIB. If not, write to ; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ; MA 02111-1307, USA. ; INPUT PARAMETERS ; res_ptr r3 ; s1_ptr r4 ; s2_ptr r5 ; size r6 toc EXPORT __gmpn_sub_n[DS] EXPORT .__gmpn_sub_n[PR] TC __gmpn_sub_n[TC], __gmpn_sub_n[DS] CSECT __gmpn_sub_n[DS] DC.L .__gmpn_sub_n[PR] DC.L TOC[tc0] CSECT .__gmpn_sub_n[PR] FUNCTION .__gmpn_sub_n[PR] mtctr r6 ; copy size into CTR addic r0,r6,-1 ; set cy lwz r8,0(r4) ; load least significant s1 limb lwz r0,0(r5) ; load least significant s2 limb addi r3,r3,-4 ; offset res_ptr, it's updated before it's used bdz .Lend ; If done, skip loop .Loop: lwz r9,4(r4) ; load s1 limb lwz r10,4(r5) ; load s2 limb subfe r7,r0,r8 ; subtract limbs with cy, set cy stw r7,4(r3) ; store result limb bdz .Lexit ; decrement CTR and exit if done lwzu r8,8(r4) ; load s1 limb and update s1_ptr lwzu r0,8(r5) ; load s2 limb and update s2_ptr subfe r7,r10,r9 ; subtract limbs with cy, set cy stwu r7,8(r3) ; store result limb and update res_ptr bdnz .Loop ; decrement CTR and loop back .Lend: subfe r7,r0,r8 stw r7,4(r3) ; store ultimate result limb subfe r3,r0,r0 ; load !cy into ... subfic r3,r3,0 ; ... return value register blr .Lexit: subfe r7,r10,r9 stw r7,8(r3) subfe r3,r0,r0 ; load !cy into ... subfic r3,r3,0 ; ... return value register blr csect .__gmpn_sub_n[pr] \ No newline at end of file
+; PowerPC-32 mpn_sub_n -- Subtract two limb vectors of the same length > 0 ; and store difference in a third limb vector. ; Copyright (C) 1995, 1997, 2000 Free Software Foundation, Inc. ; This file is part of the GNU MP Library. ; The GNU MP Library is free software; you can redistribute it and/or modify ; it under the terms of the GNU Library General Public License as published by ; the Free Software Foundation; either version 2 of the License, or (at your ; option) any later version. ; The GNU MP Library 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. See the GNU Library General Public ; License for more details. ; You should have received a copy of the GNU Library General Public License ; along with the GNU MP Library; see the file COPYING.LIB. If not, write to ; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ; MA 02111-1307, USA. ; INPUT PARAMETERS ; res_ptr r3 ; s1_ptr r4 ; s2_ptr r5 ; size r6 toc EXPORT __gmpn_sub_n[DS] EXPORT .__gmpn_sub_n[PR] TC __gmpn_sub_n[TC], __gmpn_sub_n[DS] CSECT __gmpn_sub_n[DS] DC.L .__gmpn_sub_n[PR] DC.L TOC[tc0] CSECT .__gmpn_sub_n[PR] FUNCTION .__gmpn_sub_n[PR] mtctr r6 ; copy size into CTR addic r0,r6,-1 ; set cy lwz r8,0(r4) ; load least significant s1 limb lwz r0,0(r5) ; load least significant s2 limb addi r3,r3,-4 ; offset res_ptr, it's updated before it's used bdz .Lend ; If done, skip loop .Loop: lwz r9,4(r4) ; load s1 limb lwz r10,4(r5) ; load s2 limb subfe r7,r0,r8 ; subtract limbs with cy, set cy stw r7,4(r3) ; store result limb bdz .Lexit ; decrement CTR and exit if done lwzu r8,8(r4) ; load s1 limb and update s1_ptr lwzu r0,8(r5) ; load s2 limb and update s2_ptr subfe r7,r10,r9 ; subtract limbs with cy, set cy stwu r7,8(r3) ; store result limb and update res_ptr bdnz .Loop ; decrement CTR and loop back .Lend: subfe r7,r0,r8 stw r7,4(r3) ; store ultimate result limb subfe r3,r0,r0 ; load !cy into ... subfic r3,r3,0 ; ... return value register blr .Lexit: subfe r7,r10,r9 stw r7,8(r3) subfe r3,r0,r0 ; load !cy into ... subfic r3,r3,0 ; ... return value register blr csect .__gmpn_sub_n[pr] \ No newline at end of file
diff --git a/macos/Asm/submul_1.s b/macos/Asm/submul_1.s
index 4f7104f95..2e9a2dac3 100644
--- a/macos/Asm/submul_1.s
+++ b/macos/Asm/submul_1.s
@@ -1 +1 @@
-; PowerPC-32 mpn_submul_1 -- Multiply a limb vector with a limb and subtract ; the result from a second limb vector. ; Copyright (;) 1995, 1997, 1998, 2000 Free Software Foundation, Inc. ; This file is part of the GNU MP Library. ; The GNU MP Library is free software; you can redistribute it and/or modify ; it under the terms of the GNU Library General Public License as published by ; the Free Software Foundation; either version 2 of the License, or (at your ; option) any later version. ; The GNU MP Library 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. See the GNU Library General Public ; License for more details. ; You should have received a copy of the GNU Library General Public License ; along with the GNU MP Library; see the file COPYING.LIB. If not, write to ; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ; MA 02111-1307, USA. ; INPUT PARAMETERS ; res_ptr r3 ; s1_ptr r4 ; size r5 ; s2_limb r6 ; This is optimized for the PPC604. It has not been tested on PPC601, PPC603 ; or PPC750 since I don't have access to any such machines. toc EXPORT __gmpn_submul_1[DS] EXPORT .__gmpn_submul_1[PR] TC __gmpn_submul_1[TC], __gmpn_submul_1[DS] CSECT __gmpn_submul_1[DS] DC.L .__gmpn_submul_1[PR] DC.L TOC[tc0] CSECT .__gmpn_submul_1[PR] FUNCTION .__gmpn_submul_1[PR] cmpi cr0,r5,9 ; more than 9 limbs? bgt cr0,.Lbig ; branch if more than 9 limbs mtctr r5 lwz r0,0(r4) mullw r7,r0,r6 mulhwu r10,r0,r6 lwz r9,0(r3) subfc r8,r7,r9 addc r7,r7,r8 ; invert cy (r7 is junk) addi r3,r3,-4 bdz .Lend .Lloop: lwzu r0,4(r4) stwu r8,4(r3) mullw r8,r0,r6 adde r7,r8,r10 mulhwu r10,r0,r6 lwz r9,4(r3) addze r10,r10 subfc r8,r7,r9 addc r7,r7,r8 ; invert cy (r7 is junk) bdnz .Lloop .Lend: stw r8,4(r3) addze r3,r10 blr .Lbig: stmw r30,-32(r1) addi r5,r5,-1 srwi r0,r5,2 mtctr r0 lwz r7,0(r4) mullw r8,r7,r6 mulhwu r0,r7,r6 lwz r7,0(r3) subfc r7,r8,r7 addc r8,r8,r7 stw r7,0(r3) .LloopU: lwz r7,4(r4) lwz r12,8(r4) lwz r30,12(r4) lwzu r31,16(r4) mullw r8,r7,r6 mullw r9,r12,r6 mullw r10,r30,r6 mullw r11,r31,r6 adde r8,r8,r0 ; add cy_limb mulhwu r0,r7,r6 lwz r7,4(r3) adde r9,r9,r0 mulhwu r0,r12,r6 lwz r12,8(r3) adde r10,r10,r0 mulhwu r0,r30,r6 lwz r30,12(r3) adde r11,r11,r0 mulhwu r0,r31,r6 lwz r31,16(r3) addze r0,r0 ; new cy_limb subfc r7,r8,r7 stw r7,4(r3) subfe r12,r9,r12 stw r12,8(r3) subfe r30,r10,r30 stw r30,12(r3) subfe r31,r11,r31 stwu r31,16(r3) subfe r11,r11,r11 ; invert ... addic r11,r11,1 ; ... carry bdnz .LloopU andi. r31,r5,3 mtctr r31 beq cr0,.Lendx .LloopE: lwzu r7,4(r4) mullw r8,r7,r6 adde r8,r8,r0 ; add cy_limb mulhwu r0,r7,r6 lwz r7,4(r3) addze r0,r0 ; new cy_limb subfc r7,r8,r7 addc r8,r8,r7 stwu r7,4(r3) bdnz .LloopE .Lendx: addze r3,r0 lmw r30,-32(r1) blr csect .__gmpn_submul_1[pr] \ No newline at end of file
+; PowerPC-32 mpn_submul_1 -- Multiply a limb vector with a limb and subtract ; the result from a second limb vector. ; Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc. ; This file is part of the GNU MP Library. ; The GNU MP Library is free software; you can redistribute it and/or modify ; it under the terms of the GNU Library General Public License as published by ; the Free Software Foundation; either version 2 of the License, or (at your ; option) any later version. ; The GNU MP Library 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. See the GNU Library General Public ; License for more details. ; You should have received a copy of the GNU Library General Public License ; along with the GNU MP Library; see the file COPYING.LIB. If not, write to ; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ; MA 02111-1307, USA. ; INPUT PARAMETERS ; res_ptr r3 ; s1_ptr r4 ; size r5 ; s2_limb r6 ; This is optimized for the PPC604. It has not been tested on PPC601, PPC603 ; or PPC750 since I don't have access to any such machines. toc EXPORT __gmpn_submul_1[DS] EXPORT .__gmpn_submul_1[PR] TC __gmpn_submul_1[TC], __gmpn_submul_1[DS] CSECT __gmpn_submul_1[DS] DC.L .__gmpn_submul_1[PR] DC.L TOC[tc0] CSECT .__gmpn_submul_1[PR] FUNCTION .__gmpn_submul_1[PR] cmpi cr0,r5,9 ; more than 9 limbs? bgt cr0,.Lbig ; branch if more than 9 limbs mtctr r5 lwz r0,0(r4) mullw r7,r0,r6 mulhwu r10,r0,r6 lwz r9,0(r3) subfc r8,r7,r9 addc r7,r7,r8 ; invert cy (r7 is junk) addi r3,r3,-4 bdz .Lend .Lloop: lwzu r0,4(r4) stwu r8,4(r3) mullw r8,r0,r6 adde r7,r8,r10 mulhwu r10,r0,r6 lwz r9,4(r3) addze r10,r10 subfc r8,r7,r9 addc r7,r7,r8 ; invert cy (r7 is junk) bdnz .Lloop .Lend: stw r8,4(r3) addze r3,r10 blr .Lbig: stmw r30,-32(r1) addi r5,r5,-1 srwi r0,r5,2 mtctr r0 lwz r7,0(r4) mullw r8,r7,r6 mulhwu r0,r7,r6 lwz r7,0(r3) subfc r7,r8,r7 addc r8,r8,r7 stw r7,0(r3) .LloopU: lwz r7,4(r4) lwz r12,8(r4) lwz r30,12(r4) lwzu r31,16(r4) mullw r8,r7,r6 mullw r9,r12,r6 mullw r10,r30,r6 mullw r11,r31,r6 adde r8,r8,r0 ; add cy_limb mulhwu r0,r7,r6 lwz r7,4(r3) adde r9,r9,r0 mulhwu r0,r12,r6 lwz r12,8(r3) adde r10,r10,r0 mulhwu r0,r30,r6 lwz r30,12(r3) adde r11,r11,r0 mulhwu r0,r31,r6 lwz r31,16(r3) addze r0,r0 ; new cy_limb subfc r7,r8,r7 stw r7,4(r3) subfe r12,r9,r12 stw r12,8(r3) subfe r30,r10,r30 stw r30,12(r3) subfe r31,r11,r31 stwu r31,16(r3) subfe r11,r11,r11 ; invert ... addic r11,r11,1 ; ... carry bdnz .LloopU andi. r31,r5,3 mtctr r31 beq cr0,.Lendx .LloopE: lwzu r7,4(r4) mullw r8,r7,r6 adde r8,r8,r0 ; add cy_limb mulhwu r0,r7,r6 lwz r7,4(r3) addze r0,r0 ; new cy_limb subfc r7,r8,r7 addc r8,r8,r7 stwu r7,4(r3) bdnz .LloopE .Lendx: addze r3,r0 lmw r30,-32(r1) blr csect .__gmpn_submul_1[pr] \ No newline at end of file