add_n.s revision 1.1.1.1
1@ ARM/Thumb mpn_add_n -- Add two limb vectors of the same length > 0 and store 2@ sum in a third limb vector. 3 4@ Copyright 1997, 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 r0 24@ S1_ptr r1 25@ S2_ptr r2 26@ SIZE r3 27 28@ NOT TESTED CODE 29 30 .text 31 .thumb 32 .align 0 33 .global ___gmpn_add_n 34___gmpn_add_n: 35 push {r4, r5, r6, lr} 36 mov r6, #1 @ init carry save register 37 38Loop: sub r6, #1 @ restore carry (set iff r6 was 0) 39 ldmia r1!, {r4} @ load next limb from S1 40 ldmia r2!, {r5} @ load next limb from S2 41 adc r4, r5 42 stmia r0!, {r4} @ store result limb to RES 43 sbc r6, r6 @ save negated carry 44 sub r3, #1 45 bge Loop @ loop back while remaining count >= 4 46 47 mov r0, r6 48 pop {r4, r5, r6, pc} 49