diff options
author | polwex <polwex@sortug.com> | 2025-10-05 21:56:51 +0700 |
---|---|---|
committer | polwex <polwex@sortug.com> | 2025-10-05 21:56:51 +0700 |
commit | fcedfddf00b3f994e4f4e40332ac7fc192c63244 (patch) | |
tree | 51d38e62c7bdfcc5f9a5e9435fe820c93cfc9a3d /vere/ext/gmp/gen/x86_64-windows/mpn/addaddmul_1msb0.s |
claude is gud
Diffstat (limited to 'vere/ext/gmp/gen/x86_64-windows/mpn/addaddmul_1msb0.s')
-rw-r--r-- | vere/ext/gmp/gen/x86_64-windows/mpn/addaddmul_1msb0.s | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/addaddmul_1msb0.s b/vere/ext/gmp/gen/x86_64-windows/mpn/addaddmul_1msb0.s new file mode 100644 index 0000000..2757eac --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/addaddmul_1msb0.s @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 16, 0x90 + .globl __gmpn_addaddmul_1msb0 + + .def __gmpn_addaddmul_1msb0 + .scl 2 + .type 32 + .endef +__gmpn_addaddmul_1msb0: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + mov %r9, %rcx + + mov 56(%rsp), %r8 + mov 64(%rsp), %r9 + push %rbp + + lea (%rsi,%rcx,8), %rsi + lea (%rdx,%rcx,8), %rbp + lea (%rdi,%rcx,8), %rdi + neg %rcx + + mov (%rsi,%rcx,8), %rax + mul %r8 + mov %rax, %r11 + mov (%rbp,%rcx,8), %rax + mov %rdx, %r10 + add $3, %rcx + jns Lend + + push %r13 + + .align 16, 0x90 +Ltop: mul %r9 + add %rax, %r11 + mov -16(%rsi,%rcx,8), %rax + adc %rdx, %r10 + mov %r11, -24(%rdi,%rcx,8) + mul %r8 + add %rax, %r10 + mov -16(%rbp,%rcx,8), %rax + mov $0, %r13d + adc %rdx, %r13 + mul %r9 + add %rax, %r10 + mov -8(%rsi,%rcx,8), %rax + adc %rdx, %r13 + mov %r10, -16(%rdi,%rcx,8) + mul %r8 + add %rax, %r13 + mov -8(%rbp,%rcx,8), %rax + mov $0, %r11d + adc %rdx, %r11 + mul %r9 + add %rax, %r13 + adc %rdx, %r11 + mov (%rsi,%rcx,8), %rax + mul %r8 + add %rax, %r11 + mov %r13, -8(%rdi,%rcx,8) + mov (%rbp,%rcx,8), %rax + mov $0, %r10d + adc %rdx, %r10 + add $3, %rcx + js Ltop + + pop %r13 + +Lend: mul %r9 + add %rax, %r11 + adc %rdx, %r10 + cmp $1, %ecx + ja Ltwo + mov -16(%rsi,%rcx,8), %rax + mov %r11, -24(%rdi,%rcx,8) + mov %r10, %r11 + jz Lone + +Lnul: mul %r8 + add %rax, %r10 + mov -16(%rbp), %rax + mov $0, %r11d + adc %rdx, %r11 + mul %r9 + add %rax, %r10 + mov -8(%rsi), %rax + adc %rdx, %r11 + mov %r10, -16(%rdi) +Lone: mul %r8 + add %rax, %r11 + mov -8(%rbp), %rax + mov $0, %r10d + adc %rdx, %r10 + mul %r9 + add %rax, %r11 + adc %rdx, %r10 + +Ltwo: mov %r11, -8(%rdi) + mov %r10, %rax +Lret: pop %rbp + pop %rsi + pop %rdi + ret + |