diff options
author | Petter Rodhelind <petter.rodhelind@gmail.com> | 2021-02-18 20:21:24 +0100 |
---|---|---|
committer | Petter Rodhelind <petter.rodhelind@gmail.com> | 2021-02-18 20:21:24 +0100 |
commit | 181d56ee64da53279bb6ecf49c24ab54cfb7193f (patch) | |
tree | fc6c8736bb97790a257c5514998c583ffce7c41c /src/libmp/386/mpvecsub.s | |
parent | 94c521bf102a74aec7e1a5c3a9ef5eaa968d4e14 (diff) | |
parent | 90971376a5e8620fc62579aa1b3be26245ec8c06 (diff) | |
download | plan9port-181d56ee64da53279bb6ecf49c24ab54cfb7193f.tar.gz plan9port-181d56ee64da53279bb6ecf49c24ab54cfb7193f.tar.bz2 plan9port-181d56ee64da53279bb6ecf49c24ab54cfb7193f.zip |
Diffstat (limited to 'src/libmp/386/mpvecsub.s')
-rw-r--r-- | src/libmp/386/mpvecsub.s | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/src/libmp/386/mpvecsub.s b/src/libmp/386/mpvecsub.s deleted file mode 100644 index d68424cf..00000000 --- a/src/libmp/386/mpvecsub.s +++ /dev/null @@ -1,60 +0,0 @@ -/* mpvecsub(mpdigit *a, int alen, mpdigit *b, int blen, mpdigit *diff) */ -/* diff[0:alen-1] = a[0:alen-1] - b[0:blen-1] */ -/* prereq: alen >= blen, diff has room for alen digits */ -/* (very old gnu assembler doesn't allow multiline comments) */ - -.text - -.p2align 2,0x90 -.globl mpvecsub -mpvecsub: - /* Prelude */ - pushl %ebp /* save on stack */ - pushl %ebx - pushl %esi - pushl %edi - - leal 20(%esp), %ebp /* %ebp = FP for now */ - movl 0(%ebp), %esi /* a */ - movl 8(%ebp), %ebx /* b */ - movl 4(%ebp), %edx /* alen */ - movl 12(%ebp), %ecx /* blen */ - movl 16(%ebp), %edi /* diff */ - - subl %ecx,%edx - xorl %ebp,%ebp /* this also sets carry to 0 */ - - /* skip subraction if b is zero */ - testl %ecx,%ecx - jz _sub1 - - /* diff[0:blen-1],borrow = a[0:blen-1] - b[0:blen-1] */ -_subloop1: - movl (%esi, %ebp, 4), %eax - sbbl (%ebx, %ebp, 4), %eax - movl %eax, (%edi, %ebp, 4) - incl %ebp - loop _subloop1 - -_sub1: - incl %edx - movl %edx,%ecx - loop _subloop2 - jmp done - - /* diff[blen:alen-1] = a[blen:alen-1] - 0 */ -_subloop2: - movl (%esi, %ebp, 4), %eax - sbbl $0, %eax - movl %eax, (%edi, %ebp, 4) - incl %ebp - loop _subloop2 - -done: - /* Postlude */ - popl %edi - popl %esi - popl %ebx - popl %ebp - ret - |