1; 29000 __gmpn_addmul_1 -- Multiply a limb vector with a single limb and 2; add the product to a second limb vector. 3 4; Copyright 1992, 1994, 2000 Free Software Foundation, Inc. 5 6; This file is part of the GNU MP Library. 7 8; The GNU MP Library is free software; you can redistribute it and/or modify 9; it under the terms of the GNU Lesser General Public License as published by 10; the Free Software Foundation; either version 3 of the License, or (at your 11; option) any later version. 12 13; The GNU MP Library is distributed in the hope that it will be useful, but 14; WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 16; License for more details. 17 18; You should have received a copy of the GNU Lesser General Public License 19; along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. 20 21 22; INPUT PARAMETERS 23; res_ptr lr2 24; s1_ptr lr3 25; size lr4 26; s2_limb lr5 27 28 .cputype 29050 29 .sect .lit,lit 30 .text 31 .align 4 32 .global ___gmpn_addmul_1 33 .word 0x60000 34___gmpn_addmul_1: 35 sub lr4,lr4,8 36 jmpt lr4,Ltail 37 const gr120,0 ; init cylimb reg 38 39 srl gr117,lr4,3 ; divide by 8 40 sub gr117,gr117,1 ; count for jmpfdec 41 42Loop: mtsrim cr,(8-1) 43 loadm 0,0,gr96,lr3 44 add lr3,lr3,32 45 46 multiplu gr104,gr96,lr5 47 multmu gr96,gr96,lr5 48 multiplu gr105,gr97,lr5 49 multmu gr97,gr97,lr5 50 multiplu gr106,gr98,lr5 51 multmu gr98,gr98,lr5 52 multiplu gr107,gr99,lr5 53 multmu gr99,gr99,lr5 54 multiplu gr108,gr100,lr5 55 multmu gr100,gr100,lr5 56 multiplu gr109,gr101,lr5 57 multmu gr101,gr101,lr5 58 multiplu gr110,gr102,lr5 59 multmu gr102,gr102,lr5 60 multiplu gr111,gr103,lr5 61 multmu gr103,gr103,lr5 62 63 add gr104,gr104,gr120 64 addc gr105,gr105,gr96 65 addc gr106,gr106,gr97 66 addc gr107,gr107,gr98 67 addc gr108,gr108,gr99 68 addc gr109,gr109,gr100 69 addc gr110,gr110,gr101 70 addc gr111,gr111,gr102 71 addc gr120,gr103,0 72 73 mtsrim cr,(8-1) 74 loadm 0,0,gr96,lr2 75 76 add gr104,gr96,gr104 77 addc gr105,gr97,gr105 78 addc gr106,gr98,gr106 79 addc gr107,gr99,gr107 80 addc gr108,gr100,gr108 81 addc gr109,gr101,gr109 82 addc gr110,gr102,gr110 83 addc gr111,gr103,gr111 84 addc gr120,gr120,0 85 86 mtsrim cr,(8-1) 87 storem 0,0,gr104,lr2 88 jmpfdec gr117,Loop 89 add lr2,lr2,32 90 91Ltail: and lr4,lr4,(8-1) 92 sub gr118,lr4,1 ; count for CR 93 jmpt gr118,Lend 94 sub lr4,lr4,2 95 sub lr2,lr2,4 ; offset res_ptr by one limb 96 97Loop2: load 0,0,gr116,lr3 98 add lr3,lr3,4 99 multiplu gr117,gr116,lr5 100 multmu gr118,gr116,lr5 101 add lr2,lr2,4 102 load 0,0,gr119,lr2 103 add gr117,gr117,gr120 104 addc gr118,gr118,0 105 add gr117,gr117,gr119 106 store 0,0,gr117,lr2 107 jmpfdec lr4,Loop2 108 addc gr120,gr118,0 109 110Lend: jmpi lr0 111 or gr96,gr120,0 ; copy 112