summaryrefslogtreecommitdiff
path: root/vere/ext/gmp/gen/x86_64-windows/mpn/addaddmul_1msb0.s
diff options
context:
space:
mode:
authorpolwex <polwex@sortug.com>2025-10-05 21:56:51 +0700
committerpolwex <polwex@sortug.com>2025-10-05 21:56:51 +0700
commitfcedfddf00b3f994e4f4e40332ac7fc192c63244 (patch)
tree51d38e62c7bdfcc5f9a5e9435fe820c93cfc9a3d /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.s178
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
+