diff options
Diffstat (limited to 'vere/ext/gmp/gen/x86_64-windows/mpn/gcd_11.s')
-rw-r--r-- | vere/ext/gmp/gen/x86_64-windows/mpn/gcd_11.s | 264 |
1 files changed, 264 insertions, 0 deletions
diff --git a/vere/ext/gmp/gen/x86_64-windows/mpn/gcd_11.s b/vere/ext/gmp/gen/x86_64-windows/mpn/gcd_11.s new file mode 100644 index 0000000..eaf48fd --- /dev/null +++ b/vere/ext/gmp/gen/x86_64-windows/mpn/gcd_11.s @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .section .rdata,"dr" + .align 64, 0x90 +ctz_table: + + .byte 7 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 5 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 6 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 5 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 4 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + .byte 3 + .byte 0 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 1 + .byte 0 + + + + + + + + + + + .text + .align 64, 0x90 + .globl __gmpn_gcd_11 + + .def __gmpn_gcd_11 + .scl 2 + .type 32 + .endef +__gmpn_gcd_11: + + push %rdi + push %rsi + mov %rcx, %rdi + mov %rdx, %rsi + + + lea ctz_table(%rip), %r8 + + jmp Lent + + .align 16, 0x90 +Ltop: cmovc %rdx, %rdi + cmovc %rax, %rsi +Lmid: and $127, %edx + movzbl (%r8,%rdx), %ecx + jz Lshift_alot + shr %cl, %rdi +Lent: mov %rdi, %rax + mov %rsi, %rdx + sub %rdi, %rdx + sub %rsi, %rdi + jnz Ltop + +Lend: + + pop %rsi + pop %rdi + ret + +Lshift_alot: + shr $7, %rdi + mov %rdi, %rdx + jmp Lmid + |