summaryrefslogtreecommitdiff
path: root/vere/ext/gmp/gen/x86_64-linux/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-linux/mpn/addaddmul_1msb0.s
claude is gud
Diffstat (limited to 'vere/ext/gmp/gen/x86_64-linux/mpn/addaddmul_1msb0.s')
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/addaddmul_1msb0.s185
1 files changed, 185 insertions, 0 deletions
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/addaddmul_1msb0.s b/vere/ext/gmp/gen/x86_64-linux/mpn/addaddmul_1msb0.s
new file mode 100644
index 0000000..c821f7b
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/addaddmul_1msb0.s
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_addaddmul_1msb0
+ .type __gmpn_addaddmul_1msb0,@function
+
+__gmpn_addaddmul_1msb0:
+
+ push %r12
+ 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, %r12
+ mov (%rbp,%rcx,8), %rax
+ mov %rdx, %r10
+ add $3, %rcx
+ jns .Lend
+
+ .align 16, 0x90
+.Ltop: mul %r9
+ add %rax, %r12
+ mov -16(%rsi,%rcx,8), %rax
+ adc %rdx, %r10
+ mov %r12, -24(%rdi,%rcx,8)
+ mul %r8
+ add %rax, %r10
+ mov -16(%rbp,%rcx,8), %rax
+ mov $0, %r11d
+ adc %rdx, %r11
+ mul %r9
+ add %rax, %r10
+ mov -8(%rsi,%rcx,8), %rax
+ adc %rdx, %r11
+ mov %r10, -16(%rdi,%rcx,8)
+ mul %r8
+ add %rax, %r11
+ mov -8(%rbp,%rcx,8), %rax
+ mov $0, %r12d
+ adc %rdx, %r12
+ mul %r9
+ add %rax, %r11
+ adc %rdx, %r12
+ mov (%rsi,%rcx,8), %rax
+ mul %r8
+ add %rax, %r12
+ mov %r11, -8(%rdi,%rcx,8)
+ mov (%rbp,%rcx,8), %rax
+ mov $0, %r10d
+ adc %rdx, %r10
+ add $3, %rcx
+ js .Ltop
+
+.Lend: cmp $1, %ecx
+ ja 2f
+ jz 1f
+
+ mul %r9
+ add %rax, %r12
+ mov -16(%rsi), %rax
+ adc %rdx, %r10
+ mov %r12, -24(%rdi)
+ 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)
+ mul %r8
+ add %rax, %r11
+ mov -8(%rbp), %rax
+ mov $0, %r12d
+ adc %rdx, %r12
+ mul %r9
+ add %rax, %r11
+ adc %rdx, %r12
+ mov %r11, -8(%rdi)
+ mov %r12, %rax
+ pop %rbp
+ pop %r12
+ ret
+
+1: mul %r9
+ add %rax, %r12
+ mov -8(%rsi), %rax
+ adc %rdx, %r10
+ mov %r12, -16(%rdi)
+ mul %r8
+ add %rax, %r10
+ mov -8(%rbp), %rax
+ mov $0, %r11d
+ adc %rdx, %r11
+ mul %r9
+ add %rax, %r10
+ adc %rdx, %r11
+ mov %r10, -8(%rdi)
+ mov %r11, %rax
+ pop %rbp
+ pop %r12
+ ret
+
+2: mul %r9
+ add %rax, %r12
+ mov %r12, -8(%rdi)
+ adc %rdx, %r10
+ mov %r10, %rax
+ pop %rbp
+ pop %r12
+ ret
+ .size __gmpn_addaddmul_1msb0,.-__gmpn_addaddmul_1msb0