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/com.s |
claude is gud
Diffstat (limited to 'vere/ext/gmp/gen/x86_64-windows/mpn/com.s')
-rw-r--r-- | vere/ext/gmp/gen/x86_64-windows/mpn/com.s | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/com.s b/vere/ext/gmp/gen/x86_64-windows/mpn/com.s new file mode 100644 index 0000000..f193cd2 --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/com.s @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 32, 0x90 + .globl __gmpn_com + + .def __gmpn_com + .scl 2 + .type 32 + .endef +__gmpn_com: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + mov %r8, %rdx + + movq (%rsi), %r8 + movl %edx, %eax + leaq (%rsi,%rdx,8), %rsi + leaq (%rdi,%rdx,8), %rdi + negq %rdx + andl $3, %eax + je Lb00 + cmpl $2, %eax + jc Lb01 + je Lb10 + +Lb11: notq %r8 + movq %r8, (%rdi,%rdx,8) + decq %rdx + jmp Le11 +Lb10: addq $-2, %rdx + jmp Le10 + .byte 0x90,0x90,0x90,0x90,0x90,0x90 +Lb01: notq %r8 + movq %r8, (%rdi,%rdx,8) + incq %rdx + jz Lret + +Loop: movq (%rsi,%rdx,8), %r8 +Lb00: movq 8(%rsi,%rdx,8), %r9 + notq %r8 + notq %r9 + movq %r8, (%rdi,%rdx,8) + movq %r9, 8(%rdi,%rdx,8) +Le11: movq 16(%rsi,%rdx,8), %r8 +Le10: movq 24(%rsi,%rdx,8), %r9 + notq %r8 + notq %r9 + movq %r8, 16(%rdi,%rdx,8) + movq %r9, 24(%rdi,%rdx,8) + addq $4, %rdx + jnc Loop +Lret: pop %rsi + pop %rdi + ret + |