remove empty dir
[ghc-hetmet.git] / rts / gmp / mpn / powerpc64 / submul_1.asm
1 # PowerPC-64 mpn_submul_1 -- Multiply a limb vector with a limb and subtract
2 # the result from a second limb vector.
3
4 # Copyright (C) 1999, 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 2.1 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; see the file COPYING.LIB.  If not, write to
20 # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 # MA 02111-1307, USA.
22
23
24 # INPUT PARAMETERS
25 # res_ptr       r3
26 # s1_ptr        r4
27 # size          r5
28 # s2_limb       r6
29
30 include(`../config.m4')
31
32 ASM_START()
33 PROLOGUE(mpn_submul_1)
34         mtctr   5
35         li      9,0             # cy_limb = 0
36         addic   0,0,0
37         cal     3,-8(3)
38         cal     4,-8(4)
39 .Loop:
40         ldu     0,8(4)
41         ld      10,8(3)
42         mulld   7,0,6
43         adde    7,7,9
44         mulhdu  9,0,6
45         addze   9,9
46         subfc   7,7,10
47         stdu    7,8(3)
48         subfe   11,11,11        # invert ...
49         addic   11,11,1         # ... carry
50         bdnz    .Loop
51
52         addze   3,9
53         blr
54 EPILOGUE(mpn_submul_1)