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/mpvecdigmulsub-Darwin.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/mpvecdigmulsub-Darwin.s')
-rw-r--r-- | src/libmp/386/mpvecdigmulsub-Darwin.s | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/src/libmp/386/mpvecdigmulsub-Darwin.s b/src/libmp/386/mpvecdigmulsub-Darwin.s deleted file mode 100644 index 8f7f4d68..00000000 --- a/src/libmp/386/mpvecdigmulsub-Darwin.s +++ /dev/null @@ -1,69 +0,0 @@ -/* - * mpvecdigmulsub(mpdigit *b, int n, mpdigit m, mpdigit *p) - * - * p -= b*m - * - * each step look like: - * hi,lo = m*b[i] - * lo += oldhi + carry - * hi += carry - * p[i] += lo - * oldhi = hi - * - * the registers are: - * hi = DX - constrained by hardware - * lo = AX - constrained by hardware - * b = SI - can't be BP - * p = DI - can't be BP - * i = BP - * n = CX - constrained by LOOP instr - * m = BX - * oldhi = EX - * - */ -.text - -.globl _mpvecdigmulsub -_mpvecdigmulsub: - /* Prelude */ - pushl %ebp /* save on stack */ - pushl %ebx - pushl %esi - pushl %edi - - leal 20(%esp), %ebp /* %ebp = FP for now */ - movl 0(%ebp), %esi /* b */ - movl 4(%ebp), %ecx /* n */ - movl 8(%ebp), %ebx /* m */ - movl 12(%ebp), %edi /* p */ - xorl %ebp, %ebp - pushl %ebp -1: - movl (%esi, %ebp, 4),%eax /* lo = b[i] */ - mull %ebx /* hi, lo = b[i] * m */ - addl 0(%esp), %eax /* lo += oldhi */ - jae 2f - incl %edx /* hi += carry */ -2: - subl %eax, (%edi, %ebp, 4) - jae 3f - incl %edx /* hi += carry */ -3: - movl %edx, 0(%esp) - incl %ebp - loop 1b - popl %eax - subl %eax, (%edi, %ebp, 4) - jae 4f - movl $-1, %eax - jmp 5f -4: - movl $1, %eax -5: - /* Postlude */ - popl %edi - popl %esi - popl %ebx - popl %ebp - ret - |