summaryrefslogtreecommitdiff
path: root/sysdeps/i386/i586/add_n.S
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1995-12-05 03:35:55 +0000
committerRoland McGrath <roland@gnu.org>1995-12-05 03:35:55 +0000
commit77a58cad3fa0a286bd2581187a2463a762d711ba (patch)
tree50756d67e82e3edbe49f722662b0bed8c0cd19cc /sysdeps/i386/i586/add_n.S
parentb5a08c5aca57835de5f69b8b017f09cd75f5cf7d (diff)
downloadglibc-77a58cad3fa0a286bd2581187a2463a762d711ba.tar.gz
Tue Dec 5 02:27:32 1995 Ulrich Drepper <drepper@gnu.ai.mit.edu>
* libio/Makefile [routines]: Remove iofscanf, add iopopen, pclose. * libio/iofscanf.c: Remove file. * libio/iogetdelim.c (_IO_getdelim): Correct stupid bug at string termination. * libio/iopopen.c: New file from GNU libio. * libio/memstream.c: Fixed bug in fclose handling. Instead of providing a close callback we need a finish callback. * libio/pclose.c: New file. Derived from popen.c in GNU libio. * posix/gnu/types.h: Fixed typo. * stdio-common/errnobug.c: fputs returns EOF in error case. Do not test for != 0. * stdio-common/printf-parse.h (parse_one_spec): Do not force padding with ' ' if precision is given. Fix by HJ Lu. * stdio-common/printf_fp.c: Fix comment. * stdio-common/tfformat.c, stdio-common/tiformat.c, stdio-common/tstdiomisc.c: New files from GNU libio test suite. * stdio-common/tstgetln.c: Provide ssize_t type when testing libio. * stdio-common/vfprintf.c (outchar): Use PUTC instead of putc. (vfprintf): Cleasr args_type array before using it. When printing 0 as an integer with precision 0 nothing must be written for the number. Based on patch by HJ Lu. * stdio-common/vfscanf.c: Remove fixed input buffer. Now we have a dynamically extended buffer. * stdlib/strtod.c: Merge with version in Linux libc. This fixes some bugs with handling of very small numbers and has different solution for formaer patches. * sysdeps/i386/i586/add_n.S, sysdeps/i386/i586/sub_n.S: Rename macros r1 and r2 to t1, and t2 resp. This is necessary because glibc headers also define r1. Tue Dec 5 02:27:32 1995 Ulrich Drepper <drepper@gnu.ai.mit.edu> * libio/Makefile [routines]: Remove iofscanf, add iopopen, pclose. * libio/iofscanf.c: Remove file. * libio/iogetdelim.c (_IO_getdelim): Correct stupid bug at string termination. * libio/iopopen.c: New file from GNU libio. * libio/memstream.c: Fixed bug in fclose handling. Instead of providing a close callback we need a finish callback. * libio/pclose.c: New file. Derived from popen.c in GNU libio. * posix/gnu/types.h: Fixed typo. * stdio-common/errnobug.c: fputs returns EOF in error case. Do not test for != 0. * stdio-common/printf-parse.h (parse_one_spec): Do not force padding with ' ' if precision is given. Fix by HJ Lu. * stdio-common/printf_fp.c: Fix comment. * stdio-common/tfformat.c, stdio-common/tiformat.c, stdio-common/tstdiomisc.c: New files from GNU libio test suite. * stdio-common/tstgetln.c: Provide ssize_t type when testing libio. * stdio-common/vfprintf.c (outchar): Use PUTC instead of putc. (vfprintf): Cleasr args_type array before using it. When printing 0 as an integer with precision 0 nothing must be written for the number. Based on patch by HJ Lu. * stdio-common/vfscanf.c: Remove fixed input buffer. Now we have a dynamically extended buffer. * stdlib/strtod.c: Merge with version in Linux libc. This fixes some bugs with handling of very small numbers and has different solution for formaer patches. * sysdeps/i386/i586/add_n.S, sysdeps/i386/i586/sub_n.S: Rename macros r1 and r2 to t1, and t2 resp. This is necessary because glibc headers also define r1.
Diffstat (limited to 'sysdeps/i386/i586/add_n.S')
-rw-r--r--sysdeps/i386/i586/add_n.S84
1 files changed, 42 insertions, 42 deletions
diff --git a/sysdeps/i386/i586/add_n.S b/sysdeps/i386/i586/add_n.S
index 9be45ed93b..f52f9c60bc 100644
--- a/sysdeps/i386/i586/add_n.S
+++ b/sysdeps/i386/i586/add_n.S
@@ -27,16 +27,16 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
size (sp + 16)
*/
-#define r1 %eax
-#define r2 %edx
+#include "sysdep.h"
+#include "asm-syntax.h"
+
+#define t1 %eax
+#define t2 %edx
#define src1 %esi
#define src2 %ebp
#define dst %edi
#define x %ebx
-#include "sysdep.h"
-#include "asm-syntax.h"
-
.text
ALIGN (3)
.globl C_SYMBOL_NAME(__mpn_add_n)
@@ -54,77 +54,77 @@ C_SYMBOL_NAME(__mpn_add_n:)
movl (src2),x
decl %ecx
- movl %ecx,r2
+ movl %ecx,t2
shrl $3,%ecx
- andl $7,r2
+ andl $7,t2
testl %ecx,%ecx /* zero carry flag */
jz Lend
- pushl r2
+ pushl t2
ALIGN (3)
Loop: movl 28(dst),%eax /* fetch destination cache line */
leal 32(dst),dst
-L1: movl (src1),r1
- movl 4(src1),r2
- adcl x,r1
+L1: movl (src1),t1
+ movl 4(src1),t2
+ adcl x,t1
movl 4(src2),x
- adcl x,r2
+ adcl x,t2
movl 8(src2),x
- movl r1,-32(dst)
- movl r2,-28(dst)
+ movl t1,-32(dst)
+ movl t2,-28(dst)
-L2: movl 8(src1),r1
- movl 12(src1),r2
- adcl x,r1
+L2: movl 8(src1),t1
+ movl 12(src1),t2
+ adcl x,t1
movl 12(src2),x
- adcl x,r2
+ adcl x,t2
movl 16(src2),x
- movl r1,-24(dst)
- movl r2,-20(dst)
+ movl t1,-24(dst)
+ movl t2,-20(dst)
-L3: movl 16(src1),r1
- movl 20(src1),r2
- adcl x,r1
+L3: movl 16(src1),t1
+ movl 20(src1),t2
+ adcl x,t1
movl 20(src2),x
- adcl x,r2
+ adcl x,t2
movl 24(src2),x
- movl r1,-16(dst)
- movl r2,-12(dst)
+ movl t1,-16(dst)
+ movl t2,-12(dst)
-L4: movl 24(src1),r1
- movl 28(src1),r2
- adcl x,r1
+L4: movl 24(src1),t1
+ movl 28(src1),t2
+ adcl x,t1
movl 28(src2),x
- adcl x,r2
+ adcl x,t2
movl 32(src2),x
- movl r1,-8(dst)
- movl r2,-4(dst)
+ movl t1,-8(dst)
+ movl t2,-4(dst)
leal 32(src1),src1
leal 32(src2),src2
decl %ecx
jnz Loop
- popl r2
+ popl t2
Lend:
- decl r2 /* test r2 w/o clobbering carry */
+ decl t2 /* test t2 w/o clobbering carry */
js Lend2
- incl r2
+ incl t2
Loop2:
leal 4(dst),dst
- movl (src1),r1
- adcl x,r1
+ movl (src1),t1
+ adcl x,t1
movl 4(src2),x
- movl r1,-4(dst)
+ movl t1,-4(dst)
leal 4(src1),src1
leal 4(src2),src2
- decl r2
+ decl t2
jnz Loop2
Lend2:
- movl (src1),r1
- adcl x,r1
- movl r1,(dst)
+ movl (src1),t1
+ adcl x,t1
+ movl t1,(dst)
sbbl %eax,%eax
negl %eax