mirror of
https://github.com/luxfi/blst.git
synced 2026-10-30 17:01:37 +00:00
98 lines
1.1 KiB
NASM
98 lines
1.1 KiB
NASM
GBLA __SIZEOF_POINTER__
|
|
__SIZEOF_POINTER__ SETA 64/8
|
|
AREA |.text|,CODE,ALIGN=8,ARM64
|
|
|
|
|
|
|
|
EXPORT |div_3_limbs|[FUNC]
|
|
ALIGN 32
|
|
|div_3_limbs| PROC
|
|
hint #34
|
|
ldp x4,x5,[x0]
|
|
eor x0,x0,x0
|
|
mov x3,#64
|
|
nop
|
|
|
|
|$Loop|
|
|
subs x6,x4,x1
|
|
add x0,x0,x0
|
|
sbcs x7,x5,x2
|
|
add x0,x0,#1
|
|
csello x4,x4,x6
|
|
extr x1,x2,x1,#1
|
|
csello x5,x5,x7
|
|
lsr x2,x2,#1
|
|
sbc x0,x0,xzr
|
|
sub x3,x3,#1
|
|
cbnz x3,|$Loop|
|
|
|
|
asr x3,x0,#63
|
|
add x0,x0,x0
|
|
subs x6,x4,x1
|
|
add x0,x0,#1
|
|
sbcs x7,x5,x2
|
|
sbc x0,x0,xzr
|
|
|
|
orr x0,x0,x3
|
|
|
|
ret
|
|
ENDP
|
|
|
|
|
|
EXPORT |quot_rem_128|[FUNC]
|
|
ALIGN 32
|
|
|quot_rem_128| PROC
|
|
hint #34
|
|
ldp x3,x4,[x1]
|
|
|
|
mul x5,x3,x2
|
|
umulh x6,x3,x2
|
|
mul x11, x4,x2
|
|
umulh x7,x4,x2
|
|
|
|
ldp x8,x9,[x0]
|
|
ldr x10,[x0,#16]
|
|
|
|
adds x6,x6,x11
|
|
adc x7,x7,xzr
|
|
|
|
subs x8,x8,x5
|
|
sbcs x9,x9,x6
|
|
sbcs x10,x10,x7
|
|
sbc x5,xzr,xzr
|
|
|
|
add x2,x2,x5
|
|
and x3,x3,x5
|
|
and x4,x4,x5
|
|
adds x8,x8,x3
|
|
adc x9,x9,x4
|
|
|
|
stp x8,x9,[x0]
|
|
str x2,[x0,#16]
|
|
|
|
mov x0,x2
|
|
|
|
ret
|
|
ENDP
|
|
|
|
|
|
|
|
EXPORT |quot_rem_64|[FUNC]
|
|
ALIGN 32
|
|
|quot_rem_64| PROC
|
|
hint #34
|
|
ldr x3,[x1]
|
|
ldr x8,[x0]
|
|
|
|
mul x5,x3,x2
|
|
|
|
sub x8,x8,x5
|
|
|
|
stp x8,x2,[x0]
|
|
|
|
mov x0,x2
|
|
|
|
ret
|
|
ENDP
|
|
END
|