clarify the purpose of this project
[nyanglibc.git] / stdlib / dbl2mpn.s
blobb5e52751293202da2afd326ec889df065012763c
1 .text
2 .p2align 4,,15
3 .globl __mpn_extract_double
4 .hidden __mpn_extract_double
5 .type __mpn_extract_double, @function
6 __mpn_extract_double:
7 movq %xmm0, %rsi
8 movq %xmm0, %rax
9 shrq $63, %rsi
10 movl %esi, (%rcx)
11 movq %xmm0, %rcx
12 movabsq $4503599627370495, %rsi
13 andq %rax, %rsi
14 shrq $48, %rax
15 shrq $52, %rcx
16 andl $2047, %ecx
17 subl $1023, %ecx
18 testl $32752, %eax
19 movl %ecx, (%rdx)
20 movq %rsi, (%rdi)
21 jne .L2
22 testq %rsi, %rsi
23 jne .L3
24 movl $0, (%rdx)
25 movl $1, %eax
26 ret
27 .p2align 4,,10
28 .p2align 3
29 .L2:
30 movabsq $4503599627370496, %rax
31 orq %rax, %rsi
32 movl $1, %eax
33 movq %rsi, (%rdi)
34 ret
35 .p2align 4,,10
36 .p2align 3
37 .L3:
38 bsrq %rsi, %rcx
39 movl $-1022, %eax
40 xorq $63, %rcx
41 subl $11, %ecx
42 subl %ecx, %eax
43 salq %cl, %rsi
44 movq %rsi, (%rdi)
45 movl %eax, (%rdx)
46 movl $1, %eax
47 ret
48 .size __mpn_extract_double, .-__mpn_extract_double