clarify the purpose of this project
[nyanglibc.git] / stdio-common / printf_size.s
blobe4964c987d63a25c9c4692ab07dc14350097e0f5
1 .text
2 .section .rodata.str4.4,"aMS",@progbits,4
3 .align 4
4 .LC0:
5 .string "i"
6 .string ""
7 .string ""
8 .string "n"
9 .string ""
10 .string ""
11 .string "f"
12 .string ""
13 .string ""
14 .string ""
15 .string ""
16 .string ""
17 .string ""
18 .section .rodata.str1.1,"aMS",@progbits,1
19 .LC1:
20 .string "inf"
21 .section .rodata.str4.4
22 .align 4
23 .LC2:
24 .string "n"
25 .string ""
26 .string ""
27 .string "a"
28 .string ""
29 .string ""
30 .string "n"
31 .string ""
32 .string ""
33 .string ""
34 .string ""
35 .string ""
36 .string ""
37 .section .rodata.str1.1
38 .LC3:
39 .string "nan"
40 .globl __unordtf2
41 .globl __letf2
42 .globl __floatsitf
43 .globl __getf2
44 .globl __divtf3
45 .text
46 .p2align 4,,15
47 .globl __printf_size
48 .type __printf_size, @function
49 __printf_size:
50 pushq %r15
51 pushq %r14
52 movq %rsi, %r14
53 pushq %r13
54 pushq %r12
55 movq %rdi, %r13
56 pushq %rbp
57 pushq %rbx
58 xorl %edi, %edi
59 subq $120, %rsp
60 movq __libc_tsd_CTYPE_B@gottpoff(%rip), %rax
61 movslq 8(%rsi), %rsi
62 movl (%r14), %ebp
63 movq %fs:(%rax), %rax
64 movzwl (%rax,%rsi,2), %eax
65 andw $256, %ax
66 setne %dil
67 leaq 0(,%rdi,4), %rsi
68 addq %rdi, %rsi
69 cmpw $1, %ax
70 leaq 64(%rsp), %rax
71 sbbl %ebx, %ebx
72 leaq units.13569(%rip), %rdi
73 movq %rax, 56(%rsp)
74 movzbl 13(%r14), %eax
75 andl $24, %ebx
76 addl $1000, %ebx
77 leaq (%rdi,%rsi,2), %r12
78 movq (%rdx), %rsi
79 movl %eax, %r15d
80 shrb $2, %r15b
81 andl $1, %r15d
82 testb $16, %al
83 movzbl %r15b, %ecx
84 movl %ecx, 28(%rsp)
85 je .L3
86 movdqa (%rsi), %xmm2
87 movdqa %xmm2, %xmm1
88 movdqa %xmm2, %xmm0
89 movaps %xmm2, 64(%rsp)
90 movaps %xmm2, (%rsp)
91 call __unordtf2@PLT
92 testq %rax, %rax
93 jne .L4
94 movdqa (%rsp), %xmm2
95 movdqa .LC4(%rip), %xmm3
96 pand %xmm2, %xmm3
97 movdqa .LC5(%rip), %xmm1
98 movdqa %xmm3, %xmm0
99 movaps %xmm3, 32(%rsp)
100 call __unordtf2@PLT
101 testq %rax, %rax
102 movdqa (%rsp), %xmm2
103 jne .L97
104 movdqa 32(%rsp), %xmm3
105 movdqa .LC5(%rip), %xmm1
106 movdqa %xmm3, %xmm0
107 call __letf2@PLT
108 testq %rax, %rax
109 movdqa (%rsp), %xmm2
110 jg .L148
111 .L97:
112 movl %ebx, %edi
113 movaps %xmm2, 32(%rsp)
114 call __floatsitf@PLT
115 movdqa %xmm0, %xmm1
116 movaps %xmm0, (%rsp)
117 movdqa 32(%rsp), %xmm2
118 movdqa %xmm2, %xmm0
119 call __getf2@PLT
120 testq %rax, %rax
121 js .L7
122 cmpb $0, 1(%r12)
123 movdqa 32(%rsp), %xmm2
124 jne .L9
125 jmp .L7
126 .L172:
127 fstp %st(0)
128 fstp %st(0)
129 .p2align 4,,10
130 .p2align 3
131 .L7:
132 movl 16(%r14), %eax
133 testl %ebp, %ebp
134 movdqu (%r14), %xmm0
135 movaps %xmm0, 80(%rsp)
136 movzbl 93(%rsp), %edx
137 movl %eax, 96(%rsp)
138 movl $3, %eax
139 cmovs %eax, %ebp
140 movl %r15d, %eax
141 andl $1, %eax
142 sall $2, %eax
143 movl $102, 88(%rsp)
144 movl %ebp, 80(%rsp)
145 andl $-5, %edx
146 orl %edx, %eax
147 testb $32, 92(%rsp)
148 movb %al, 93(%rsp)
149 je .L64
150 cmpl $32, 96(%rsp)
151 je .L163
152 .L64:
153 movl 4(%r14), %eax
154 leaq 56(%rsp), %rdx
155 leaq 80(%rsp), %rsi
156 movq %r13, %rdi
157 subl $1, %eax
158 movl %eax, 84(%rsp)
159 call __printf_fp
160 testl %eax, %eax
161 movl %eax, %r9d
162 jle .L1
163 movl 28(%rsp), %edx
164 movsbl (%r12), %eax
165 testl %edx, %edx
166 je .L72
167 movq 160(%r13), %rdx
168 testq %rdx, %rdx
169 je .L73
170 movq 32(%rdx), %rcx
171 cmpq 40(%rdx), %rcx
172 jnb .L73
173 leaq 4(%rcx), %rsi
174 cmpl $-1, %eax
175 movq %rsi, 32(%rdx)
176 movl %eax, (%rcx)
177 sete %al
178 .L75:
179 testb %al, %al
180 jne .L38
181 .L77:
182 addl $1, %r9d
183 .L1:
184 addq $120, %rsp
185 movl %r9d, %eax
186 popq %rbx
187 popq %rbp
188 popq %r12
189 popq %r13
190 popq %r14
191 popq %r15
193 .p2align 4,,10
194 .p2align 3
195 .L3:
196 movzbl 12(%r14), %edx
197 testb $1, %dl
198 je .L13
199 fldt (%rsi)
200 fld %st(0)
201 fstpt 64(%rsp)
202 fucomi %st(0), %st
203 jp .L171
204 fxam
205 fnstsw %ax
206 movl %eax, %esi
207 andb $69, %ah
208 cmpb $5, %ah
209 je .L15
210 movl %ebx, (%rsp)
211 fildl (%rsp)
212 fxch %st(1)
213 fucomi %st(1), %st
214 jb .L172
215 cmpb $0, 1(%r12)
216 jne .L17
217 fstp %st(0)
218 fstp %st(0)
219 jmp .L7
220 .p2align 4,,10
221 .p2align 3
222 .L18:
223 cmpb $0, 1(%r12)
224 je .L173
225 .L17:
226 fdiv %st(1), %st
227 addq $1, %r12
228 fucomi %st(1), %st
229 jnb .L18
230 fstp %st(1)
231 jmp .L156
232 .p2align 4,,10
233 .p2align 3
234 .L173:
235 fstp %st(1)
236 .L156:
237 fstpt 64(%rsp)
238 jmp .L7
239 .p2align 4,,10
240 .p2align 3
241 .L11:
242 cmpb $0, 1(%r12)
243 je .L149
244 .L9:
245 movdqa %xmm2, %xmm0
246 movdqa (%rsp), %xmm1
247 addq $1, %r12
248 call __divtf3@PLT
249 movdqa (%rsp), %xmm1
250 movaps %xmm0, 32(%rsp)
251 call __getf2@PLT
252 testq %rax, %rax
253 movdqa 32(%rsp), %xmm2
254 jns .L11
255 .L149:
256 movaps %xmm2, 64(%rsp)
257 jmp .L7
258 .p2align 4,,10
259 .p2align 3
260 .L13:
261 movsd (%rsi), %xmm1
262 ucomisd %xmm1, %xmm1
263 movsd %xmm1, 64(%rsp)
264 jp .L14
265 movapd %xmm1, %xmm0
266 andpd .LC6(%rip), %xmm0
267 ucomisd .LC7(%rip), %xmm0
268 ja .L150
269 pxor %xmm0, %xmm0
270 cvtsi2sd %ebx, %xmm0
271 ucomisd %xmm0, %xmm1
272 jb .L7
273 cmpb $0, 1(%r12)
274 jne .L23
275 jmp .L7
276 .p2align 4,,10
277 .p2align 3
278 .L24:
279 cmpb $0, 1(%r12)
280 je .L157
281 .L23:
282 divsd %xmm0, %xmm1
283 addq $1, %r12
284 ucomisd %xmm0, %xmm1
285 jnb .L24
286 .L157:
287 movsd %xmm1, 64(%rsp)
288 jmp .L7
289 .p2align 4,,10
290 .p2align 3
291 .L148:
292 movmskps %xmm2, %eax
293 movzbl 12(%r14), %edx
294 andl $8, %eax
295 movl %eax, %ebx
296 .L10:
297 cmpl %ebp, 4(%r14)
298 movl %edx, %eax
299 leaq .LC0(%rip), %r15
300 cmovge 4(%r14), %ebp
301 andl $32, %eax
302 testl %ebx, %ebx
303 leaq .LC1(%rip), %r8
304 je .L80
305 testb %al, %al
306 leal -4(%rbp), %r12d
307 je .L96
308 leaq .LC1(%rip), %r8
309 leaq .LC0(%rip), %r15
310 xorl %ebp, %ebp
311 .L89:
312 movl 28(%rsp), %r11d
313 testl %r11d, %r11d
314 je .L32
315 movq 160(%r13), %rax
316 testq %rax, %rax
317 je .L33
318 movq 32(%rax), %rdx
319 cmpq 40(%rax), %rdx
320 jnb .L33
321 leaq 4(%rdx), %rsi
322 movq %rsi, 32(%rax)
323 movl $45, (%rdx)
324 jmp .L51
325 .p2align 4,,10
326 .p2align 3
327 .L4:
328 movzbl 12(%r14), %edx
329 cmpl %ebp, 4(%r14)
330 leaq .LC2(%rip), %r15
331 leaq .LC3(%rip), %r8
332 cmovge 4(%r14), %ebp
333 movl %edx, %eax
334 andl $32, %eax
335 .p2align 4,,10
336 .p2align 3
337 .L80:
338 testb $80, %dl
339 jne .L25
340 testb %al, %al
341 leal -3(%rbp), %r12d
342 jne .L93
343 xorl %ebx, %ebx
344 testl %r12d, %r12d
345 movl %r12d, %ebp
346 jle .L93
347 .L83:
348 movl 28(%rsp), %r12d
349 movslq %ebp, %r9
350 movq %r8, 32(%rsp)
351 movq %r9, %rdx
352 movq %r9, (%rsp)
353 movl $32, %esi
354 movq %r13, %rdi
355 testl %r12d, %r12d
356 je .L28
357 call _IO_wpadn@PLT
358 movq (%rsp), %r9
359 movq 32(%rsp), %r8
360 .L29:
361 cmpq %r9, %rax
362 movl %ebp, %r12d
363 jne .L38
364 .L27:
365 testl %ebx, %ebx
366 jne .L89
367 movzbl 12(%r14), %edx
368 .L82:
369 testb $64, %dl
370 je .L40
371 movl 28(%rsp), %r10d
372 testl %r10d, %r10d
373 je .L41
374 movq 160(%r13), %rax
375 testq %rax, %rax
376 je .L42
377 movq 32(%rax), %rdx
378 cmpq 40(%rax), %rdx
379 jnb .L42
380 leaq 4(%rdx), %rsi
381 movq %rsi, 32(%rax)
382 movl $43, (%rdx)
383 .p2align 4,,10
384 .p2align 3
385 .L51:
386 addl $1, %ebp
387 .L39:
388 movl 28(%rsp), %edi
389 testl %edi, %edi
390 je .L53
391 xorl %ebx, %ebx
392 addl $1, %ebp
393 .L57:
394 movq 160(%r13), %rax
395 movl (%r15,%rbx,4), %esi
396 testq %rax, %rax
397 je .L54
398 movq 32(%rax), %rdx
399 cmpq 40(%rax), %rdx
400 jnb .L54
401 leaq 4(%rdx), %rdi
402 cmpl $-1, %esi
403 movq %rdi, 32(%rax)
404 movl %esi, (%rdx)
405 sete %al
406 .L56:
407 testb %al, %al
408 jne .L38
409 leal 0(%rbp,%rbx), %r9d
410 addq $1, %rbx
411 cmpq $3, %rbx
412 jne .L57
413 testb $32, 12(%r14)
414 je .L1
415 testl %r12d, %r12d
416 jle .L1
417 movslq %r12d, %rbx
418 movl $32, %esi
419 movq %r13, %rdi
420 movq %rbx, %rdx
421 movl %r9d, (%rsp)
422 call _IO_wpadn@PLT
423 movl (%rsp), %r9d
424 .L63:
425 cmpq %rax, %rbx
426 jne .L38
427 addl %r12d, %r9d
428 jmp .L1
429 .p2align 4,,10
430 .p2align 3
431 .L25:
432 subl $4, %ebp
433 testb %al, %al
434 jne .L164
435 xorl %ebx, %ebx
436 .L88:
437 testl %ebp, %ebp
438 jg .L83
439 movl %ebp, %r12d
440 xorl %ebp, %ebp
441 jmp .L27
442 .p2align 4,,10
443 .p2align 3
444 .L32:
445 movq 40(%r13), %rax
446 cmpq 48(%r13), %rax
447 jnb .L165
448 leaq 1(%rax), %rdx
449 movq %rdx, 40(%r13)
450 movb $45, (%rax)
451 jmp .L51
452 .p2align 4,,10
453 .p2align 3
454 .L15:
455 fstp %st(0)
456 movl %esi, %ebx
457 andl $512, %ebx
458 jmp .L10
459 .p2align 4,,10
460 .p2align 3
461 .L150:
462 movmskpd %xmm1, %eax
463 andl $1, %eax
464 movl %eax, %ebx
465 jmp .L10
466 .p2align 4,,10
467 .p2align 3
468 .L53:
469 leaq 3(%r8), %r15
470 movq %r8, %rbx
471 .L61:
472 addq $1, %rbx
473 movq 40(%r13), %rax
474 cmpq 48(%r13), %rax
475 movzbl -1(%rbx), %esi
476 jnb .L166
477 leaq 1(%rax), %rdx
478 movq %rdx, 40(%r13)
479 movb %sil, (%rax)
480 .L60:
481 leal 0(%rbp,%rbx), %eax
482 subl %r8d, %eax
483 cmpq %r15, %rbx
484 movl %eax, %r9d
485 jne .L61
486 testb $32, 12(%r14)
487 je .L1
488 testl %r12d, %r12d
489 jle .L1
490 movslq %r12d, %rbx
491 movl $32, %esi
492 movq %r13, %rdi
493 movq %rbx, %rdx
494 movl %r9d, (%rsp)
495 call _IO_padn
496 movl (%rsp), %r9d
497 jmp .L63
498 .p2align 4,,10
499 .p2align 3
500 .L40:
501 andl $16, %edx
502 je .L39
503 movl 28(%rsp), %r9d
504 testl %r9d, %r9d
505 je .L47
506 movq 160(%r13), %rax
507 testq %rax, %rax
508 je .L48
509 movq 32(%rax), %rdx
510 cmpq 40(%rax), %rdx
511 jnb .L48
512 leaq 4(%rdx), %rsi
513 movq %rsi, 32(%rax)
514 movl $32, (%rdx)
515 jmp .L51
516 .p2align 4,,10
517 .p2align 3
518 .L54:
519 movq %r13, %rdi
520 call __woverflow
521 cmpl $-1, %eax
522 sete %al
523 jmp .L56
524 .p2align 4,,10
525 .p2align 3
526 .L93:
527 xorl %ebp, %ebp
528 jmp .L82
529 .p2align 4,,10
530 .p2align 3
531 .L28:
532 call _IO_padn
533 movq 32(%rsp), %r8
534 movq (%rsp), %r9
535 jmp .L29
536 .p2align 4,,10
537 .p2align 3
538 .L166:
539 movq %r13, %rdi
540 movq %r8, (%rsp)
541 call __overflow
542 cmpl $-1, %eax
543 movq (%rsp), %r8
544 jne .L60
545 .p2align 4,,10
546 .p2align 3
547 .L38:
548 movl $-1, %r9d
549 jmp .L1
550 .p2align 4,,10
551 .p2align 3
552 .L96:
553 movl %r12d, %ebp
554 leaq .LC0(%rip), %r15
555 leaq .LC1(%rip), %r8
556 jmp .L88
557 .p2align 4,,10
558 .p2align 3
559 .L72:
560 movq 40(%r13), %rdx
561 cmpq 48(%r13), %rdx
562 jnb .L167
563 leaq 1(%rdx), %rcx
564 movq %rcx, 40(%r13)
565 movb %al, (%rdx)
566 jmp .L77
567 .p2align 4,,10
568 .p2align 3
569 .L41:
570 movq 40(%r13), %rax
571 cmpq 48(%r13), %rax
572 jnb .L168
573 leaq 1(%rax), %rdx
574 movq %rdx, 40(%r13)
575 movb $43, (%rax)
576 jmp .L51
577 .p2align 4,,10
578 .p2align 3
579 .L171:
580 fstp %st(0)
581 .L14:
582 cmpl %ebp, 4(%r14)
583 movl %edx, %eax
584 leaq .LC2(%rip), %r15
585 cmovge 4(%r14), %ebp
586 leaq .LC3(%rip), %r8
587 andl $32, %eax
588 jmp .L80
589 .p2align 4,,10
590 .p2align 3
591 .L47:
592 movq 40(%r13), %rax
593 cmpq 48(%r13), %rax
594 jnb .L169
595 leaq 1(%rax), %rdx
596 movq %rdx, 40(%r13)
597 movb $32, (%rax)
598 jmp .L51
599 .p2align 4,,10
600 .p2align 3
601 .L163:
602 leaq 56(%rsp), %rdx
603 leaq 80(%rsp), %rsi
604 movq %r13, %rdi
605 movl $0, 84(%rsp)
606 call __printf_fp
607 testl %eax, %eax
608 movl %eax, %r9d
609 jle .L1
610 movl 28(%rsp), %esi
611 movsbl (%r12), %eax
612 testl %esi, %esi
613 je .L65
614 movq 160(%r13), %rdx
615 testq %rdx, %rdx
616 je .L66
617 movq 32(%rdx), %rsi
618 cmpq 40(%rdx), %rsi
619 jnb .L66
620 leaq 4(%rsi), %rdi
621 cmpl $-1, %eax
622 movq %rdi, 32(%rdx)
623 movl %eax, (%rsi)
624 sete %al
625 .L68:
626 testb %al, %al
627 jne .L38
628 movl 4(%r14), %eax
629 addl $1, %r9d
630 cmpl %r9d, %eax
631 jle .L1
632 movl 28(%rsp), %ecx
633 movl %eax, %edx
634 subl %r9d, %edx
635 movslq %edx, %rdx
636 testl %ecx, %ecx
637 je .L70
638 movl $32, %esi
639 movq %r13, %rdi
640 movl %r9d, (%rsp)
641 call _IO_wpadn@PLT
642 movl (%rsp), %r9d
643 movl %r9d, %edx
644 .L71:
645 movl 4(%r14), %r9d
646 movl %r9d, %ecx
647 subl %edx, %ecx
648 movslq %ecx, %rdx
649 cmpq %rax, %rdx
650 je .L1
651 jmp .L38
652 .p2align 4,,10
653 .p2align 3
654 .L33:
655 movq %r8, (%rsp)
656 movl $45, %esi
657 .L161:
658 movq %r13, %rdi
659 call __woverflow
660 movq (%rsp), %r8
661 cmpl $-1, %eax
662 sete %al
663 .L50:
664 testb %al, %al
665 je .L51
666 jmp .L38
667 .p2align 4,,10
668 .p2align 3
669 .L165:
670 movq %r8, (%rsp)
671 movl $45, %esi
672 .L160:
673 movq %r13, %rdi
674 call __overflow
675 cmpl $-1, %eax
676 movq (%rsp), %r8
677 sete %al
678 jmp .L50
679 .p2align 4,,10
680 .p2align 3
681 .L73:
682 movsbl %al, %esi
683 movq %r13, %rdi
684 movl %r9d, (%rsp)
685 call __woverflow
686 cmpl $-1, %eax
687 movl (%rsp), %r9d
688 sete %al
689 jmp .L75
690 .p2align 4,,10
691 .p2align 3
692 .L42:
693 movq %r8, (%rsp)
694 movl $43, %esi
695 jmp .L161
696 .p2align 4,,10
697 .p2align 3
698 .L65:
699 movq 40(%r13), %rdx
700 cmpq 48(%r13), %rdx
701 jnb .L170
702 leaq 1(%rdx), %rsi
703 addl $1, %r9d
704 movq %rsi, 40(%r13)
705 movb %al, (%rdx)
706 movl 4(%r14), %eax
707 cmpl %eax, %r9d
708 jge .L1
709 .L70:
710 subl %r9d, %eax
711 movl $32, %esi
712 movq %r13, %rdi
713 movslq %eax, %rdx
714 movl %r9d, (%rsp)
715 call _IO_padn
716 movl (%rsp), %r9d
717 movl %r9d, %edx
718 jmp .L71
719 .L167:
720 movzbl %al, %esi
721 movq %r13, %rdi
722 movl %r9d, (%rsp)
723 call __overflow
724 cmpl $-1, %eax
725 movl (%rsp), %r9d
726 sete %al
727 jmp .L75
728 .L168:
729 movq %r8, (%rsp)
730 movl $43, %esi
731 jmp .L160
732 .L48:
733 movq %r8, (%rsp)
734 movl $32, %esi
735 jmp .L161
736 .L169:
737 movq %r8, (%rsp)
738 movl $32, %esi
739 jmp .L160
740 .L66:
741 movsbl %al, %esi
742 movq %r13, %rdi
743 movl %r9d, (%rsp)
744 call __woverflow
745 cmpl $-1, %eax
746 movl (%rsp), %r9d
747 sete %al
748 jmp .L68
749 .L170:
750 movzbl %al, %esi
751 movq %r13, %rdi
752 movl %r9d, (%rsp)
753 call __overflow
754 cmpl $-1, %eax
755 movl (%rsp), %r9d
756 sete %al
757 jmp .L68
758 .L164:
759 movl %ebp, %r12d
760 xorl %ebp, %ebp
761 jmp .L82
762 .size __printf_size, .-__printf_size
763 .globl printf_size
764 .set printf_size,__printf_size
765 .p2align 4,,15
766 .globl printf_size_info
767 .type printf_size_info, @function
768 printf_size_info:
769 testq %rsi, %rsi
770 je .L175
771 movzbl 12(%rdi), %eax
772 sall $8, %eax
773 andl $256, %eax
774 orl $7, %eax
775 movl %eax, (%rdx)
776 .L175:
777 movl $1, %eax
779 .size printf_size_info, .-printf_size_info
780 .section .rodata
781 .align 16
782 .type units.13569, @object
783 .size units.13569, 20
784 units.13569:
785 .string " kmgtpezy"
786 .string " KMGTPEZY"
787 .section .rodata.cst16,"aM",@progbits,16
788 .align 16
789 .LC4:
790 .long 4294967295
791 .long 4294967295
792 .long 4294967295
793 .long 2147483647
794 .align 16
795 .LC5:
796 .long 4294967295
797 .long 4294967295
798 .long 4294967295
799 .long 2147418111
800 .align 16
801 .LC6:
802 .long 4294967295
803 .long 2147483647
804 .long 0
805 .long 0
806 .section .rodata.cst8,"aM",@progbits,8
807 .align 8
808 .LC7:
809 .long 4294967295
810 .long 2146435071
811 .hidden __overflow
812 .hidden __woverflow
813 .hidden _IO_padn
814 .hidden __printf_fp