ftu/blst/elf/div3w-x86_64.s
2022-09-09 02:47:49 -04:00

124 lines
1.7 KiB
ArmAsm

.text
.globl div_3_limbs
.hidden div_3_limbs
.type div_3_limbs,@function
.align 32
div_3_limbs:
.cfi_startproc
.byte 0xf3,0x0f,0x1e,0xfa
movq (%rdi),%r8
movq 8(%rdi),%r9
xorq %rax,%rax
movl $64,%ecx
.Loop:
movq %r8,%r10
subq %rsi,%r8
movq %r9,%r11
sbbq %rdx,%r9
leaq 1(%rax,%rax,1),%rax
movq %rdx,%rdi
cmovcq %r10,%r8
cmovcq %r11,%r9
sbbq $0,%rax
shlq $63,%rdi
shrq $1,%rsi
shrq $1,%rdx
orq %rdi,%rsi
subl $1,%ecx
jnz .Loop
leaq 1(%rax,%rax,1),%rcx
sarq $63,%rax
subq %rsi,%r8
sbbq %rdx,%r9
sbbq $0,%rcx
orq %rcx,%rax
.byte 0xf3,0xc3
.cfi_endproc
.size div_3_limbs,.-div_3_limbs
.globl quot_rem_128
.hidden quot_rem_128
.type quot_rem_128,@function
.align 32
quot_rem_128:
.cfi_startproc
.byte 0xf3,0x0f,0x1e,0xfa
movq %rdx,%rax
movq %rdx,%rcx
mulq 0(%rsi)
movq %rax,%r8
movq %rcx,%rax
movq %rdx,%r9
mulq 8(%rsi)
addq %rax,%r9
adcq $0,%rdx
movq 0(%rdi),%r10
movq 8(%rdi),%r11
movq 16(%rdi),%rax
subq %r8,%r10
sbbq %r9,%r11
sbbq %rdx,%rax
sbbq %r8,%r8
addq %r8,%rcx
movq %r8,%r9
andq 0(%rsi),%r8
andq 8(%rsi),%r9
addq %r8,%r10
adcq %r9,%r11
movq %r10,0(%rdi)
movq %r11,8(%rdi)
movq %rcx,16(%rdi)
movq %rcx,%rax
.byte 0xf3,0xc3
.cfi_endproc
.size quot_rem_128,.-quot_rem_128
.globl quot_rem_64
.hidden quot_rem_64
.type quot_rem_64,@function
.align 32
quot_rem_64:
.cfi_startproc
.byte 0xf3,0x0f,0x1e,0xfa
movq %rdx,%rax
imulq 0(%rsi),%rdx
movq 0(%rdi),%r10
subq %rdx,%r10
movq %r10,0(%rdi)
movq %rax,8(%rdi)
.byte 0xf3,0xc3
.cfi_endproc
.size quot_rem_64,.-quot_rem_64
.section .note.GNU-stack,"",@progbits
.section .note.gnu.property,"a",@note
.long 4,2f-1f,5
.byte 0x47,0x4E,0x55,0
1: .long 0xc0000002,4,3
.align 8
2: