version 1.1.1.1, 2000/09/09 14:12:38 |
version 1.1.1.2, 2003/08/25 16:06:24 |
|
|
dnl PowerPC-32 mpn_submul_1 -- Multiply a limb vector with a limb and subtract |
dnl PowerPC-32 mpn_submul_1 -- Multiply a limb vector with a limb and subtract |
dnl the result from a second limb vector. |
dnl the result from a second limb vector. |
|
|
dnl Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc. |
dnl Copyright 1995, 1997, 1998, 2000, 2002 Free Software Foundation, Inc. |
|
|
dnl This file is part of the GNU MP Library. |
dnl This file is part of the GNU MP Library. |
|
|
Line 35 include(`../config.m4') |
|
Line 35 include(`../config.m4') |
|
ASM_START() |
ASM_START() |
PROLOGUE(mpn_submul_1) |
PROLOGUE(mpn_submul_1) |
cmpi cr0,r5,9 C more than 9 limbs? |
cmpi cr0,r5,9 C more than 9 limbs? |
bgt cr0,.Lbig C branch if more than 9 limbs |
bgt cr0,L(big) C branch if more than 9 limbs |
|
|
mtctr r5 |
mtctr r5 |
lwz r0,0(r4) |
lwz r0,0(r4) |
Line 45 PROLOGUE(mpn_submul_1) |
|
Line 45 PROLOGUE(mpn_submul_1) |
|
subfc r8,r7,r9 |
subfc r8,r7,r9 |
addc r7,r7,r8 C invert cy (r7 is junk) |
addc r7,r7,r8 C invert cy (r7 is junk) |
addi r3,r3,-4 |
addi r3,r3,-4 |
bdz .Lend |
bdz L(end) |
.Lloop: |
L(loop): |
lwzu r0,4(r4) |
lwzu r0,4(r4) |
stwu r8,4(r3) |
stwu r8,4(r3) |
mullw r8,r0,r6 |
mullw r8,r0,r6 |
Line 56 PROLOGUE(mpn_submul_1) |
|
Line 56 PROLOGUE(mpn_submul_1) |
|
addze r10,r10 |
addze r10,r10 |
subfc r8,r7,r9 |
subfc r8,r7,r9 |
addc r7,r7,r8 C invert cy (r7 is junk) |
addc r7,r7,r8 C invert cy (r7 is junk) |
bdnz .Lloop |
bdnz L(loop) |
.Lend: stw r8,4(r3) |
L(end): stw r8,4(r3) |
addze r3,r10 |
addze r3,r10 |
blr |
blr |
|
|
.Lbig: stmw r30,-32(r1) |
L(big): stmw r30,-32(r1) |
addi r5,r5,-1 |
addi r5,r5,-1 |
srwi r0,r5,2 |
srwi r0,r5,2 |
mtctr r0 |
mtctr r0 |
Line 74 PROLOGUE(mpn_submul_1) |
|
Line 74 PROLOGUE(mpn_submul_1) |
|
addc r8,r8,r7 |
addc r8,r8,r7 |
stw r7,0(r3) |
stw r7,0(r3) |
|
|
.LloopU: |
L(loopU): |
lwz r7,4(r4) |
lwz r7,4(r4) |
lwz r12,8(r4) |
lwz r12,8(r4) |
lwz r30,12(r4) |
lwz r30,12(r4) |
Line 106 PROLOGUE(mpn_submul_1) |
|
Line 106 PROLOGUE(mpn_submul_1) |
|
stwu r31,16(r3) |
stwu r31,16(r3) |
subfe r11,r11,r11 C invert ... |
subfe r11,r11,r11 C invert ... |
addic r11,r11,1 C ... carry |
addic r11,r11,1 C ... carry |
bdnz .LloopU |
bdnz L(loopU) |
|
|
andi. r31,r5,3 |
andi. r31,r5,3 |
mtctr r31 |
mtctr r31 |
beq cr0,.Lendx |
beq cr0,L(endx) |
|
|
.LloopE: |
L(loopE): |
lwzu r7,4(r4) |
lwzu r7,4(r4) |
mullw r8,r7,r6 |
mullw r8,r7,r6 |
adde r8,r8,r0 C add cy_limb |
adde r8,r8,r0 C add cy_limb |
Line 122 PROLOGUE(mpn_submul_1) |
|
Line 122 PROLOGUE(mpn_submul_1) |
|
subfc r7,r8,r7 |
subfc r7,r8,r7 |
addc r8,r8,r7 |
addc r8,r8,r7 |
stwu r7,4(r3) |
stwu r7,4(r3) |
bdnz .LloopE |
bdnz L(loopE) |
.Lendx: |
L(endx): |
addze r3,r0 |
addze r3,r0 |
lmw r30,-32(r1) |
lmw r30,-32(r1) |
blr |
blr |