X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2Fgmp%2Fmpn%2Farm%2Fsub_n.S;fp=ghc%2Frts%2Fgmp%2Fmpn%2Farm%2Fsub_n.S;h=0000000000000000000000000000000000000000;hb=0065d5ab628975892cea1ec7303f968c3338cbe1;hp=856505fe21d58142a0c076b8ded0c6bd7f765357;hpb=28a464a75e14cece5db40f2765a29348273ff2d2;p=ghc-hetmet.git diff --git a/ghc/rts/gmp/mpn/arm/sub_n.S b/ghc/rts/gmp/mpn/arm/sub_n.S deleted file mode 100644 index 856505f..0000000 --- a/ghc/rts/gmp/mpn/arm/sub_n.S +++ /dev/null @@ -1,79 +0,0 @@ -@ ARM mpn_sub -- Subtract two limb vectors of the same length > 0 and store -@ difference in a third limb vector. -@ Contributed by Robert Harley. - -@ Copyright (C) 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 Lesser General Public License as published by -@ the Free Software Foundation; either version 2.1 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 Lesser General Public -@ License for more details. - -@ You should have received a copy of the GNU Lesser 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. - -#define d r0 -#define a r1 -#define b r2 -#define n r3 - -#define sl r10 -#define fp r11 -#define ip r12 -#define sp r13 -#define lr r14 -#define pc r15 - -.text - .align 0 - .global __gmpn_sub_n - .type __gmpn_sub_n,%function -__gmpn_sub_n: - stmfd sp!, { r8, r9, lr } - subs ip, ip, ip - tst n, #1 - beq skip1 - ldr ip, [a], #4 - ldr lr, [b], #4 - subs ip, ip, lr - str ip, [d], #4 -skip1: - tst n, #2 - beq skip2 - ldmia a!, { r8, r9 } - ldmia b!, { ip, lr } - sbcs r8, r8, ip - sbcs r9, r9, lr - stmia d!, { r8, r9 } -skip2: - bics n, n, #3 - beq return - stmfd sp!, { r4, r5, r6, r7 } -sub_n_loop: - ldmia a!, { r4, r5, r6, r7 } - ldmia b!, { r8, r9, ip, lr } - sbcs r4, r4, r8 - ldr r8, [d] /* Bring stuff into cache. */ - sbcs r5, r5, r9 - sbcs r6, r6, ip - sbcs r7, r7, lr - stmia d!, { r4, r5, r6, r7 } - sub n, n, #4 - teq n, #0 - bne sub_n_loop - ldmfd sp!, { r4, r5, r6, r7 } -return: - sbc r0, r0, r0 - and r0, r0, #1 - ldmfd sp!, { r8, r9, pc } -end: - .size __gmpn_sub_n, end - __gmpn_sub_n