mirror of
https://github.com/ii64/sonic.git
synced 2026-06-23 18:06:44 +08:00
fix: check prefix in native float parsing (#86)
This commit is contained in:
parent
fa5f5026d9
commit
365da9c1a8
8 changed files with 629 additions and 635 deletions
|
|
@ -283,7 +283,7 @@ LBB2_8:
|
||||||
LONG $0x4fdd6941; WORD $0x1293; BYTE $0x00 // imull $1217359, %r13d, %ebx
|
LONG $0x4fdd6941; WORD $0x1293; BYTE $0x00 // imull $1217359, %r13d, %ebx
|
||||||
MOVQ R13, AX
|
MOVQ R13, AX
|
||||||
SHLQ $4, AX
|
SHLQ $4, AX
|
||||||
LONG $0x9f0d8d48; WORD $0x0070; BYTE $0x00 // leaq $28831(%rip), %rcx /* _DOUBLE_POW5_INV_SPLIT(%rip) */
|
LONG $0x8b0d8d48; WORD $0x0070; BYTE $0x00 // leaq $28811(%rip), %rcx /* _DOUBLE_POW5_INV_SPLIT(%rip) */
|
||||||
MOVQ R8, DI
|
MOVQ R8, DI
|
||||||
ORQ $2, DI
|
ORQ $2, DI
|
||||||
MOVQ 0(AX)(CX*1), R10
|
MOVQ 0(AX)(CX*1), R10
|
||||||
|
|
@ -371,7 +371,7 @@ LBB2_15:
|
||||||
SHRL $19, DI
|
SHRL $19, DI
|
||||||
MOVLQSX AX, SI
|
MOVLQSX AX, SI
|
||||||
SHLQ $4, SI
|
SHLQ $4, SI
|
||||||
LONG $0xc70d8d4c; WORD $0x0084; BYTE $0x00 // leaq $33991(%rip), %r9 /* _DOUBLE_POW5_SPLIT(%rip) */
|
LONG $0xb30d8d4c; WORD $0x0084; BYTE $0x00 // leaq $33971(%rip), %r9 /* _DOUBLE_POW5_SPLIT(%rip) */
|
||||||
MOVQ R8, BX
|
MOVQ R8, BX
|
||||||
ORQ $2, BX
|
ORQ $2, BX
|
||||||
MOVQ 0(SI)(R9*1), R15
|
MOVQ 0(SI)(R9*1), R15
|
||||||
|
|
@ -774,7 +774,7 @@ LBB2_65:
|
||||||
LEAQ 1(R13), BX
|
LEAQ 1(R13), BX
|
||||||
MOVQ BX, SI
|
MOVQ BX, SI
|
||||||
MOVL R15, DX
|
MOVL R15, DX
|
||||||
LONG $0x0039dae8; BYTE $0x00 // callq _print_mantissa
|
LONG $0x0039a8e8; BYTE $0x00 // callq _print_mantissa
|
||||||
MOVB 1(R13), AX
|
MOVB 1(R13), AX
|
||||||
MOVB AX, 0(R13)
|
MOVB AX, 0(R13)
|
||||||
MOVL $1, CX
|
MOVL $1, CX
|
||||||
|
|
@ -803,7 +803,7 @@ LBB2_70:
|
||||||
LEAL 0(DX)(DX*1), CX
|
LEAL 0(DX)(DX*1), CX
|
||||||
LEAL 0(CX)(CX*4), CX
|
LEAL 0(CX)(CX*4), CX
|
||||||
SUBL CX, AX
|
SUBL CX, AX
|
||||||
LONG $0xbd0d8d48; WORD $0x0093; BYTE $0x00 // leaq $37821(%rip), %rcx /* _Digits(%rip) */
|
LONG $0xa90d8d48; WORD $0x0093; BYTE $0x00 // leaq $37801(%rip), %rcx /* _Digits(%rip) */
|
||||||
MOVWLZX 0(CX)(DX*2), CX
|
MOVWLZX 0(CX)(DX*2), CX
|
||||||
MOVL BX, DX
|
MOVL BX, DX
|
||||||
MOVW CX, 0(R13)(DX*1)
|
MOVW CX, 0(R13)(DX*1)
|
||||||
|
|
@ -827,7 +827,7 @@ LBB2_73:
|
||||||
MOVL BX, SI
|
MOVL BX, SI
|
||||||
ADDQ R13, SI
|
ADDQ R13, SI
|
||||||
MOVL R15, DX
|
MOVL R15, DX
|
||||||
LONG $0x003936e8; BYTE $0x00 // callq _print_mantissa
|
LONG $0x003904e8; BYTE $0x00 // callq _print_mantissa
|
||||||
TESTL R12, R12
|
TESTL R12, R12
|
||||||
JE LBB2_84
|
JE LBB2_84
|
||||||
LEAL 0(R12)(BX*1), AX
|
LEAL 0(R12)(BX*1), AX
|
||||||
|
|
@ -858,7 +858,7 @@ LBB2_78:
|
||||||
CMPL AX, $10
|
CMPL AX, $10
|
||||||
JL LBB2_86
|
JL LBB2_86
|
||||||
WORD $0x9848 // cltq
|
WORD $0x9848 // cltq
|
||||||
LONG $0x140d8d48; WORD $0x0093; BYTE $0x00 // leaq $37652(%rip), %rcx /* _Digits(%rip) */
|
LONG $0x000d8d48; WORD $0x0093; BYTE $0x00 // leaq $37632(%rip), %rcx /* _Digits(%rip) */
|
||||||
MOVWLZX 0(CX)(AX*2), AX
|
MOVWLZX 0(CX)(AX*2), AX
|
||||||
MOVL BX, CX
|
MOVL BX, CX
|
||||||
MOVW AX, 0(R13)(CX*1)
|
MOVW AX, 0(R13)(CX*1)
|
||||||
|
|
@ -1060,7 +1060,7 @@ LBB2_109:
|
||||||
ADDQ R13, SI
|
ADDQ R13, SI
|
||||||
MOVL R15, DX
|
MOVL R15, DX
|
||||||
WORD $0xf8c5; BYTE $0x77 // vzeroupper
|
WORD $0xf8c5; BYTE $0x77 // vzeroupper
|
||||||
LONG $0x0035bce8; BYTE $0x00 // callq _print_mantissa
|
LONG $0x00358ae8; BYTE $0x00 // callq _print_mantissa
|
||||||
ADDL BX, R15
|
ADDL BX, R15
|
||||||
MOVL R15, BX
|
MOVL R15, BX
|
||||||
|
|
||||||
|
|
@ -1142,7 +1142,7 @@ _u64toa:
|
||||||
ADDQ AX, AX
|
ADDQ AX, AX
|
||||||
CMPL SI, $1000
|
CMPL SI, $1000
|
||||||
JB LBB4_3
|
JB LBB4_3
|
||||||
LONG $0x370d8d48; WORD $0x008f; BYTE $0x00 // leaq $36663(%rip), %rcx /* _Digits(%rip) */
|
LONG $0x230d8d48; WORD $0x008f; BYTE $0x00 // leaq $36643(%rip), %rcx /* _Digits(%rip) */
|
||||||
MOVB 0(DX)(CX*1), CX
|
MOVB 0(DX)(CX*1), CX
|
||||||
MOVB CX, 0(DI)
|
MOVB CX, 0(DI)
|
||||||
MOVL $1, CX
|
MOVL $1, CX
|
||||||
|
|
@ -1156,14 +1156,14 @@ LBB4_3:
|
||||||
LBB4_4:
|
LBB4_4:
|
||||||
MOVWLZX DX, DX
|
MOVWLZX DX, DX
|
||||||
ORQ $1, DX
|
ORQ $1, DX
|
||||||
LONG $0x16358d48; WORD $0x008f; BYTE $0x00 // leaq $36630(%rip), %rsi /* _Digits(%rip) */
|
LONG $0x02358d48; WORD $0x008f; BYTE $0x00 // leaq $36610(%rip), %rsi /* _Digits(%rip) */
|
||||||
MOVB 0(DX)(SI*1), DX
|
MOVB 0(DX)(SI*1), DX
|
||||||
MOVL CX, SI
|
MOVL CX, SI
|
||||||
INCL CX
|
INCL CX
|
||||||
MOVB DX, 0(DI)(SI*1)
|
MOVB DX, 0(DI)(SI*1)
|
||||||
|
|
||||||
LBB4_6:
|
LBB4_6:
|
||||||
LONG $0x05158d48; WORD $0x008f; BYTE $0x00 // leaq $36613(%rip), %rdx /* _Digits(%rip) */
|
LONG $0xf1158d48; WORD $0x008e; BYTE $0x00 // leaq $36593(%rip), %rdx /* _Digits(%rip) */
|
||||||
MOVB 0(AX)(DX*1), DX
|
MOVB 0(AX)(DX*1), DX
|
||||||
MOVL CX, SI
|
MOVL CX, SI
|
||||||
INCL CX
|
INCL CX
|
||||||
|
|
@ -1172,7 +1172,7 @@ LBB4_6:
|
||||||
LBB4_7:
|
LBB4_7:
|
||||||
MOVWLZX AX, AX
|
MOVWLZX AX, AX
|
||||||
ORQ $1, AX
|
ORQ $1, AX
|
||||||
LONG $0xed158d48; WORD $0x008e; BYTE $0x00 // leaq $36589(%rip), %rdx /* _Digits(%rip) */
|
LONG $0xd9158d48; WORD $0x008e; BYTE $0x00 // leaq $36569(%rip), %rdx /* _Digits(%rip) */
|
||||||
MOVB 0(AX)(DX*1), AX
|
MOVB 0(AX)(DX*1), AX
|
||||||
MOVL CX, DX
|
MOVL CX, DX
|
||||||
INCL CX
|
INCL CX
|
||||||
|
|
@ -1219,7 +1219,7 @@ LBB4_8:
|
||||||
ADDQ R11, R11
|
ADDQ R11, R11
|
||||||
CMPL SI, $10000000
|
CMPL SI, $10000000
|
||||||
JB LBB4_11
|
JB LBB4_11
|
||||||
LONG $0x56058d48; WORD $0x008e; BYTE $0x00 // leaq $36438(%rip), %rax /* _Digits(%rip) */
|
LONG $0x42058d48; WORD $0x008e; BYTE $0x00 // leaq $36418(%rip), %rax /* _Digits(%rip) */
|
||||||
MOVB 0(R10)(AX*1), AX
|
MOVB 0(R10)(AX*1), AX
|
||||||
MOVB AX, 0(DI)
|
MOVB AX, 0(DI)
|
||||||
MOVL $1, CX
|
MOVL $1, CX
|
||||||
|
|
@ -1233,14 +1233,14 @@ LBB4_11:
|
||||||
LBB4_12:
|
LBB4_12:
|
||||||
MOVL R10, AX
|
MOVL R10, AX
|
||||||
ORQ $1, AX
|
ORQ $1, AX
|
||||||
LONG $0x31358d48; WORD $0x008e; BYTE $0x00 // leaq $36401(%rip), %rsi /* _Digits(%rip) */
|
LONG $0x1d358d48; WORD $0x008e; BYTE $0x00 // leaq $36381(%rip), %rsi /* _Digits(%rip) */
|
||||||
MOVB 0(AX)(SI*1), AX
|
MOVB 0(AX)(SI*1), AX
|
||||||
MOVL CX, SI
|
MOVL CX, SI
|
||||||
INCL CX
|
INCL CX
|
||||||
MOVB AX, 0(DI)(SI*1)
|
MOVB AX, 0(DI)(SI*1)
|
||||||
|
|
||||||
LBB4_14:
|
LBB4_14:
|
||||||
LONG $0x20058d48; WORD $0x008e; BYTE $0x00 // leaq $36384(%rip), %rax /* _Digits(%rip) */
|
LONG $0x0c058d48; WORD $0x008e; BYTE $0x00 // leaq $36364(%rip), %rax /* _Digits(%rip) */
|
||||||
MOVB 0(R9)(AX*1), AX
|
MOVB 0(R9)(AX*1), AX
|
||||||
MOVL CX, SI
|
MOVL CX, SI
|
||||||
INCL CX
|
INCL CX
|
||||||
|
|
@ -1249,7 +1249,7 @@ LBB4_14:
|
||||||
LBB4_15:
|
LBB4_15:
|
||||||
MOVWLZX R9, AX
|
MOVWLZX R9, AX
|
||||||
ORQ $1, AX
|
ORQ $1, AX
|
||||||
LONG $0x06358d48; WORD $0x008e; BYTE $0x00 // leaq $36358(%rip), %rsi /* _Digits(%rip) */
|
LONG $0xf2358d48; WORD $0x008d; BYTE $0x00 // leaq $36338(%rip), %rsi /* _Digits(%rip) */
|
||||||
MOVB 0(AX)(SI*1), AX
|
MOVB 0(AX)(SI*1), AX
|
||||||
MOVL CX, DX
|
MOVL CX, DX
|
||||||
MOVB AX, 0(DI)(DX*1)
|
MOVB AX, 0(DI)(DX*1)
|
||||||
|
|
@ -1331,7 +1331,7 @@ LBB4_16:
|
||||||
MOVL $16, CX
|
MOVL $16, CX
|
||||||
SUBL AX, CX
|
SUBL AX, CX
|
||||||
SHLQ $4, AX
|
SHLQ $4, AX
|
||||||
LONG $0x7b158d48; WORD $0x008d; BYTE $0x00 // leaq $36219(%rip), %rdx /* _VecShiftShuffles(%rip) */
|
LONG $0x67158d48; WORD $0x008d; BYTE $0x00 // leaq $36199(%rip), %rdx /* _VecShiftShuffles(%rip) */
|
||||||
LONG $0x0071e2c4; WORD $0x1004 // vpshufb (%rax,%rdx), %xmm1, %xmm0
|
LONG $0x0071e2c4; WORD $0x1004 // vpshufb (%rax,%rdx), %xmm1, %xmm0
|
||||||
LONG $0x077ffac5 // vmovdqu %xmm0, (%rdi)
|
LONG $0x077ffac5 // vmovdqu %xmm0, (%rdi)
|
||||||
MOVL CX, AX
|
MOVL CX, AX
|
||||||
|
|
@ -1357,7 +1357,7 @@ LBB4_20:
|
||||||
CMPL DX, $99
|
CMPL DX, $99
|
||||||
JA LBB4_22
|
JA LBB4_22
|
||||||
MOVL DX, AX
|
MOVL DX, AX
|
||||||
LONG $0x5e0d8d48; WORD $0x008c; BYTE $0x00 // leaq $35934(%rip), %rcx /* _Digits(%rip) */
|
LONG $0x4a0d8d48; WORD $0x008c; BYTE $0x00 // leaq $35914(%rip), %rcx /* _Digits(%rip) */
|
||||||
MOVB 0(CX)(AX*2), DX
|
MOVB 0(CX)(AX*2), DX
|
||||||
MOVB 1(CX)(AX*2), AX
|
MOVB 1(CX)(AX*2), AX
|
||||||
MOVB DX, 0(DI)
|
MOVB DX, 0(DI)
|
||||||
|
|
@ -1382,7 +1382,7 @@ LBB4_22:
|
||||||
WORD $0xc96b; BYTE $0x64 // imull $100, %ecx, %ecx
|
WORD $0xc96b; BYTE $0x64 // imull $100, %ecx, %ecx
|
||||||
SUBL CX, AX
|
SUBL CX, AX
|
||||||
MOVWLZX AX, AX
|
MOVWLZX AX, AX
|
||||||
LONG $0x0d0d8d48; WORD $0x008c; BYTE $0x00 // leaq $35853(%rip), %rcx /* _Digits(%rip) */
|
LONG $0xf90d8d48; WORD $0x008b; BYTE $0x00 // leaq $35833(%rip), %rcx /* _Digits(%rip) */
|
||||||
MOVB 0(CX)(AX*2), DX
|
MOVB 0(CX)(AX*2), DX
|
||||||
MOVB 1(CX)(AX*2), AX
|
MOVB 1(CX)(AX*2), AX
|
||||||
MOVB DX, 1(DI)
|
MOVB DX, 1(DI)
|
||||||
|
|
@ -1394,7 +1394,7 @@ LBB4_24:
|
||||||
WORD $0xc86b; BYTE $0x64 // imull $100, %eax, %ecx
|
WORD $0xc86b; BYTE $0x64 // imull $100, %eax, %ecx
|
||||||
SUBL CX, DX
|
SUBL CX, DX
|
||||||
MOVWLZX AX, AX
|
MOVWLZX AX, AX
|
||||||
LONG $0xea058d4c; WORD $0x008b; BYTE $0x00 // leaq $35818(%rip), %r8 /* _Digits(%rip) */
|
LONG $0xd6058d4c; WORD $0x008b; BYTE $0x00 // leaq $35798(%rip), %r8 /* _Digits(%rip) */
|
||||||
MOVB 0(R8)(AX*2), CX
|
MOVB 0(R8)(AX*2), CX
|
||||||
MOVB 1(R8)(AX*2), AX
|
MOVB 1(R8)(AX*2), AX
|
||||||
MOVB CX, 0(DI)
|
MOVB CX, 0(DI)
|
||||||
|
|
@ -1480,8 +1480,8 @@ _quote:
|
||||||
MOVQ CX, R10
|
MOVQ CX, R10
|
||||||
MOVQ DX, CX
|
MOVQ DX, CX
|
||||||
TESTB $1, R8
|
TESTB $1, R8
|
||||||
LONG $0xe9058d48; WORD $0x008b; BYTE $0x00 // leaq $35817(%rip), %rax /* __SingleQuoteTab(%rip) */
|
LONG $0xd5058d48; WORD $0x008b; BYTE $0x00 // leaq $35797(%rip), %rax /* __SingleQuoteTab(%rip) */
|
||||||
LONG $0xe2158d48; WORD $0x009b; BYTE $0x00 // leaq $39906(%rip), %rdx /* __DoubleQuoteTab(%rip) */
|
LONG $0xce158d48; WORD $0x009b; BYTE $0x00 // leaq $39886(%rip), %rdx /* __DoubleQuoteTab(%rip) */
|
||||||
LONG $0xd0440f48 // cmoveq %rax, %rdx
|
LONG $0xd0440f48 // cmoveq %rax, %rdx
|
||||||
MOVQ CX, R8
|
MOVQ CX, R8
|
||||||
MOVQ DI, AX
|
MOVQ DI, AX
|
||||||
|
|
@ -1589,7 +1589,7 @@ LBB5_14:
|
||||||
TESTQ R10, R10
|
TESTQ R10, R10
|
||||||
MOVQ -48(BP), CX
|
MOVQ -48(BP), CX
|
||||||
MOVQ -56(BP), DI
|
MOVQ -56(BP), DI
|
||||||
LONG $0x6e2d8d4c; WORD $0x008a; BYTE $0x00 // leaq $35438(%rip), %r13 /* __SingleQuoteTab(%rip) */
|
LONG $0x5a2d8d4c; WORD $0x008a; BYTE $0x00 // leaq $35418(%rip), %r13 /* __SingleQuoteTab(%rip) */
|
||||||
JLE LBB5_29
|
JLE LBB5_29
|
||||||
|
|
||||||
LBB5_16:
|
LBB5_16:
|
||||||
|
|
@ -1851,7 +1851,7 @@ _unquote:
|
||||||
MOVQ R8, -56(BP)
|
MOVQ R8, -56(BP)
|
||||||
MOVL R8, R10
|
MOVL R8, R10
|
||||||
ANDL $1, R10
|
ANDL $1, R10
|
||||||
LONG $0xdb058d4c; WORD $0x00a7; BYTE $0x00 // leaq $42971(%rip), %r8 /* __UnquoteTab(%rip) */
|
LONG $0xc7058d4c; WORD $0x00a7; BYTE $0x00 // leaq $42951(%rip), %r8 /* __UnquoteTab(%rip) */
|
||||||
QUAD $0xffffffb5056ffac5 // vmovdqu $-75(%rip), %xmm0 /* LCPI6_0(%rip) */
|
QUAD $0xffffffb5056ffac5 // vmovdqu $-75(%rip), %xmm0 /* LCPI6_0(%rip) */
|
||||||
MOVQ DI, R9
|
MOVQ DI, R9
|
||||||
MOVQ SI, R14
|
MOVQ SI, R14
|
||||||
|
|
@ -2367,64 +2367,61 @@ _atof_eisel_lemire64:
|
||||||
WORD $0x5441 // pushq %r12
|
WORD $0x5441 // pushq %r12
|
||||||
BYTE $0x53 // pushq %rbx
|
BYTE $0x53 // pushq %rbx
|
||||||
BYTE $0x50 // pushq %rax
|
BYTE $0x50 // pushq %rax
|
||||||
MOVL SI, R13
|
MOVL SI, R12
|
||||||
LEAL 348(R13), R14
|
LEAL 348(R12), BX
|
||||||
XORL R12, R12
|
CMPL BX, $695
|
||||||
CMPL R14, $695
|
JA LBB7_1
|
||||||
JA LBB7_10
|
MOVQ CX, R14
|
||||||
MOVL DX, R15
|
MOVL DX, R15
|
||||||
MOVQ DI, BX
|
MOVQ DI, R13
|
||||||
MOVQ CX, -48(BP)
|
LONG $0x002743e8; BYTE $0x00 // callq _count_len_u64
|
||||||
LONG $0x002771e8; BYTE $0x00 // callq _count_len_u64
|
|
||||||
MOVL AX, R8
|
MOVL AX, R8
|
||||||
MOVL AX, CX
|
MOVL AX, CX
|
||||||
NEGL CX
|
NEGL CX
|
||||||
SHLQ CX, BX
|
SHLQ CX, R13
|
||||||
MOVL R14, CX
|
MOVL BX, CX
|
||||||
SHLQ $4, CX
|
SHLQ $4, CX
|
||||||
LONG $0x970d8d4c; WORD $0x002a; BYTE $0x00 // leaq $10903(%rip), %r9 /* _POW10_M128_TAB(%rip) */
|
LONG $0x88158d4c; WORD $0x002a; BYTE $0x00 // leaq $10888(%rip), %r10 /* _POW10_M128_TAB(%rip) */
|
||||||
MOVQ BX, AX
|
MOVQ R13, AX
|
||||||
MULQ 8(CX)(R9*1)
|
MULQ 8(CX)(R10*1)
|
||||||
MOVQ AX, R10
|
MOVQ AX, R9
|
||||||
MOVQ DX, DI
|
MOVQ DX, DI
|
||||||
ANDL $511, DX
|
ANDL $511, DX
|
||||||
MOVQ BX, CX
|
MOVQ R13, SI
|
||||||
NOTQ CX
|
NOTQ SI
|
||||||
CMPQ AX, CX
|
CMPQ AX, SI
|
||||||
JBE LBB7_6
|
JBE LBB7_8
|
||||||
CMPL DX, $511
|
CMPL DX, $511
|
||||||
JNE LBB7_6
|
JNE LBB7_8
|
||||||
MOVLQSX R13, SI
|
MOVQ R13, AX
|
||||||
SHLQ $4, SI
|
MULQ 0(CX)(R10*1)
|
||||||
MOVQ BX, AX
|
ADDQ DX, R9
|
||||||
MULQ 5552(SI)(R9*1)
|
|
||||||
ADDQ DX, R10
|
|
||||||
ADCQ $0, DI
|
ADCQ $0, DI
|
||||||
MOVL DI, DX
|
MOVL DI, DX
|
||||||
ANDL $511, DX
|
ANDL $511, DX
|
||||||
CMPQ AX, CX
|
CMPQ AX, SI
|
||||||
JBE LBB7_6
|
JBE LBB7_8
|
||||||
CMPQ R10, $-1
|
CMPQ R9, $-1
|
||||||
JNE LBB7_6
|
JNE LBB7_8
|
||||||
CMPL DX, $511
|
CMPL DX, $511
|
||||||
JE LBB7_10
|
JE LBB7_1
|
||||||
|
|
||||||
LBB7_6:
|
LBB7_8:
|
||||||
MOVQ DI, AX
|
MOVQ DI, AX
|
||||||
SHRQ $63, AX
|
SHRQ $63, AX
|
||||||
LEAL 9(AX), CX
|
LEAL 9(AX), CX
|
||||||
SHRQ CX, DI
|
SHRQ CX, DI
|
||||||
ORQ R10, DX
|
ORQ R9, DX
|
||||||
JNE LBB7_8
|
JNE LBB7_11
|
||||||
MOVL DI, CX
|
MOVL DI, CX
|
||||||
ANDL $3, CX
|
ANDL $3, CX
|
||||||
CMPL CX, $1
|
CMPL CX, $1
|
||||||
JE LBB7_10
|
JE LBB7_1
|
||||||
|
|
||||||
LBB7_8:
|
LBB7_11:
|
||||||
MOVL $64, CX
|
MOVL $64, CX
|
||||||
SUBL R8, CX
|
SUBL R8, CX
|
||||||
LONG $0x6af56941; WORD $0x0352; BYTE $0x00 // imull $217706, %r13d, %esi
|
LONG $0x6af46941; WORD $0x0352; BYTE $0x00 // imull $217706, %r12d, %esi
|
||||||
SARL $16, SI
|
SARL $16, SI
|
||||||
MOVLQSX CX, BX
|
MOVLQSX CX, BX
|
||||||
MOVL DI, DX
|
MOVL DI, DX
|
||||||
|
|
@ -2440,7 +2437,22 @@ LBB7_8:
|
||||||
SBBQ $-1, AX
|
SBBQ $-1, AX
|
||||||
LEAQ -1(AX), SI
|
LEAQ -1(AX), SI
|
||||||
CMPQ SI, $2045
|
CMPQ SI, $2045
|
||||||
JA LBB7_10
|
JBE LBB7_13
|
||||||
|
|
||||||
|
LBB7_1:
|
||||||
|
XORL AX, AX
|
||||||
|
|
||||||
|
LBB7_14:
|
||||||
|
ADDQ $8, SP
|
||||||
|
BYTE $0x5b // popq %rbx
|
||||||
|
WORD $0x5c41 // popq %r12
|
||||||
|
WORD $0x5d41 // popq %r13
|
||||||
|
WORD $0x5e41 // popq %r14
|
||||||
|
WORD $0x5f41 // popq %r15
|
||||||
|
BYTE $0x5d // popq %rbp
|
||||||
|
RET
|
||||||
|
|
||||||
|
LBB7_13:
|
||||||
CMPQ CX, $1
|
CMPQ CX, $1
|
||||||
MOVB $2, CX
|
MOVB $2, CX
|
||||||
SBBB $0, CX
|
SBBB $0, CX
|
||||||
|
|
@ -2453,20 +2465,9 @@ LBB7_8:
|
||||||
ORQ CX, AX
|
ORQ CX, AX
|
||||||
CMPL R15, $-1
|
CMPL R15, $-1
|
||||||
LONG $0xc1450f48 // cmovneq %rcx, %rax
|
LONG $0xc1450f48 // cmovneq %rcx, %rax
|
||||||
MOVQ -48(BP), CX
|
MOVQ AX, 0(R14)
|
||||||
MOVQ AX, 0(CX)
|
MOVB $1, AX
|
||||||
MOVL $1, R12
|
JMP LBB7_14
|
||||||
|
|
||||||
LBB7_10:
|
|
||||||
MOVL R12, AX
|
|
||||||
ADDQ $8, SP
|
|
||||||
BYTE $0x5b // popq %rbx
|
|
||||||
WORD $0x5c41 // popq %r12
|
|
||||||
WORD $0x5d41 // popq %r13
|
|
||||||
WORD $0x5e41 // popq %r14
|
|
||||||
WORD $0x5f41 // popq %r15
|
|
||||||
BYTE $0x5d // popq %rbp
|
|
||||||
RET
|
|
||||||
|
|
||||||
_decimal_to_f64:
|
_decimal_to_f64:
|
||||||
BYTE $0x55 // pushq %rbp
|
BYTE $0x55 // pushq %rbp
|
||||||
|
|
@ -2502,7 +2503,7 @@ LBB8_5:
|
||||||
MOVQ BX, -48(BP)
|
MOVQ BX, -48(BP)
|
||||||
JLE LBB8_12
|
JLE LBB8_12
|
||||||
XORL R12, R12
|
XORL R12, R12
|
||||||
LONG $0x92358d4c; WORD $0x0054; BYTE $0x00 // leaq $21650(%rip), %r14 /* _POW_TAB(%rip) */
|
LONG $0x9d358d4c; WORD $0x0054; BYTE $0x00 // leaq $21661(%rip), %r14 /* _POW_TAB(%rip) */
|
||||||
JMP LBB8_8
|
JMP LBB8_8
|
||||||
|
|
||||||
LBB8_10:
|
LBB8_10:
|
||||||
|
|
@ -2514,7 +2515,7 @@ LBB8_10:
|
||||||
LBB8_11:
|
LBB8_11:
|
||||||
MOVQ R15, DI
|
MOVQ R15, DI
|
||||||
MOVL BX, SI
|
MOVL BX, SI
|
||||||
LONG $0x00278ce8; BYTE $0x00 // callq _right_shift
|
LONG $0x00275ce8; BYTE $0x00 // callq _right_shift
|
||||||
|
|
||||||
LBB8_7:
|
LBB8_7:
|
||||||
ADDL BX, R12
|
ADDL BX, R12
|
||||||
|
|
@ -2531,7 +2532,7 @@ LBB8_8:
|
||||||
JMP LBB8_7
|
JMP LBB8_7
|
||||||
|
|
||||||
LBB8_12:
|
LBB8_12:
|
||||||
LONG $0x4b358d4c; WORD $0x0054; BYTE $0x00 // leaq $21579(%rip), %r14 /* _POW_TAB(%rip) */
|
LONG $0x56358d4c; WORD $0x0054; BYTE $0x00 // leaq $21590(%rip), %r14 /* _POW_TAB(%rip) */
|
||||||
JMP LBB8_14
|
JMP LBB8_14
|
||||||
|
|
||||||
LBB8_18:
|
LBB8_18:
|
||||||
|
|
@ -2542,7 +2543,7 @@ LBB8_18:
|
||||||
LBB8_20:
|
LBB8_20:
|
||||||
MOVQ R15, DI
|
MOVQ R15, DI
|
||||||
MOVL BX, SI
|
MOVL BX, SI
|
||||||
LONG $0x0025c2e8; BYTE $0x00 // callq _left_shift
|
LONG $0x0025afe8; BYTE $0x00 // callq _left_shift
|
||||||
MOVL 804(R15), AX
|
MOVL 804(R15), AX
|
||||||
|
|
||||||
LBB8_13:
|
LBB8_13:
|
||||||
|
|
@ -2582,7 +2583,7 @@ LBB8_21:
|
||||||
LBB8_25:
|
LBB8_25:
|
||||||
MOVQ R15, DI
|
MOVQ R15, DI
|
||||||
MOVL $60, SI
|
MOVL $60, SI
|
||||||
LONG $0x0026dee8; BYTE $0x00 // callq _right_shift
|
LONG $0x0026aee8; BYTE $0x00 // callq _right_shift
|
||||||
ADDL $60, R12
|
ADDL $60, R12
|
||||||
CMPL R12, $-120
|
CMPL R12, $-120
|
||||||
JL LBB8_25
|
JL LBB8_25
|
||||||
|
|
@ -2608,7 +2609,7 @@ LBB8_31:
|
||||||
NEGL R12
|
NEGL R12
|
||||||
MOVQ R15, DI
|
MOVQ R15, DI
|
||||||
MOVL R12, SI
|
MOVL R12, SI
|
||||||
LONG $0x002698e8; BYTE $0x00 // callq _right_shift
|
LONG $0x002668e8; BYTE $0x00 // callq _right_shift
|
||||||
MOVL $-1022, R14
|
MOVL $-1022, R14
|
||||||
|
|
||||||
LBB8_32:
|
LBB8_32:
|
||||||
|
|
@ -2616,7 +2617,7 @@ LBB8_32:
|
||||||
JE LBB8_34
|
JE LBB8_34
|
||||||
MOVQ R15, DI
|
MOVQ R15, DI
|
||||||
MOVL $53, SI
|
MOVL $53, SI
|
||||||
LONG $0x0024f7e8; BYTE $0x00 // callq _left_shift
|
LONG $0x0024e4e8; BYTE $0x00 // callq _left_shift
|
||||||
|
|
||||||
LBB8_34:
|
LBB8_34:
|
||||||
MOVL 804(R15), AX
|
MOVL 804(R15), AX
|
||||||
|
|
@ -2794,19 +2795,15 @@ _atof_native_decimal:
|
||||||
LONG $0x4511fcc5; BYTE $0xb8 // vmovups %ymm0, $-72(%rbp)
|
LONG $0x4511fcc5; BYTE $0xb8 // vmovups %ymm0, $-72(%rbp)
|
||||||
LONG $0xc057f8c5 // vxorps %xmm0, %xmm0, %xmm0
|
LONG $0xc057f8c5 // vxorps %xmm0, %xmm0, %xmm0
|
||||||
LONG $0x4511f8c5; BYTE $0xd8 // vmovups %xmm0, $-40(%rbp)
|
LONG $0x4511f8c5; BYTE $0xd8 // vmovups %xmm0, $-40(%rbp)
|
||||||
MOVB 0(DI), CX
|
XORL AX, AX
|
||||||
MOVL $1, AX
|
CMPB 0(DI), $45
|
||||||
CMPB CX, $43
|
JNE LBB9_2
|
||||||
JE LBB9_4
|
|
||||||
CMPB CX, $45
|
|
||||||
JNE LBB9_3
|
|
||||||
MOVL $1, -32(BP)
|
MOVL $1, -32(BP)
|
||||||
|
MOVL $1, AX
|
||||||
|
|
||||||
LBB9_4:
|
LBB9_2:
|
||||||
CMPL AX, SI
|
CMPL AX, SI
|
||||||
JGE LBB9_5
|
JGE LBB9_3
|
||||||
|
|
||||||
LBB9_6:
|
|
||||||
MOVL SI, R10
|
MOVL SI, R10
|
||||||
MOVL AX, AX
|
MOVL AX, AX
|
||||||
MOVLQSX SI, R11
|
MOVLQSX SI, R11
|
||||||
|
|
@ -2814,9 +2811,9 @@ LBB9_6:
|
||||||
XORL R9, R9
|
XORL R9, R9
|
||||||
XORL R14, R14
|
XORL R14, R14
|
||||||
XORL R8, R8
|
XORL R8, R8
|
||||||
JMP LBB9_7
|
JMP LBB9_5
|
||||||
|
|
||||||
LBB9_13:
|
LBB9_11:
|
||||||
MOVLQSX R14, CX
|
MOVLQSX R14, CX
|
||||||
MOVB BX, -840(BP)(CX*1)
|
MOVB BX, -840(BP)(CX*1)
|
||||||
MOVL -40(BP), R9
|
MOVL -40(BP), R9
|
||||||
|
|
@ -2824,129 +2821,124 @@ LBB9_13:
|
||||||
MOVL R9, -40(BP)
|
MOVL R9, -40(BP)
|
||||||
MOVL R9, R14
|
MOVL R9, R14
|
||||||
|
|
||||||
LBB9_17:
|
LBB9_15:
|
||||||
INCQ AX
|
INCQ AX
|
||||||
CMPQ AX, R11
|
CMPQ AX, R11
|
||||||
SETLT CX
|
SETLT CX
|
||||||
CMPQ R10, AX
|
CMPQ R10, AX
|
||||||
JE LBB9_18
|
JE LBB9_16
|
||||||
|
|
||||||
LBB9_7:
|
LBB9_5:
|
||||||
MOVBLZX 0(DI)(AX*1), BX
|
MOVBLZX 0(DI)(AX*1), BX
|
||||||
LEAL -48(BX), DX
|
LEAL -48(BX), DX
|
||||||
CMPB DX, $9
|
CMPB DX, $9
|
||||||
JA LBB9_15
|
JA LBB9_13
|
||||||
CMPB BX, $48
|
CMPB BX, $48
|
||||||
JNE LBB9_12
|
JNE LBB9_10
|
||||||
TESTL R14, R14
|
TESTL R14, R14
|
||||||
JE LBB9_10
|
JE LBB9_8
|
||||||
CMPL R14, $800
|
CMPL R14, $800
|
||||||
JL LBB9_13
|
JL LBB9_11
|
||||||
JMP LBB9_17
|
JMP LBB9_15
|
||||||
|
|
||||||
LBB9_15:
|
LBB9_13:
|
||||||
CMPB BX, $46
|
CMPB BX, $46
|
||||||
JNE LBB9_19
|
JNE LBB9_17
|
||||||
MOVL R14, -36(BP)
|
MOVL R14, -36(BP)
|
||||||
MOVL $1, R8
|
MOVL $1, R8
|
||||||
JMP LBB9_17
|
JMP LBB9_15
|
||||||
|
|
||||||
LBB9_12:
|
|
||||||
CMPL R14, $799
|
|
||||||
JLE LBB9_13
|
|
||||||
MOVL $1, -28(BP)
|
|
||||||
JMP LBB9_17
|
|
||||||
|
|
||||||
LBB9_10:
|
LBB9_10:
|
||||||
|
CMPL R14, $799
|
||||||
|
JLE LBB9_11
|
||||||
|
MOVL $1, -28(BP)
|
||||||
|
JMP LBB9_15
|
||||||
|
|
||||||
|
LBB9_8:
|
||||||
DECL -36(BP)
|
DECL -36(BP)
|
||||||
XORL R14, R14
|
XORL R14, R14
|
||||||
JMP LBB9_17
|
JMP LBB9_15
|
||||||
|
|
||||||
LBB9_3:
|
LBB9_3:
|
||||||
XORL AX, AX
|
|
||||||
CMPL AX, SI
|
|
||||||
JL LBB9_6
|
|
||||||
|
|
||||||
LBB9_5:
|
|
||||||
MOVL $0, -36(BP)
|
MOVL $0, -36(BP)
|
||||||
JMP LBB9_35
|
JMP LBB9_33
|
||||||
|
|
||||||
LBB9_18:
|
LBB9_16:
|
||||||
MOVL R10, AX
|
MOVL R10, AX
|
||||||
|
|
||||||
LBB9_19:
|
LBB9_17:
|
||||||
TESTL R8, R8
|
TESTL R8, R8
|
||||||
JE LBB9_20
|
JE LBB9_18
|
||||||
TESTB $1, CX
|
TESTB $1, CX
|
||||||
JNE LBB9_22
|
JNE LBB9_20
|
||||||
JMP LBB9_35
|
JMP LBB9_33
|
||||||
|
|
||||||
LBB9_20:
|
LBB9_18:
|
||||||
MOVL R9, -36(BP)
|
MOVL R9, -36(BP)
|
||||||
TESTB $1, CX
|
TESTB $1, CX
|
||||||
JE LBB9_35
|
JE LBB9_33
|
||||||
|
|
||||||
LBB9_22:
|
LBB9_20:
|
||||||
MOVL AX, DX
|
MOVL AX, DX
|
||||||
MOVB 0(DI)(DX*1), CX
|
MOVB 0(DI)(DX*1), CX
|
||||||
ORB $32, CX
|
ORB $32, CX
|
||||||
CMPB CX, $101
|
CMPB CX, $101
|
||||||
JNE LBB9_35
|
JNE LBB9_33
|
||||||
MOVB 1(DI)(DX*1), BX
|
MOVB 1(DI)(DX*1), BX
|
||||||
CMPB BX, $45
|
CMPB BX, $45
|
||||||
JE LBB9_27
|
JE LBB9_25
|
||||||
MOVL $1, R8
|
MOVL $1, R8
|
||||||
CMPB BX, $43
|
CMPB BX, $43
|
||||||
JNE LBB9_25
|
JNE LBB9_23
|
||||||
ADDL $2, AX
|
ADDL $2, AX
|
||||||
JMP LBB9_28
|
JMP LBB9_26
|
||||||
|
|
||||||
LBB9_27:
|
LBB9_25:
|
||||||
ADDL $2, AX
|
ADDL $2, AX
|
||||||
MOVL $-1, R8
|
MOVL $-1, R8
|
||||||
|
|
||||||
LBB9_28:
|
LBB9_26:
|
||||||
MOVL AX, DX
|
MOVL AX, DX
|
||||||
XORL AX, AX
|
XORL AX, AX
|
||||||
CMPL DX, SI
|
CMPL DX, SI
|
||||||
JL LBB9_30
|
JL LBB9_28
|
||||||
JMP LBB9_34
|
JMP LBB9_32
|
||||||
|
|
||||||
LBB9_25:
|
LBB9_23:
|
||||||
INCQ DX
|
INCQ DX
|
||||||
XORL AX, AX
|
XORL AX, AX
|
||||||
CMPL DX, SI
|
CMPL DX, SI
|
||||||
JGE LBB9_34
|
JGE LBB9_32
|
||||||
|
|
||||||
LBB9_30:
|
LBB9_28:
|
||||||
MOVLQSX DX, AX
|
MOVLQSX DX, AX
|
||||||
SUBL DX, SI
|
SUBL DX, SI
|
||||||
ADDQ AX, DI
|
ADDQ AX, DI
|
||||||
XORL DX, DX
|
XORL DX, DX
|
||||||
XORL AX, AX
|
XORL AX, AX
|
||||||
|
|
||||||
LBB9_31:
|
LBB9_29:
|
||||||
CMPL AX, $9999
|
CMPL AX, $9999
|
||||||
JG LBB9_34
|
JG LBB9_32
|
||||||
MOVBLZX 0(DI)(DX*1), BX
|
MOVBLZX 0(DI)(DX*1), BX
|
||||||
LEAL -48(BX), CX
|
LEAL -48(BX), CX
|
||||||
CMPB CX, $9
|
CMPB CX, $9
|
||||||
JA LBB9_34
|
JA LBB9_32
|
||||||
LEAL 0(AX)(AX*4), AX
|
LEAL 0(AX)(AX*4), AX
|
||||||
LEAL -48(BX)(AX*2), AX
|
LEAL -48(BX)(AX*2), AX
|
||||||
INCQ DX
|
INCQ DX
|
||||||
CMPL SI, DX
|
CMPL SI, DX
|
||||||
JNE LBB9_31
|
JNE LBB9_29
|
||||||
|
|
||||||
LBB9_34:
|
LBB9_32:
|
||||||
IMULL R8, AX
|
IMULL R8, AX
|
||||||
ADDL AX, -36(BP)
|
ADDL AX, -36(BP)
|
||||||
|
|
||||||
LBB9_35:
|
LBB9_33:
|
||||||
LEAQ -840(BP), DI
|
LEAQ -840(BP), DI
|
||||||
LEAQ -24(BP), SI
|
LEAQ -24(BP), SI
|
||||||
WORD $0xf8c5; BYTE $0x77 // vzeroupper
|
WORD $0xf8c5; BYTE $0x77 // vzeroupper
|
||||||
LONG $0xfffaa1e8; BYTE $0xff // callq _decimal_to_f64
|
LONG $0xfffab4e8; BYTE $0xff // callq _decimal_to_f64
|
||||||
LONG $0x4510fbc5; BYTE $0xe8 // vmovsd $-24(%rbp), %xmm0
|
LONG $0x4510fbc5; BYTE $0xe8 // vmovsd $-24(%rbp), %xmm0
|
||||||
ADDQ $832, SP
|
ADDQ $832, SP
|
||||||
BYTE $0x5b // popq %rbx
|
BYTE $0x5b // popq %rbx
|
||||||
|
|
@ -4117,7 +4109,7 @@ LBB13_66:
|
||||||
CMPL BX, $23
|
CMPL BX, $23
|
||||||
JL LBB13_75
|
JL LBB13_75
|
||||||
LEAL -22(BX), AX
|
LEAL -22(BX), AX
|
||||||
LONG $0xe60d8d48; WORD $0x014e; BYTE $0x00 // leaq $85734(%rip), %rcx /* _P10_TAB(%rip) */
|
LONG $0x040d8d48; WORD $0x014f; BYTE $0x00 // leaq $85764(%rip), %rcx /* _P10_TAB(%rip) */
|
||||||
LONG $0x0459fbc5; BYTE $0xc1 // vmulsd (%rcx,%rax,8), %xmm0, %xmm0
|
LONG $0x0459fbc5; BYTE $0xc1 // vmulsd (%rcx,%rax,8), %xmm0, %xmm0
|
||||||
MOVL $22, AX
|
MOVL $22, AX
|
||||||
JMP LBB13_76
|
JMP LBB13_76
|
||||||
|
|
@ -4136,7 +4128,7 @@ LBB13_72:
|
||||||
CMPL BX, $-22
|
CMPL BX, $-22
|
||||||
JB LBB13_79
|
JB LBB13_79
|
||||||
NEGL BX
|
NEGL BX
|
||||||
LONG $0xad058d48; WORD $0x014e; BYTE $0x00 // leaq $85677(%rip), %rax /* _P10_TAB(%rip) */
|
LONG $0xcb058d48; WORD $0x014e; BYTE $0x00 // leaq $85707(%rip), %rax /* _P10_TAB(%rip) */
|
||||||
LONG $0x045efbc5; BYTE $0xd8 // vdivsd (%rax,%rbx,8), %xmm0, %xmm0
|
LONG $0x045efbc5; BYTE $0xd8 // vdivsd (%rax,%rbx,8), %xmm0, %xmm0
|
||||||
LONG $0x4511fbc5; BYTE $0xc8 // vmovsd %xmm0, $-56(%rbp)
|
LONG $0x4511fbc5; BYTE $0xc8 // vmovsd %xmm0, $-56(%rbp)
|
||||||
JMP LBB13_85
|
JMP LBB13_85
|
||||||
|
|
@ -4157,7 +4149,7 @@ LBB13_76:
|
||||||
LONG $0xc82ef9c5 // vucomisd %xmm0, %xmm1
|
LONG $0xc82ef9c5 // vucomisd %xmm0, %xmm1
|
||||||
JA LBB13_79
|
JA LBB13_79
|
||||||
MOVL AX, AX
|
MOVL AX, AX
|
||||||
LONG $0x690d8d48; WORD $0x014e; BYTE $0x00 // leaq $85609(%rip), %rcx /* _P10_TAB(%rip) */
|
LONG $0x870d8d48; WORD $0x014e; BYTE $0x00 // leaq $85639(%rip), %rcx /* _P10_TAB(%rip) */
|
||||||
LONG $0x0459fbc5; BYTE $0xc1 // vmulsd (%rcx,%rax,8), %xmm0, %xmm0
|
LONG $0x0459fbc5; BYTE $0xc1 // vmulsd (%rcx,%rax,8), %xmm0, %xmm0
|
||||||
LONG $0x4511fbc5; BYTE $0xc8 // vmovsd %xmm0, $-56(%rbp)
|
LONG $0x4511fbc5; BYTE $0xc8 // vmovsd %xmm0, $-56(%rbp)
|
||||||
JMP LBB13_85
|
JMP LBB13_85
|
||||||
|
|
@ -4168,8 +4160,8 @@ LBB13_79:
|
||||||
MOVQ R12, DI
|
MOVQ R12, DI
|
||||||
MOVL BX, SI
|
MOVL BX, SI
|
||||||
MOVL -60(BP), DX
|
MOVL -60(BP), DX
|
||||||
LONG $0xffeb02e8; BYTE $0xff // callq _atof_eisel_lemire64
|
LONG $0xffeb34e8; BYTE $0xff // callq _atof_eisel_lemire64
|
||||||
TESTL AX, AX
|
TESTB AX, AX
|
||||||
JE LBB13_83
|
JE LBB13_83
|
||||||
CMPL -44(BP), $0
|
CMPL -44(BP), $0
|
||||||
JE LBB13_84
|
JE LBB13_84
|
||||||
|
|
@ -4178,8 +4170,8 @@ LBB13_79:
|
||||||
MOVQ R12, DI
|
MOVQ R12, DI
|
||||||
MOVL BX, SI
|
MOVL BX, SI
|
||||||
MOVL -60(BP), DX
|
MOVL -60(BP), DX
|
||||||
LONG $0xffeae4e8; BYTE $0xff // callq _atof_eisel_lemire64
|
LONG $0xffeb16e8; BYTE $0xff // callq _atof_eisel_lemire64
|
||||||
TESTL AX, AX
|
TESTB AX, AX
|
||||||
JE LBB13_83
|
JE LBB13_83
|
||||||
LONG $0x4d10fbc5; BYTE $0xb8 // vmovsd $-72(%rbp), %xmm1
|
LONG $0x4d10fbc5; BYTE $0xb8 // vmovsd $-72(%rbp), %xmm1
|
||||||
LONG $0x4510fbc5; BYTE $0xc8 // vmovsd $-56(%rbp), %xmm0
|
LONG $0x4510fbc5; BYTE $0xc8 // vmovsd $-56(%rbp), %xmm0
|
||||||
|
|
@ -4194,7 +4186,7 @@ LBB13_83:
|
||||||
ADDQ AX, DI
|
ADDQ AX, DI
|
||||||
MOVL 8(CX), SI
|
MOVL 8(CX), SI
|
||||||
SUBL AX, SI
|
SUBL AX, SI
|
||||||
LONG $0xffef40e8; BYTE $0xff // callq _atof_native_decimal
|
LONG $0xffef53e8; BYTE $0xff // callq _atof_native_decimal
|
||||||
JMP LBB13_85
|
JMP LBB13_85
|
||||||
|
|
||||||
LBB13_84:
|
LBB13_84:
|
||||||
|
|
@ -5687,7 +5679,7 @@ _print_mantissa:
|
||||||
LONG $0x64fa6b41 // imull $100, %r10d, %edi
|
LONG $0x64fa6b41 // imull $100, %r10d, %edi
|
||||||
SUBL DI, AX
|
SUBL DI, AX
|
||||||
MOVWLZX AX, R11
|
MOVWLZX AX, R11
|
||||||
LONG $0x9e3d8d48; WORD $0x0059; BYTE $0x00 // leaq $22942(%rip), %rdi /* _Digits(%rip) */
|
LONG $0xbc3d8d48; WORD $0x0059; BYTE $0x00 // leaq $22972(%rip), %rdi /* _Digits(%rip) */
|
||||||
MOVWLZX 0(DI)(R8*2), AX
|
MOVWLZX 0(DI)(R8*2), AX
|
||||||
MOVW AX, -2(R14)
|
MOVW AX, -2(R14)
|
||||||
MOVWLZX 0(DI)(R9*2), AX
|
MOVWLZX 0(DI)(R9*2), AX
|
||||||
|
|
@ -5703,7 +5695,7 @@ LBB24_2:
|
||||||
CMPL DI, $10000
|
CMPL DI, $10000
|
||||||
JB LBB24_3
|
JB LBB24_3
|
||||||
MOVL $3518437209, R8
|
MOVL $3518437209, R8
|
||||||
LONG $0x560d8d4c; WORD $0x0059; BYTE $0x00 // leaq $22870(%rip), %r9 /* _Digits(%rip) */
|
LONG $0x740d8d4c; WORD $0x0059; BYTE $0x00 // leaq $22900(%rip), %r9 /* _Digits(%rip) */
|
||||||
|
|
||||||
LBB24_5:
|
LBB24_5:
|
||||||
MOVL DI, AX
|
MOVL DI, AX
|
||||||
|
|
@ -5734,7 +5726,7 @@ LBB24_7:
|
||||||
WORD $0xd16b; BYTE $0x64 // imull $100, %ecx, %edx
|
WORD $0xd16b; BYTE $0x64 // imull $100, %ecx, %edx
|
||||||
SUBL DX, AX
|
SUBL DX, AX
|
||||||
MOVWLZX AX, AX
|
MOVWLZX AX, AX
|
||||||
LONG $0xef158d48; WORD $0x0058; BYTE $0x00 // leaq $22767(%rip), %rdx /* _Digits(%rip) */
|
LONG $0x0d158d48; WORD $0x0059; BYTE $0x00 // leaq $22797(%rip), %rdx /* _Digits(%rip) */
|
||||||
MOVWLZX 0(DX)(AX*2), AX
|
MOVWLZX 0(DX)(AX*2), AX
|
||||||
MOVW AX, -2(R14)
|
MOVW AX, -2(R14)
|
||||||
ADDQ $-2, R14
|
ADDQ $-2, R14
|
||||||
|
|
@ -5744,7 +5736,7 @@ LBB24_8:
|
||||||
CMPL AX, $10
|
CMPL AX, $10
|
||||||
JB LBB24_10
|
JB LBB24_10
|
||||||
MOVL AX, AX
|
MOVL AX, AX
|
||||||
LONG $0xd20d8d48; WORD $0x0058; BYTE $0x00 // leaq $22738(%rip), %rcx /* _Digits(%rip) */
|
LONG $0xf00d8d48; WORD $0x0058; BYTE $0x00 // leaq $22768(%rip), %rcx /* _Digits(%rip) */
|
||||||
MOVWLZX 0(CX)(AX*2), AX
|
MOVWLZX 0(CX)(AX*2), AX
|
||||||
MOVW AX, -2(R14)
|
MOVW AX, -2(R14)
|
||||||
BYTE $0x5b // popq %rbx
|
BYTE $0x5b // popq %rbx
|
||||||
|
|
@ -5801,7 +5793,7 @@ LBB25_4:
|
||||||
RET
|
RET
|
||||||
|
|
||||||
LBB25_6:
|
LBB25_6:
|
||||||
LONG $0xb70d8d48; WORD $0x007a; BYTE $0x00 // leaq $31415(%rip), %rcx /* _U8_LEN_TAB(%rip) */
|
LONG $0xd50d8d48; WORD $0x007a; BYTE $0x00 // leaq $31445(%rip), %rcx /* _U8_LEN_TAB(%rip) */
|
||||||
MOVBLZX 0(AX)(CX*1), AX
|
MOVBLZX 0(AX)(CX*1), AX
|
||||||
ADDL BX, AX
|
ADDL BX, AX
|
||||||
ADDQ $8, SP
|
ADDQ $8, SP
|
||||||
|
|
@ -5812,64 +5804,62 @@ LBB25_6:
|
||||||
_left_shift:
|
_left_shift:
|
||||||
BYTE $0x55 // pushq %rbp
|
BYTE $0x55 // pushq %rbp
|
||||||
WORD $0x8948; BYTE $0xe5 // movq %rsp, %rbp
|
WORD $0x8948; BYTE $0xe5 // movq %rsp, %rbp
|
||||||
|
WORD $0x5741 // pushq %r15
|
||||||
|
WORD $0x5641 // pushq %r14
|
||||||
BYTE $0x53 // pushq %rbx
|
BYTE $0x53 // pushq %rbx
|
||||||
MOVL SI, CX
|
MOVL SI, CX
|
||||||
IMUL3Q $804, CX, R10
|
IMUL3Q $804, CX, DX
|
||||||
LONG $0x951d8d4c; WORD $0x007b; BYTE $0x00 // leaq $31637(%rip), %r11 /* _LSHIFT_TAB(%rip) */
|
LONG $0xaf358d48; WORD $0x007b; BYTE $0x00 // leaq $31663(%rip), %rsi /* _LSHIFT_TAB(%rip) */
|
||||||
MOVL 0(R10)(R11*1), R8
|
MOVL 0(DX)(SI*1), R8
|
||||||
MOVLQSX 800(DI), R9
|
MOVLQSX 800(DI), R9
|
||||||
|
MOVB 4(DX)(SI*1), AX
|
||||||
TESTQ R9, R9
|
TESTQ R9, R9
|
||||||
JE LBB26_1
|
JE LBB26_6
|
||||||
LEAQ 4(R10)(R11*1), SI
|
LEAQ 5(DX)(SI*1), DX
|
||||||
XORL AX, AX
|
XORL SI, SI
|
||||||
|
|
||||||
LBB26_3:
|
LBB26_3:
|
||||||
MOVBLZX 0(SI)(AX*1), DX
|
TESTB AX, AX
|
||||||
CMPB 0(DI)(AX*1), DX
|
JE LBB26_8
|
||||||
JNE LBB26_8
|
CMPB 0(DI)(SI*1), AX
|
||||||
INCQ AX
|
JNE LBB26_5
|
||||||
CMPQ R9, AX
|
MOVBLZX 0(DX)(SI*1), AX
|
||||||
|
INCQ SI
|
||||||
|
CMPQ R9, SI
|
||||||
JNE LBB26_3
|
JNE LBB26_3
|
||||||
LEAL -1(R9), AX
|
|
||||||
CMPL AX, $798
|
|
||||||
JA LBB26_10
|
|
||||||
MOVL R9, AX
|
|
||||||
JMP LBB26_7
|
|
||||||
|
|
||||||
LBB26_1:
|
LBB26_6:
|
||||||
XORL AX, AX
|
TESTB AX, AX
|
||||||
|
JE LBB26_8
|
||||||
|
|
||||||
LBB26_7:
|
LBB26_7:
|
||||||
ADDQ R10, R11
|
|
||||||
MOVB 4(AX)(R11*1), AX
|
|
||||||
ADDB $-48, AX
|
|
||||||
CMPB AX, $10
|
|
||||||
JAE LBB26_10
|
|
||||||
|
|
||||||
LBB26_9:
|
|
||||||
DECL R8
|
DECL R8
|
||||||
|
|
||||||
LBB26_10:
|
LBB26_8:
|
||||||
TESTL R9, R9
|
TESTL R9, R9
|
||||||
JLE LBB26_23
|
JLE LBB26_22
|
||||||
LEAL -1(R9)(R8*1), R10
|
LEAL 0(R8)(R9*1), AX
|
||||||
|
MOVLQSX AX, BX
|
||||||
|
MOVQ BX, R10
|
||||||
|
SHLQ $32, R10
|
||||||
INCQ R9
|
INCQ R9
|
||||||
XORL DX, DX
|
XORL DX, DX
|
||||||
MOVQ $-3689348814741910323, R11
|
MOVQ $-3689348814741910323, R11
|
||||||
JMP LBB26_12
|
MOVQ $-4294967296, R14
|
||||||
|
JMP LBB26_10
|
||||||
|
|
||||||
LBB26_13:
|
LBB26_11:
|
||||||
ADDB $48, AX
|
ADDB $48, AX
|
||||||
MOVLQSX R10, BX
|
MOVB AX, -1(DI)(BX*1)
|
||||||
MOVB AX, 0(DI)(BX*1)
|
|
||||||
DECL R10
|
|
||||||
|
|
||||||
LBB26_19:
|
LBB26_18:
|
||||||
|
DECQ BX
|
||||||
|
ADDQ R14, R10
|
||||||
DECQ R9
|
DECQ R9
|
||||||
CMPQ R9, $1
|
CMPQ R9, $1
|
||||||
JLE LBB26_14
|
JLE LBB26_12
|
||||||
|
|
||||||
LBB26_12:
|
LBB26_10:
|
||||||
MOVBQSX -2(DI)(R9*1), SI
|
MOVBQSX -2(DI)(R9*1), SI
|
||||||
ADDQ $-48, SI
|
ADDQ $-48, SI
|
||||||
SHLQ CX, SI
|
SHLQ CX, SI
|
||||||
|
|
@ -5878,62 +5868,48 @@ LBB26_12:
|
||||||
MULQ R11
|
MULQ R11
|
||||||
SHRQ $3, DX
|
SHRQ $3, DX
|
||||||
LEAQ 0(DX)(DX*1), AX
|
LEAQ 0(DX)(DX*1), AX
|
||||||
LEAQ 0(AX)(AX*4), BX
|
LEAQ 0(AX)(AX*4), R15
|
||||||
MOVQ SI, AX
|
MOVQ SI, AX
|
||||||
SUBQ BX, AX
|
SUBQ R15, AX
|
||||||
CMPL R10, $799
|
CMPQ BX, $800
|
||||||
JLE LBB26_13
|
JLE LBB26_11
|
||||||
TESTQ AX, AX
|
TESTQ AX, AX
|
||||||
JE LBB26_19
|
JE LBB26_18
|
||||||
MOVL $1, 812(DI)
|
MOVL $1, 812(DI)
|
||||||
JMP LBB26_19
|
JMP LBB26_18
|
||||||
|
|
||||||
LBB26_14:
|
LBB26_12:
|
||||||
CMPQ SI, $10
|
CMPQ SI, $10
|
||||||
JAE LBB26_15
|
JAE LBB26_13
|
||||||
|
|
||||||
LBB26_23:
|
|
||||||
MOVL 800(DI), CX
|
|
||||||
ADDL R8, CX
|
|
||||||
CMPL CX, $801
|
|
||||||
MOVL $800, AX
|
|
||||||
WORD $0x4c0f; BYTE $0xc1 // cmovll %ecx, %eax
|
|
||||||
MOVL AX, 800(DI)
|
|
||||||
ADDL R8, 804(DI)
|
|
||||||
TESTL CX, CX
|
|
||||||
JLE LBB26_27
|
|
||||||
MOVL AX, CX
|
|
||||||
INCQ CX
|
|
||||||
|
|
||||||
LBB26_25:
|
|
||||||
DECL AX
|
|
||||||
CMPB 0(DI)(AX*1), $48
|
|
||||||
JNE LBB26_29
|
|
||||||
MOVL AX, 800(DI)
|
|
||||||
DECQ CX
|
|
||||||
CMPQ CX, $1
|
|
||||||
JG LBB26_25
|
|
||||||
|
|
||||||
LBB26_27:
|
|
||||||
TESTL AX, AX
|
|
||||||
JE LBB26_28
|
|
||||||
|
|
||||||
LBB26_29:
|
|
||||||
BYTE $0x5b // popq %rbx
|
|
||||||
BYTE $0x5d // popq %rbp
|
|
||||||
RET
|
|
||||||
|
|
||||||
LBB26_16:
|
|
||||||
ADDB $48, AX
|
|
||||||
MOVLQSX R10, SI
|
|
||||||
MOVB AX, 0(DI)(SI*1)
|
|
||||||
DECL R10
|
|
||||||
|
|
||||||
LBB26_22:
|
LBB26_22:
|
||||||
CMPQ CX, $9
|
MOVL 800(DI), AX
|
||||||
JBE LBB26_23
|
ADDL R8, AX
|
||||||
|
CMPL AX, $801
|
||||||
|
MOVL $800, CX
|
||||||
|
WORD $0x4c0f; BYTE $0xc8 // cmovll %eax, %ecx
|
||||||
|
MOVL CX, 800(DI)
|
||||||
|
ADDL R8, 804(DI)
|
||||||
|
BYTE $0x5b // popq %rbx
|
||||||
|
WORD $0x5e41 // popq %r14
|
||||||
|
WORD $0x5f41 // popq %r15
|
||||||
|
BYTE $0x5d // popq %rbp
|
||||||
|
JMP _trim
|
||||||
|
|
||||||
|
LBB26_13:
|
||||||
|
SARQ $32, R10
|
||||||
|
JMP LBB26_14
|
||||||
|
|
||||||
LBB26_15:
|
LBB26_15:
|
||||||
|
ADDB $48, AX
|
||||||
|
MOVB AX, -1(DI)(R10*1)
|
||||||
|
|
||||||
|
LBB26_21:
|
||||||
|
DECQ R10
|
||||||
|
CMPQ CX, $9
|
||||||
|
JBE LBB26_22
|
||||||
|
|
||||||
|
LBB26_14:
|
||||||
MOVQ DX, CX
|
MOVQ DX, CX
|
||||||
MOVQ DX, AX
|
MOVQ DX, AX
|
||||||
MULQ R11
|
MULQ R11
|
||||||
|
|
@ -5942,22 +5918,16 @@ LBB26_15:
|
||||||
LEAQ 0(AX)(AX*4), SI
|
LEAQ 0(AX)(AX*4), SI
|
||||||
MOVQ CX, AX
|
MOVQ CX, AX
|
||||||
SUBQ SI, AX
|
SUBQ SI, AX
|
||||||
CMPL R10, $799
|
CMPQ R10, $800
|
||||||
JLE LBB26_16
|
JLE LBB26_15
|
||||||
TESTQ AX, AX
|
TESTQ AX, AX
|
||||||
JE LBB26_22
|
JE LBB26_21
|
||||||
MOVL $1, 812(DI)
|
MOVL $1, 812(DI)
|
||||||
JMP LBB26_22
|
JMP LBB26_21
|
||||||
|
|
||||||
LBB26_8:
|
LBB26_5:
|
||||||
JLE LBB26_9
|
JL LBB26_7
|
||||||
JMP LBB26_10
|
JMP LBB26_8
|
||||||
|
|
||||||
LBB26_28:
|
|
||||||
MOVL $0, 804(DI)
|
|
||||||
BYTE $0x5b // popq %rbx
|
|
||||||
BYTE $0x5d // popq %rbp
|
|
||||||
RET
|
|
||||||
|
|
||||||
_right_shift:
|
_right_shift:
|
||||||
BYTE $0x55 // pushq %rbp
|
BYTE $0x55 // pushq %rbp
|
||||||
|
|
@ -6093,6 +6063,36 @@ LBB27_23:
|
||||||
BYTE $0x5d // popq %rbp
|
BYTE $0x5d // popq %rbp
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
_trim:
|
||||||
|
BYTE $0x55 // pushq %rbp
|
||||||
|
WORD $0x8948; BYTE $0xe5 // movq %rsp, %rbp
|
||||||
|
MOVL 800(DI), AX
|
||||||
|
TESTL AX, AX
|
||||||
|
JLE LBB28_4
|
||||||
|
LEAQ 1(AX), CX
|
||||||
|
|
||||||
|
LBB28_2:
|
||||||
|
DECL AX
|
||||||
|
CMPB 0(DI)(AX*1), $48
|
||||||
|
JNE LBB28_6
|
||||||
|
MOVL AX, 800(DI)
|
||||||
|
DECQ CX
|
||||||
|
CMPQ CX, $1
|
||||||
|
JG LBB28_2
|
||||||
|
|
||||||
|
LBB28_4:
|
||||||
|
TESTL AX, AX
|
||||||
|
JE LBB28_5
|
||||||
|
|
||||||
|
LBB28_6:
|
||||||
|
BYTE $0x5d // popq %rbp
|
||||||
|
RET
|
||||||
|
|
||||||
|
LBB28_5:
|
||||||
|
MOVL $0, 804(DI)
|
||||||
|
BYTE $0x5d // popq %rbp
|
||||||
|
RET
|
||||||
|
|
||||||
_POW10_M128_TAB:
|
_POW10_M128_TAB:
|
||||||
QUAD $0x1732c869cd60e453 // .quad 1671618768450675795
|
QUAD $0x1732c869cd60e453 // .quad 1671618768450675795
|
||||||
QUAD $0xfa8fd5a0081c0288 // .quad -391859759250406776
|
QUAD $0xfa8fd5a0081c0288 // .quad -391859759250406776
|
||||||
|
|
@ -12666,7 +12666,7 @@ TEXT ·__skip_array(SB), NOSPLIT, $0 - 32
|
||||||
MOVQ s+0(FP), DI
|
MOVQ s+0(FP), DI
|
||||||
MOVQ p+8(FP), SI
|
MOVQ p+8(FP), SI
|
||||||
MOVQ m+16(FP), DX
|
MOVQ m+16(FP), DX
|
||||||
CALL ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+15938(SB) // _skip_array
|
CALL ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+15888(SB) // _skip_array
|
||||||
MOVQ AX, ret+24(FP)
|
MOVQ AX, ret+24(FP)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
@ -12674,7 +12674,7 @@ TEXT ·__skip_object(SB), NOSPLIT, $0 - 32
|
||||||
MOVQ s+0(FP), DI
|
MOVQ s+0(FP), DI
|
||||||
MOVQ p+8(FP), SI
|
MOVQ p+8(FP), SI
|
||||||
MOVQ m+16(FP), DX
|
MOVQ m+16(FP), DX
|
||||||
CALL ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+15973(SB) // _skip_object
|
CALL ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+15923(SB) // _skip_object
|
||||||
MOVQ AX, ret+24(FP)
|
MOVQ AX, ret+24(FP)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
@ -12682,7 +12682,7 @@ TEXT ·__skip_one(SB), NOSPLIT, $0 - 32
|
||||||
MOVQ s+0(FP), DI
|
MOVQ s+0(FP), DI
|
||||||
MOVQ p+8(FP), SI
|
MOVQ p+8(FP), SI
|
||||||
MOVQ m+16(FP), DX
|
MOVQ m+16(FP), DX
|
||||||
CALL ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+13616(SB) // _skip_one
|
CALL ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+13566(SB) // _skip_one
|
||||||
MOVQ AX, ret+24(FP)
|
MOVQ AX, ret+24(FP)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
@ -12709,7 +12709,7 @@ TEXT ·__value(SB), NOSPLIT, $0 - 48
|
||||||
MOVQ p+16(FP), DX
|
MOVQ p+16(FP), DX
|
||||||
MOVQ v+24(FP), CX
|
MOVQ v+24(FP), CX
|
||||||
MOVQ allow_control+32(FP), R8
|
MOVQ allow_control+32(FP), R8
|
||||||
CALL ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+9329(SB) // _value
|
CALL ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+9279(SB) // _value
|
||||||
MOVQ AX, ret+40(FP)
|
MOVQ AX, ret+40(FP)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
@ -12717,26 +12717,26 @@ TEXT ·__vnumber(SB), NOSPLIT, $0 - 24
|
||||||
MOVQ s+0(FP), DI
|
MOVQ s+0(FP), DI
|
||||||
MOVQ p+8(FP), SI
|
MOVQ p+8(FP), SI
|
||||||
MOVQ v+16(FP), DX
|
MOVQ v+16(FP), DX
|
||||||
LEAQ ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+11904(SB), AX // _vnumber
|
LEAQ ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+11854(SB), AX // _vnumber
|
||||||
JMP AX
|
JMP AX
|
||||||
|
|
||||||
TEXT ·__vsigned(SB), NOSPLIT, $0 - 24
|
TEXT ·__vsigned(SB), NOSPLIT, $0 - 24
|
||||||
MOVQ s+0(FP), DI
|
MOVQ s+0(FP), DI
|
||||||
MOVQ p+8(FP), SI
|
MOVQ p+8(FP), SI
|
||||||
MOVQ v+16(FP), DX
|
MOVQ v+16(FP), DX
|
||||||
LEAQ ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+13066(SB), AX // _vsigned
|
LEAQ ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+13016(SB), AX // _vsigned
|
||||||
JMP AX
|
JMP AX
|
||||||
|
|
||||||
TEXT ·__vstring(SB), NOSPLIT, $0 - 24
|
TEXT ·__vstring(SB), NOSPLIT, $0 - 24
|
||||||
MOVQ s+0(FP), DI
|
MOVQ s+0(FP), DI
|
||||||
MOVQ p+8(FP), SI
|
MOVQ p+8(FP), SI
|
||||||
MOVQ v+16(FP), DX
|
MOVQ v+16(FP), DX
|
||||||
LEAQ ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+10935(SB), AX // _vstring
|
LEAQ ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+10885(SB), AX // _vstring
|
||||||
JMP AX
|
JMP AX
|
||||||
|
|
||||||
TEXT ·__vunsigned(SB), NOSPLIT, $0 - 24
|
TEXT ·__vunsigned(SB), NOSPLIT, $0 - 24
|
||||||
MOVQ s+0(FP), DI
|
MOVQ s+0(FP), DI
|
||||||
MOVQ p+8(FP), SI
|
MOVQ p+8(FP), SI
|
||||||
MOVQ v+16(FP), DX
|
MOVQ v+16(FP), DX
|
||||||
LEAQ ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+13343(SB), AX // _vunsigned
|
LEAQ ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+13293(SB), AX // _vunsigned
|
||||||
JMP AX
|
JMP AX
|
||||||
|
|
|
||||||
|
|
@ -19,16 +19,16 @@ var (
|
||||||
_subr__lspace = **(**uintptr)(unsafe.Pointer(&_func__base)) + 238
|
_subr__lspace = **(**uintptr)(unsafe.Pointer(&_func__base)) + 238
|
||||||
_subr__lzero = **(**uintptr)(unsafe.Pointer(&_func__base)) + 0
|
_subr__lzero = **(**uintptr)(unsafe.Pointer(&_func__base)) + 0
|
||||||
_subr__quote = **(**uintptr)(unsafe.Pointer(&_func__base)) + 4854
|
_subr__quote = **(**uintptr)(unsafe.Pointer(&_func__base)) + 4854
|
||||||
_subr__skip_array = **(**uintptr)(unsafe.Pointer(&_func__base)) + 15938
|
_subr__skip_array = **(**uintptr)(unsafe.Pointer(&_func__base)) + 15888
|
||||||
_subr__skip_object = **(**uintptr)(unsafe.Pointer(&_func__base)) + 15973
|
_subr__skip_object = **(**uintptr)(unsafe.Pointer(&_func__base)) + 15923
|
||||||
_subr__skip_one = **(**uintptr)(unsafe.Pointer(&_func__base)) + 13616
|
_subr__skip_one = **(**uintptr)(unsafe.Pointer(&_func__base)) + 13566
|
||||||
_subr__u64toa = **(**uintptr)(unsafe.Pointer(&_func__base)) + 3634
|
_subr__u64toa = **(**uintptr)(unsafe.Pointer(&_func__base)) + 3634
|
||||||
_subr__unquote = **(**uintptr)(unsafe.Pointer(&_func__base)) + 5875
|
_subr__unquote = **(**uintptr)(unsafe.Pointer(&_func__base)) + 5875
|
||||||
_subr__value = **(**uintptr)(unsafe.Pointer(&_func__base)) + 9329
|
_subr__value = **(**uintptr)(unsafe.Pointer(&_func__base)) + 9279
|
||||||
_subr__vnumber = **(**uintptr)(unsafe.Pointer(&_func__base)) + 11904
|
_subr__vnumber = **(**uintptr)(unsafe.Pointer(&_func__base)) + 11854
|
||||||
_subr__vsigned = **(**uintptr)(unsafe.Pointer(&_func__base)) + 13066
|
_subr__vsigned = **(**uintptr)(unsafe.Pointer(&_func__base)) + 13016
|
||||||
_subr__vstring = **(**uintptr)(unsafe.Pointer(&_func__base)) + 10935
|
_subr__vstring = **(**uintptr)(unsafe.Pointer(&_func__base)) + 10885
|
||||||
_subr__vunsigned = **(**uintptr)(unsafe.Pointer(&_func__base)) + 13343
|
_subr__vunsigned = **(**uintptr)(unsafe.Pointer(&_func__base)) + 13293
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
||||||
|
|
@ -335,7 +335,7 @@ LBB2_8:
|
||||||
LONG $0x4fdd6941; WORD $0x1293; BYTE $0x00 // imull $1217359, %r13d, %ebx
|
LONG $0x4fdd6941; WORD $0x1293; BYTE $0x00 // imull $1217359, %r13d, %ebx
|
||||||
MOVQ R13, AX
|
MOVQ R13, AX
|
||||||
SHLQ $4, AX
|
SHLQ $4, AX
|
||||||
LONG $0x450d8d48; WORD $0x007b; BYTE $0x00 // leaq $31557(%rip), %rcx /* _DOUBLE_POW5_INV_SPLIT(%rip) */
|
LONG $0x310d8d48; WORD $0x007b; BYTE $0x00 // leaq $31537(%rip), %rcx /* _DOUBLE_POW5_INV_SPLIT(%rip) */
|
||||||
MOVQ R8, DI
|
MOVQ R8, DI
|
||||||
ORQ $2, DI
|
ORQ $2, DI
|
||||||
MOVQ 0(AX)(CX*1), R10
|
MOVQ 0(AX)(CX*1), R10
|
||||||
|
|
@ -423,7 +423,7 @@ LBB2_15:
|
||||||
SHRL $19, DI
|
SHRL $19, DI
|
||||||
MOVLQSX AX, SI
|
MOVLQSX AX, SI
|
||||||
SHLQ $4, SI
|
SHLQ $4, SI
|
||||||
LONG $0x6d0d8d4c; WORD $0x008f; BYTE $0x00 // leaq $36717(%rip), %r9 /* _DOUBLE_POW5_SPLIT(%rip) */
|
LONG $0x590d8d4c; WORD $0x008f; BYTE $0x00 // leaq $36697(%rip), %r9 /* _DOUBLE_POW5_SPLIT(%rip) */
|
||||||
MOVQ R8, BX
|
MOVQ R8, BX
|
||||||
ORQ $2, BX
|
ORQ $2, BX
|
||||||
MOVQ 0(SI)(R9*1), R15
|
MOVQ 0(SI)(R9*1), R15
|
||||||
|
|
@ -826,7 +826,7 @@ LBB2_65:
|
||||||
LEAQ 1(R13), BX
|
LEAQ 1(R13), BX
|
||||||
MOVQ BX, SI
|
MOVQ BX, SI
|
||||||
MOVL R15, DX
|
MOVL R15, DX
|
||||||
LONG $0x004480e8; BYTE $0x00 // callq _print_mantissa
|
LONG $0x00444ee8; BYTE $0x00 // callq _print_mantissa
|
||||||
MOVB 1(R13), AX
|
MOVB 1(R13), AX
|
||||||
MOVB AX, 0(R13)
|
MOVB AX, 0(R13)
|
||||||
MOVL $1, CX
|
MOVL $1, CX
|
||||||
|
|
@ -855,7 +855,7 @@ LBB2_70:
|
||||||
LEAL 0(DX)(DX*1), CX
|
LEAL 0(DX)(DX*1), CX
|
||||||
LEAL 0(CX)(CX*4), CX
|
LEAL 0(CX)(CX*4), CX
|
||||||
SUBL CX, AX
|
SUBL CX, AX
|
||||||
LONG $0x630d8d48; WORD $0x009e; BYTE $0x00 // leaq $40547(%rip), %rcx /* _Digits(%rip) */
|
LONG $0x4f0d8d48; WORD $0x009e; BYTE $0x00 // leaq $40527(%rip), %rcx /* _Digits(%rip) */
|
||||||
MOVWLZX 0(CX)(DX*2), CX
|
MOVWLZX 0(CX)(DX*2), CX
|
||||||
MOVL BX, DX
|
MOVL BX, DX
|
||||||
MOVW CX, 0(R13)(DX*1)
|
MOVW CX, 0(R13)(DX*1)
|
||||||
|
|
@ -879,7 +879,7 @@ LBB2_73:
|
||||||
MOVL BX, SI
|
MOVL BX, SI
|
||||||
ADDQ R13, SI
|
ADDQ R13, SI
|
||||||
MOVL R15, DX
|
MOVL R15, DX
|
||||||
LONG $0x0043dce8; BYTE $0x00 // callq _print_mantissa
|
LONG $0x0043aae8; BYTE $0x00 // callq _print_mantissa
|
||||||
TESTL R12, R12
|
TESTL R12, R12
|
||||||
JE LBB2_84
|
JE LBB2_84
|
||||||
LEAL 0(R12)(BX*1), AX
|
LEAL 0(R12)(BX*1), AX
|
||||||
|
|
@ -910,7 +910,7 @@ LBB2_78:
|
||||||
CMPL AX, $10
|
CMPL AX, $10
|
||||||
JL LBB2_86
|
JL LBB2_86
|
||||||
WORD $0x9848 // cltq
|
WORD $0x9848 // cltq
|
||||||
LONG $0xba0d8d48; WORD $0x009d; BYTE $0x00 // leaq $40378(%rip), %rcx /* _Digits(%rip) */
|
LONG $0xa60d8d48; WORD $0x009d; BYTE $0x00 // leaq $40358(%rip), %rcx /* _Digits(%rip) */
|
||||||
MOVWLZX 0(CX)(AX*2), AX
|
MOVWLZX 0(CX)(AX*2), AX
|
||||||
MOVL BX, CX
|
MOVL BX, CX
|
||||||
MOVW AX, 0(R13)(CX*1)
|
MOVW AX, 0(R13)(CX*1)
|
||||||
|
|
@ -1112,7 +1112,7 @@ LBB2_109:
|
||||||
ADDQ R13, SI
|
ADDQ R13, SI
|
||||||
MOVL R15, DX
|
MOVL R15, DX
|
||||||
WORD $0xf8c5; BYTE $0x77 // vzeroupper
|
WORD $0xf8c5; BYTE $0x77 // vzeroupper
|
||||||
LONG $0x004062e8; BYTE $0x00 // callq _print_mantissa
|
LONG $0x004030e8; BYTE $0x00 // callq _print_mantissa
|
||||||
ADDL BX, R15
|
ADDL BX, R15
|
||||||
MOVL R15, BX
|
MOVL R15, BX
|
||||||
|
|
||||||
|
|
@ -1194,7 +1194,7 @@ _u64toa:
|
||||||
ADDQ AX, AX
|
ADDQ AX, AX
|
||||||
CMPL SI, $1000
|
CMPL SI, $1000
|
||||||
JB LBB4_3
|
JB LBB4_3
|
||||||
LONG $0xdd0d8d48; WORD $0x0099; BYTE $0x00 // leaq $39389(%rip), %rcx /* _Digits(%rip) */
|
LONG $0xc90d8d48; WORD $0x0099; BYTE $0x00 // leaq $39369(%rip), %rcx /* _Digits(%rip) */
|
||||||
MOVB 0(DX)(CX*1), CX
|
MOVB 0(DX)(CX*1), CX
|
||||||
MOVB CX, 0(DI)
|
MOVB CX, 0(DI)
|
||||||
MOVL $1, CX
|
MOVL $1, CX
|
||||||
|
|
@ -1208,14 +1208,14 @@ LBB4_3:
|
||||||
LBB4_4:
|
LBB4_4:
|
||||||
MOVWLZX DX, DX
|
MOVWLZX DX, DX
|
||||||
ORQ $1, DX
|
ORQ $1, DX
|
||||||
LONG $0xbc358d48; WORD $0x0099; BYTE $0x00 // leaq $39356(%rip), %rsi /* _Digits(%rip) */
|
LONG $0xa8358d48; WORD $0x0099; BYTE $0x00 // leaq $39336(%rip), %rsi /* _Digits(%rip) */
|
||||||
MOVB 0(DX)(SI*1), DX
|
MOVB 0(DX)(SI*1), DX
|
||||||
MOVL CX, SI
|
MOVL CX, SI
|
||||||
INCL CX
|
INCL CX
|
||||||
MOVB DX, 0(DI)(SI*1)
|
MOVB DX, 0(DI)(SI*1)
|
||||||
|
|
||||||
LBB4_6:
|
LBB4_6:
|
||||||
LONG $0xab158d48; WORD $0x0099; BYTE $0x00 // leaq $39339(%rip), %rdx /* _Digits(%rip) */
|
LONG $0x97158d48; WORD $0x0099; BYTE $0x00 // leaq $39319(%rip), %rdx /* _Digits(%rip) */
|
||||||
MOVB 0(AX)(DX*1), DX
|
MOVB 0(AX)(DX*1), DX
|
||||||
MOVL CX, SI
|
MOVL CX, SI
|
||||||
INCL CX
|
INCL CX
|
||||||
|
|
@ -1224,7 +1224,7 @@ LBB4_6:
|
||||||
LBB4_7:
|
LBB4_7:
|
||||||
MOVWLZX AX, AX
|
MOVWLZX AX, AX
|
||||||
ORQ $1, AX
|
ORQ $1, AX
|
||||||
LONG $0x93158d48; WORD $0x0099; BYTE $0x00 // leaq $39315(%rip), %rdx /* _Digits(%rip) */
|
LONG $0x7f158d48; WORD $0x0099; BYTE $0x00 // leaq $39295(%rip), %rdx /* _Digits(%rip) */
|
||||||
MOVB 0(AX)(DX*1), AX
|
MOVB 0(AX)(DX*1), AX
|
||||||
MOVL CX, DX
|
MOVL CX, DX
|
||||||
INCL CX
|
INCL CX
|
||||||
|
|
@ -1271,7 +1271,7 @@ LBB4_8:
|
||||||
ADDQ R11, R11
|
ADDQ R11, R11
|
||||||
CMPL SI, $10000000
|
CMPL SI, $10000000
|
||||||
JB LBB4_11
|
JB LBB4_11
|
||||||
LONG $0xfc058d48; WORD $0x0098; BYTE $0x00 // leaq $39164(%rip), %rax /* _Digits(%rip) */
|
LONG $0xe8058d48; WORD $0x0098; BYTE $0x00 // leaq $39144(%rip), %rax /* _Digits(%rip) */
|
||||||
MOVB 0(R10)(AX*1), AX
|
MOVB 0(R10)(AX*1), AX
|
||||||
MOVB AX, 0(DI)
|
MOVB AX, 0(DI)
|
||||||
MOVL $1, CX
|
MOVL $1, CX
|
||||||
|
|
@ -1285,14 +1285,14 @@ LBB4_11:
|
||||||
LBB4_12:
|
LBB4_12:
|
||||||
MOVL R10, AX
|
MOVL R10, AX
|
||||||
ORQ $1, AX
|
ORQ $1, AX
|
||||||
LONG $0xd7358d48; WORD $0x0098; BYTE $0x00 // leaq $39127(%rip), %rsi /* _Digits(%rip) */
|
LONG $0xc3358d48; WORD $0x0098; BYTE $0x00 // leaq $39107(%rip), %rsi /* _Digits(%rip) */
|
||||||
MOVB 0(AX)(SI*1), AX
|
MOVB 0(AX)(SI*1), AX
|
||||||
MOVL CX, SI
|
MOVL CX, SI
|
||||||
INCL CX
|
INCL CX
|
||||||
MOVB AX, 0(DI)(SI*1)
|
MOVB AX, 0(DI)(SI*1)
|
||||||
|
|
||||||
LBB4_14:
|
LBB4_14:
|
||||||
LONG $0xc6058d48; WORD $0x0098; BYTE $0x00 // leaq $39110(%rip), %rax /* _Digits(%rip) */
|
LONG $0xb2058d48; WORD $0x0098; BYTE $0x00 // leaq $39090(%rip), %rax /* _Digits(%rip) */
|
||||||
MOVB 0(R9)(AX*1), AX
|
MOVB 0(R9)(AX*1), AX
|
||||||
MOVL CX, SI
|
MOVL CX, SI
|
||||||
INCL CX
|
INCL CX
|
||||||
|
|
@ -1301,7 +1301,7 @@ LBB4_14:
|
||||||
LBB4_15:
|
LBB4_15:
|
||||||
MOVWLZX R9, AX
|
MOVWLZX R9, AX
|
||||||
ORQ $1, AX
|
ORQ $1, AX
|
||||||
LONG $0xac358d48; WORD $0x0098; BYTE $0x00 // leaq $39084(%rip), %rsi /* _Digits(%rip) */
|
LONG $0x98358d48; WORD $0x0098; BYTE $0x00 // leaq $39064(%rip), %rsi /* _Digits(%rip) */
|
||||||
MOVB 0(AX)(SI*1), AX
|
MOVB 0(AX)(SI*1), AX
|
||||||
MOVL CX, DX
|
MOVL CX, DX
|
||||||
MOVB AX, 0(DI)(DX*1)
|
MOVB AX, 0(DI)(DX*1)
|
||||||
|
|
@ -1383,7 +1383,7 @@ LBB4_16:
|
||||||
MOVL $16, CX
|
MOVL $16, CX
|
||||||
SUBL AX, CX
|
SUBL AX, CX
|
||||||
SHLQ $4, AX
|
SHLQ $4, AX
|
||||||
LONG $0x1f158d48; WORD $0x0098; BYTE $0x00 // leaq $38943(%rip), %rdx /* _VecShiftShuffles(%rip) */
|
LONG $0x0b158d48; WORD $0x0098; BYTE $0x00 // leaq $38923(%rip), %rdx /* _VecShiftShuffles(%rip) */
|
||||||
LONG $0x0071e2c4; WORD $0x1004 // vpshufb (%rax,%rdx), %xmm1, %xmm0
|
LONG $0x0071e2c4; WORD $0x1004 // vpshufb (%rax,%rdx), %xmm1, %xmm0
|
||||||
LONG $0x077ffac5 // vmovdqu %xmm0, (%rdi)
|
LONG $0x077ffac5 // vmovdqu %xmm0, (%rdi)
|
||||||
MOVL CX, AX
|
MOVL CX, AX
|
||||||
|
|
@ -1409,7 +1409,7 @@ LBB4_20:
|
||||||
CMPL DX, $99
|
CMPL DX, $99
|
||||||
JA LBB4_22
|
JA LBB4_22
|
||||||
MOVL DX, AX
|
MOVL DX, AX
|
||||||
LONG $0x020d8d48; WORD $0x0097; BYTE $0x00 // leaq $38658(%rip), %rcx /* _Digits(%rip) */
|
LONG $0xee0d8d48; WORD $0x0096; BYTE $0x00 // leaq $38638(%rip), %rcx /* _Digits(%rip) */
|
||||||
MOVB 0(CX)(AX*2), DX
|
MOVB 0(CX)(AX*2), DX
|
||||||
MOVB 1(CX)(AX*2), AX
|
MOVB 1(CX)(AX*2), AX
|
||||||
MOVB DX, 0(DI)
|
MOVB DX, 0(DI)
|
||||||
|
|
@ -1434,7 +1434,7 @@ LBB4_22:
|
||||||
WORD $0xc96b; BYTE $0x64 // imull $100, %ecx, %ecx
|
WORD $0xc96b; BYTE $0x64 // imull $100, %ecx, %ecx
|
||||||
SUBL CX, AX
|
SUBL CX, AX
|
||||||
MOVWLZX AX, AX
|
MOVWLZX AX, AX
|
||||||
LONG $0xb10d8d48; WORD $0x0096; BYTE $0x00 // leaq $38577(%rip), %rcx /* _Digits(%rip) */
|
LONG $0x9d0d8d48; WORD $0x0096; BYTE $0x00 // leaq $38557(%rip), %rcx /* _Digits(%rip) */
|
||||||
MOVB 0(CX)(AX*2), DX
|
MOVB 0(CX)(AX*2), DX
|
||||||
MOVB 1(CX)(AX*2), AX
|
MOVB 1(CX)(AX*2), AX
|
||||||
MOVB DX, 1(DI)
|
MOVB DX, 1(DI)
|
||||||
|
|
@ -1446,7 +1446,7 @@ LBB4_24:
|
||||||
WORD $0xc86b; BYTE $0x64 // imull $100, %eax, %ecx
|
WORD $0xc86b; BYTE $0x64 // imull $100, %eax, %ecx
|
||||||
SUBL CX, DX
|
SUBL CX, DX
|
||||||
MOVWLZX AX, AX
|
MOVWLZX AX, AX
|
||||||
LONG $0x8e058d4c; WORD $0x0096; BYTE $0x00 // leaq $38542(%rip), %r8 /* _Digits(%rip) */
|
LONG $0x7a058d4c; WORD $0x0096; BYTE $0x00 // leaq $38522(%rip), %r8 /* _Digits(%rip) */
|
||||||
MOVB 0(R8)(AX*2), CX
|
MOVB 0(R8)(AX*2), CX
|
||||||
MOVB 1(R8)(AX*2), AX
|
MOVB 1(R8)(AX*2), AX
|
||||||
MOVB CX, 0(DI)
|
MOVB CX, 0(DI)
|
||||||
|
|
@ -1544,8 +1544,8 @@ _quote:
|
||||||
MOVQ CX, R14
|
MOVQ CX, R14
|
||||||
MOVQ DI, R12
|
MOVQ DI, R12
|
||||||
TESTB $1, R8
|
TESTB $1, R8
|
||||||
LONG $0x2b058d48; WORD $0x0096; BYTE $0x00 // leaq $38443(%rip), %rax /* __SingleQuoteTab(%rip) */
|
LONG $0x17058d48; WORD $0x0096; BYTE $0x00 // leaq $38423(%rip), %rax /* __SingleQuoteTab(%rip) */
|
||||||
LONG $0x24158d4c; WORD $0x00a6; BYTE $0x00 // leaq $42532(%rip), %r10 /* __DoubleQuoteTab(%rip) */
|
LONG $0x10158d4c; WORD $0x00a6; BYTE $0x00 // leaq $42512(%rip), %r10 /* __DoubleQuoteTab(%rip) */
|
||||||
LONG $0xd0440f4c // cmoveq %rax, %r10
|
LONG $0xd0440f4c // cmoveq %rax, %r10
|
||||||
MOVQ DX, R8
|
MOVQ DX, R8
|
||||||
MOVQ DI, AX
|
MOVQ DI, AX
|
||||||
|
|
@ -1770,7 +1770,7 @@ LBB5_26:
|
||||||
LBB5_27:
|
LBB5_27:
|
||||||
TESTQ CX, CX
|
TESTQ CX, CX
|
||||||
MOVQ BX, R14
|
MOVQ BX, R14
|
||||||
LONG $0xca0d8d4c; WORD $0x0092; BYTE $0x00 // leaq $37578(%rip), %r9 /* __SingleQuoteTab(%rip) */
|
LONG $0xb60d8d4c; WORD $0x0092; BYTE $0x00 // leaq $37558(%rip), %r9 /* __SingleQuoteTab(%rip) */
|
||||||
JLE LBB5_60
|
JLE LBB5_60
|
||||||
MOVQ SI, DX
|
MOVQ SI, DX
|
||||||
TESTQ SI, SI
|
TESTQ SI, SI
|
||||||
|
|
@ -2282,7 +2282,7 @@ LBB6_20:
|
||||||
LBB6_34:
|
LBB6_34:
|
||||||
ADDQ BX, AX
|
ADDQ BX, AX
|
||||||
MOVBLZX -1(R9), CX
|
MOVBLZX -1(R9), CX
|
||||||
LONG $0x7c1d8d48; WORD $0x00ad; BYTE $0x00 // leaq $44412(%rip), %rbx /* __UnquoteTab(%rip) */
|
LONG $0x681d8d48; WORD $0x00ad; BYTE $0x00 // leaq $44392(%rip), %rbx /* __UnquoteTab(%rip) */
|
||||||
MOVB 0(CX)(BX*1), CX
|
MOVB 0(CX)(BX*1), CX
|
||||||
CMPB CX, $-1
|
CMPB CX, $-1
|
||||||
JE LBB6_38
|
JE LBB6_38
|
||||||
|
|
@ -2693,64 +2693,61 @@ _atof_eisel_lemire64:
|
||||||
WORD $0x5441 // pushq %r12
|
WORD $0x5441 // pushq %r12
|
||||||
BYTE $0x53 // pushq %rbx
|
BYTE $0x53 // pushq %rbx
|
||||||
BYTE $0x50 // pushq %rax
|
BYTE $0x50 // pushq %rax
|
||||||
MOVL SI, R13
|
MOVL SI, R12
|
||||||
LEAL 348(R13), R14
|
LEAL 348(R12), BX
|
||||||
XORL R12, R12
|
CMPL BX, $695
|
||||||
CMPL R14, $695
|
JA LBB7_1
|
||||||
JA LBB7_10
|
MOVQ CX, R14
|
||||||
MOVL DX, R15
|
MOVL DX, R15
|
||||||
MOVQ DI, BX
|
MOVQ DI, R13
|
||||||
MOVQ CX, -48(BP)
|
LONG $0x002dd7e8; BYTE $0x00 // callq _count_len_u64
|
||||||
LONG $0x002e05e8; BYTE $0x00 // callq _count_len_u64
|
|
||||||
MOVL AX, R8
|
MOVL AX, R8
|
||||||
MOVL AX, CX
|
MOVL AX, CX
|
||||||
NEGL CX
|
NEGL CX
|
||||||
SHLQ CX, BX
|
SHLQ CX, R13
|
||||||
MOVL R14, CX
|
MOVL BX, CX
|
||||||
SHLQ $4, CX
|
SHLQ $4, CX
|
||||||
LONG $0x2b0d8d4c; WORD $0x0031; BYTE $0x00 // leaq $12587(%rip), %r9 /* _POW10_M128_TAB(%rip) */
|
LONG $0x1c158d4c; WORD $0x0031; BYTE $0x00 // leaq $12572(%rip), %r10 /* _POW10_M128_TAB(%rip) */
|
||||||
MOVQ BX, AX
|
MOVQ R13, AX
|
||||||
MULQ 8(CX)(R9*1)
|
MULQ 8(CX)(R10*1)
|
||||||
MOVQ AX, R10
|
MOVQ AX, R9
|
||||||
MOVQ DX, DI
|
MOVQ DX, DI
|
||||||
ANDL $511, DX
|
ANDL $511, DX
|
||||||
MOVQ BX, CX
|
MOVQ R13, SI
|
||||||
NOTQ CX
|
NOTQ SI
|
||||||
CMPQ AX, CX
|
CMPQ AX, SI
|
||||||
JBE LBB7_6
|
JBE LBB7_8
|
||||||
CMPL DX, $511
|
CMPL DX, $511
|
||||||
JNE LBB7_6
|
JNE LBB7_8
|
||||||
MOVLQSX R13, SI
|
MOVQ R13, AX
|
||||||
SHLQ $4, SI
|
MULQ 0(CX)(R10*1)
|
||||||
MOVQ BX, AX
|
ADDQ DX, R9
|
||||||
MULQ 5552(SI)(R9*1)
|
|
||||||
ADDQ DX, R10
|
|
||||||
ADCQ $0, DI
|
ADCQ $0, DI
|
||||||
MOVL DI, DX
|
MOVL DI, DX
|
||||||
ANDL $511, DX
|
ANDL $511, DX
|
||||||
CMPQ AX, CX
|
CMPQ AX, SI
|
||||||
JBE LBB7_6
|
JBE LBB7_8
|
||||||
CMPQ R10, $-1
|
CMPQ R9, $-1
|
||||||
JNE LBB7_6
|
JNE LBB7_8
|
||||||
CMPL DX, $511
|
CMPL DX, $511
|
||||||
JE LBB7_10
|
JE LBB7_1
|
||||||
|
|
||||||
LBB7_6:
|
LBB7_8:
|
||||||
MOVQ DI, AX
|
MOVQ DI, AX
|
||||||
SHRQ $63, AX
|
SHRQ $63, AX
|
||||||
LEAL 9(AX), CX
|
LEAL 9(AX), CX
|
||||||
SHRQ CX, DI
|
SHRQ CX, DI
|
||||||
ORQ R10, DX
|
ORQ R9, DX
|
||||||
JNE LBB7_8
|
JNE LBB7_11
|
||||||
MOVL DI, CX
|
MOVL DI, CX
|
||||||
ANDL $3, CX
|
ANDL $3, CX
|
||||||
CMPL CX, $1
|
CMPL CX, $1
|
||||||
JE LBB7_10
|
JE LBB7_1
|
||||||
|
|
||||||
LBB7_8:
|
LBB7_11:
|
||||||
MOVL $64, CX
|
MOVL $64, CX
|
||||||
SUBL R8, CX
|
SUBL R8, CX
|
||||||
LONG $0x6af56941; WORD $0x0352; BYTE $0x00 // imull $217706, %r13d, %esi
|
LONG $0x6af46941; WORD $0x0352; BYTE $0x00 // imull $217706, %r12d, %esi
|
||||||
SARL $16, SI
|
SARL $16, SI
|
||||||
MOVLQSX CX, BX
|
MOVLQSX CX, BX
|
||||||
MOVL DI, DX
|
MOVL DI, DX
|
||||||
|
|
@ -2766,7 +2763,22 @@ LBB7_8:
|
||||||
SBBQ $-1, AX
|
SBBQ $-1, AX
|
||||||
LEAQ -1(AX), SI
|
LEAQ -1(AX), SI
|
||||||
CMPQ SI, $2045
|
CMPQ SI, $2045
|
||||||
JA LBB7_10
|
JBE LBB7_13
|
||||||
|
|
||||||
|
LBB7_1:
|
||||||
|
XORL AX, AX
|
||||||
|
|
||||||
|
LBB7_14:
|
||||||
|
ADDQ $8, SP
|
||||||
|
BYTE $0x5b // popq %rbx
|
||||||
|
WORD $0x5c41 // popq %r12
|
||||||
|
WORD $0x5d41 // popq %r13
|
||||||
|
WORD $0x5e41 // popq %r14
|
||||||
|
WORD $0x5f41 // popq %r15
|
||||||
|
BYTE $0x5d // popq %rbp
|
||||||
|
RET
|
||||||
|
|
||||||
|
LBB7_13:
|
||||||
CMPQ CX, $1
|
CMPQ CX, $1
|
||||||
MOVB $2, CX
|
MOVB $2, CX
|
||||||
SBBB $0, CX
|
SBBB $0, CX
|
||||||
|
|
@ -2779,20 +2791,9 @@ LBB7_8:
|
||||||
ORQ CX, AX
|
ORQ CX, AX
|
||||||
CMPL R15, $-1
|
CMPL R15, $-1
|
||||||
LONG $0xc1450f48 // cmovneq %rcx, %rax
|
LONG $0xc1450f48 // cmovneq %rcx, %rax
|
||||||
MOVQ -48(BP), CX
|
MOVQ AX, 0(R14)
|
||||||
MOVQ AX, 0(CX)
|
MOVB $1, AX
|
||||||
MOVL $1, R12
|
JMP LBB7_14
|
||||||
|
|
||||||
LBB7_10:
|
|
||||||
MOVL R12, AX
|
|
||||||
ADDQ $8, SP
|
|
||||||
BYTE $0x5b // popq %rbx
|
|
||||||
WORD $0x5c41 // popq %r12
|
|
||||||
WORD $0x5d41 // popq %r13
|
|
||||||
WORD $0x5e41 // popq %r14
|
|
||||||
WORD $0x5f41 // popq %r15
|
|
||||||
BYTE $0x5d // popq %rbp
|
|
||||||
RET
|
|
||||||
|
|
||||||
LCPI8_0:
|
LCPI8_0:
|
||||||
QUAD $0x0000000000000000 // .space 8, '\x00\x00\x00\x00\x00\x00\x00\x00'
|
QUAD $0x0000000000000000 // .space 8, '\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||||
|
|
@ -2843,7 +2844,7 @@ LBB8_5:
|
||||||
MOVQ BX, -48(BP)
|
MOVQ BX, -48(BP)
|
||||||
JLE LBB8_12
|
JLE LBB8_12
|
||||||
XORL R12, R12
|
XORL R12, R12
|
||||||
LONG $0xee358d4c; WORD $0x005a; BYTE $0x00 // leaq $23278(%rip), %r14 /* _POW_TAB(%rip) */
|
LONG $0xf9358d4c; WORD $0x005a; BYTE $0x00 // leaq $23289(%rip), %r14 /* _POW_TAB(%rip) */
|
||||||
JMP LBB8_8
|
JMP LBB8_8
|
||||||
|
|
||||||
LBB8_10:
|
LBB8_10:
|
||||||
|
|
@ -2855,7 +2856,7 @@ LBB8_10:
|
||||||
LBB8_11:
|
LBB8_11:
|
||||||
MOVQ R15, DI
|
MOVQ R15, DI
|
||||||
MOVL BX, SI
|
MOVL BX, SI
|
||||||
LONG $0x002de8e8; BYTE $0x00 // callq _right_shift
|
LONG $0x002db8e8; BYTE $0x00 // callq _right_shift
|
||||||
|
|
||||||
LBB8_7:
|
LBB8_7:
|
||||||
ADDL BX, R12
|
ADDL BX, R12
|
||||||
|
|
@ -2872,7 +2873,7 @@ LBB8_8:
|
||||||
JMP LBB8_7
|
JMP LBB8_7
|
||||||
|
|
||||||
LBB8_12:
|
LBB8_12:
|
||||||
LONG $0xa7358d4c; WORD $0x005a; BYTE $0x00 // leaq $23207(%rip), %r14 /* _POW_TAB(%rip) */
|
LONG $0xb2358d4c; WORD $0x005a; BYTE $0x00 // leaq $23218(%rip), %r14 /* _POW_TAB(%rip) */
|
||||||
JMP LBB8_14
|
JMP LBB8_14
|
||||||
|
|
||||||
LBB8_18:
|
LBB8_18:
|
||||||
|
|
@ -2883,7 +2884,7 @@ LBB8_18:
|
||||||
LBB8_20:
|
LBB8_20:
|
||||||
MOVQ R15, DI
|
MOVQ R15, DI
|
||||||
MOVL BX, SI
|
MOVL BX, SI
|
||||||
LONG $0x002c1ee8; BYTE $0x00 // callq _left_shift
|
LONG $0x002c0be8; BYTE $0x00 // callq _left_shift
|
||||||
MOVL 804(R15), AX
|
MOVL 804(R15), AX
|
||||||
|
|
||||||
LBB8_13:
|
LBB8_13:
|
||||||
|
|
@ -2923,7 +2924,7 @@ LBB8_21:
|
||||||
LBB8_25:
|
LBB8_25:
|
||||||
MOVQ R15, DI
|
MOVQ R15, DI
|
||||||
MOVL $60, SI
|
MOVL $60, SI
|
||||||
LONG $0x002d3ae8; BYTE $0x00 // callq _right_shift
|
LONG $0x002d0ae8; BYTE $0x00 // callq _right_shift
|
||||||
ADDL $60, R12
|
ADDL $60, R12
|
||||||
CMPL R12, $-120
|
CMPL R12, $-120
|
||||||
JL LBB8_25
|
JL LBB8_25
|
||||||
|
|
@ -2949,7 +2950,7 @@ LBB8_31:
|
||||||
NEGL R12
|
NEGL R12
|
||||||
MOVQ R15, DI
|
MOVQ R15, DI
|
||||||
MOVL R12, SI
|
MOVL R12, SI
|
||||||
LONG $0x002cf4e8; BYTE $0x00 // callq _right_shift
|
LONG $0x002cc4e8; BYTE $0x00 // callq _right_shift
|
||||||
MOVL $-1022, R14
|
MOVL $-1022, R14
|
||||||
|
|
||||||
LBB8_32:
|
LBB8_32:
|
||||||
|
|
@ -2957,7 +2958,7 @@ LBB8_32:
|
||||||
JE LBB8_34
|
JE LBB8_34
|
||||||
MOVQ R15, DI
|
MOVQ R15, DI
|
||||||
MOVL $53, SI
|
MOVL $53, SI
|
||||||
LONG $0x002b53e8; BYTE $0x00 // callq _left_shift
|
LONG $0x002b40e8; BYTE $0x00 // callq _left_shift
|
||||||
|
|
||||||
LBB8_34:
|
LBB8_34:
|
||||||
MOVL 804(R15), AX
|
MOVL 804(R15), AX
|
||||||
|
|
@ -3249,19 +3250,15 @@ _atof_native_decimal:
|
||||||
LONG $0x4511fcc5; BYTE $0xb8 // vmovups %ymm0, $-72(%rbp)
|
LONG $0x4511fcc5; BYTE $0xb8 // vmovups %ymm0, $-72(%rbp)
|
||||||
LONG $0xc057f8c5 // vxorps %xmm0, %xmm0, %xmm0
|
LONG $0xc057f8c5 // vxorps %xmm0, %xmm0, %xmm0
|
||||||
LONG $0x4511f8c5; BYTE $0xd8 // vmovups %xmm0, $-40(%rbp)
|
LONG $0x4511f8c5; BYTE $0xd8 // vmovups %xmm0, $-40(%rbp)
|
||||||
MOVB 0(DI), CX
|
XORL AX, AX
|
||||||
MOVL $1, AX
|
CMPB 0(DI), $45
|
||||||
CMPB CX, $43
|
JNE LBB9_2
|
||||||
JE LBB9_4
|
|
||||||
CMPB CX, $45
|
|
||||||
JNE LBB9_3
|
|
||||||
MOVL $1, -32(BP)
|
MOVL $1, -32(BP)
|
||||||
|
MOVL $1, AX
|
||||||
|
|
||||||
LBB9_4:
|
LBB9_2:
|
||||||
CMPL AX, SI
|
CMPL AX, SI
|
||||||
JGE LBB9_5
|
JGE LBB9_3
|
||||||
|
|
||||||
LBB9_6:
|
|
||||||
MOVL SI, R10
|
MOVL SI, R10
|
||||||
MOVL AX, AX
|
MOVL AX, AX
|
||||||
MOVLQSX SI, R11
|
MOVLQSX SI, R11
|
||||||
|
|
@ -3269,9 +3266,9 @@ LBB9_6:
|
||||||
XORL R9, R9
|
XORL R9, R9
|
||||||
XORL R14, R14
|
XORL R14, R14
|
||||||
XORL R8, R8
|
XORL R8, R8
|
||||||
JMP LBB9_7
|
JMP LBB9_5
|
||||||
|
|
||||||
LBB9_13:
|
LBB9_11:
|
||||||
MOVLQSX R14, CX
|
MOVLQSX R14, CX
|
||||||
MOVB BX, -840(BP)(CX*1)
|
MOVB BX, -840(BP)(CX*1)
|
||||||
MOVL -40(BP), R9
|
MOVL -40(BP), R9
|
||||||
|
|
@ -3279,129 +3276,124 @@ LBB9_13:
|
||||||
MOVL R9, -40(BP)
|
MOVL R9, -40(BP)
|
||||||
MOVL R9, R14
|
MOVL R9, R14
|
||||||
|
|
||||||
LBB9_17:
|
LBB9_15:
|
||||||
INCQ AX
|
INCQ AX
|
||||||
CMPQ AX, R11
|
CMPQ AX, R11
|
||||||
SETLT CX
|
SETLT CX
|
||||||
CMPQ R10, AX
|
CMPQ R10, AX
|
||||||
JE LBB9_18
|
JE LBB9_16
|
||||||
|
|
||||||
LBB9_7:
|
LBB9_5:
|
||||||
MOVBLZX 0(DI)(AX*1), BX
|
MOVBLZX 0(DI)(AX*1), BX
|
||||||
LEAL -48(BX), DX
|
LEAL -48(BX), DX
|
||||||
CMPB DX, $9
|
CMPB DX, $9
|
||||||
JA LBB9_15
|
JA LBB9_13
|
||||||
CMPB BX, $48
|
CMPB BX, $48
|
||||||
JNE LBB9_12
|
JNE LBB9_10
|
||||||
TESTL R14, R14
|
TESTL R14, R14
|
||||||
JE LBB9_10
|
JE LBB9_8
|
||||||
CMPL R14, $800
|
CMPL R14, $800
|
||||||
JL LBB9_13
|
JL LBB9_11
|
||||||
JMP LBB9_17
|
JMP LBB9_15
|
||||||
|
|
||||||
LBB9_15:
|
LBB9_13:
|
||||||
CMPB BX, $46
|
CMPB BX, $46
|
||||||
JNE LBB9_19
|
JNE LBB9_17
|
||||||
MOVL R14, -36(BP)
|
MOVL R14, -36(BP)
|
||||||
MOVL $1, R8
|
MOVL $1, R8
|
||||||
JMP LBB9_17
|
JMP LBB9_15
|
||||||
|
|
||||||
LBB9_12:
|
|
||||||
CMPL R14, $799
|
|
||||||
JLE LBB9_13
|
|
||||||
MOVL $1, -28(BP)
|
|
||||||
JMP LBB9_17
|
|
||||||
|
|
||||||
LBB9_10:
|
LBB9_10:
|
||||||
|
CMPL R14, $799
|
||||||
|
JLE LBB9_11
|
||||||
|
MOVL $1, -28(BP)
|
||||||
|
JMP LBB9_15
|
||||||
|
|
||||||
|
LBB9_8:
|
||||||
DECL -36(BP)
|
DECL -36(BP)
|
||||||
XORL R14, R14
|
XORL R14, R14
|
||||||
JMP LBB9_17
|
JMP LBB9_15
|
||||||
|
|
||||||
LBB9_3:
|
LBB9_3:
|
||||||
XORL AX, AX
|
|
||||||
CMPL AX, SI
|
|
||||||
JL LBB9_6
|
|
||||||
|
|
||||||
LBB9_5:
|
|
||||||
MOVL $0, -36(BP)
|
MOVL $0, -36(BP)
|
||||||
JMP LBB9_35
|
JMP LBB9_33
|
||||||
|
|
||||||
LBB9_18:
|
LBB9_16:
|
||||||
MOVL R10, AX
|
MOVL R10, AX
|
||||||
|
|
||||||
LBB9_19:
|
LBB9_17:
|
||||||
TESTL R8, R8
|
TESTL R8, R8
|
||||||
JE LBB9_20
|
JE LBB9_18
|
||||||
TESTB $1, CX
|
TESTB $1, CX
|
||||||
JNE LBB9_22
|
JNE LBB9_20
|
||||||
JMP LBB9_35
|
JMP LBB9_33
|
||||||
|
|
||||||
LBB9_20:
|
LBB9_18:
|
||||||
MOVL R9, -36(BP)
|
MOVL R9, -36(BP)
|
||||||
TESTB $1, CX
|
TESTB $1, CX
|
||||||
JE LBB9_35
|
JE LBB9_33
|
||||||
|
|
||||||
LBB9_22:
|
LBB9_20:
|
||||||
MOVL AX, DX
|
MOVL AX, DX
|
||||||
MOVB 0(DI)(DX*1), CX
|
MOVB 0(DI)(DX*1), CX
|
||||||
ORB $32, CX
|
ORB $32, CX
|
||||||
CMPB CX, $101
|
CMPB CX, $101
|
||||||
JNE LBB9_35
|
JNE LBB9_33
|
||||||
MOVB 1(DI)(DX*1), BX
|
MOVB 1(DI)(DX*1), BX
|
||||||
CMPB BX, $45
|
CMPB BX, $45
|
||||||
JE LBB9_27
|
JE LBB9_25
|
||||||
MOVL $1, R8
|
MOVL $1, R8
|
||||||
CMPB BX, $43
|
CMPB BX, $43
|
||||||
JNE LBB9_25
|
JNE LBB9_23
|
||||||
ADDL $2, AX
|
ADDL $2, AX
|
||||||
JMP LBB9_28
|
JMP LBB9_26
|
||||||
|
|
||||||
LBB9_27:
|
LBB9_25:
|
||||||
ADDL $2, AX
|
ADDL $2, AX
|
||||||
MOVL $-1, R8
|
MOVL $-1, R8
|
||||||
|
|
||||||
LBB9_28:
|
LBB9_26:
|
||||||
MOVL AX, DX
|
MOVL AX, DX
|
||||||
XORL AX, AX
|
XORL AX, AX
|
||||||
CMPL DX, SI
|
CMPL DX, SI
|
||||||
JL LBB9_30
|
JL LBB9_28
|
||||||
JMP LBB9_34
|
JMP LBB9_32
|
||||||
|
|
||||||
LBB9_25:
|
LBB9_23:
|
||||||
INCQ DX
|
INCQ DX
|
||||||
XORL AX, AX
|
XORL AX, AX
|
||||||
CMPL DX, SI
|
CMPL DX, SI
|
||||||
JGE LBB9_34
|
JGE LBB9_32
|
||||||
|
|
||||||
LBB9_30:
|
LBB9_28:
|
||||||
MOVLQSX DX, AX
|
MOVLQSX DX, AX
|
||||||
SUBL DX, SI
|
SUBL DX, SI
|
||||||
ADDQ AX, DI
|
ADDQ AX, DI
|
||||||
XORL DX, DX
|
XORL DX, DX
|
||||||
XORL AX, AX
|
XORL AX, AX
|
||||||
|
|
||||||
LBB9_31:
|
LBB9_29:
|
||||||
CMPL AX, $9999
|
CMPL AX, $9999
|
||||||
JG LBB9_34
|
JG LBB9_32
|
||||||
MOVBLZX 0(DI)(DX*1), BX
|
MOVBLZX 0(DI)(DX*1), BX
|
||||||
LEAL -48(BX), CX
|
LEAL -48(BX), CX
|
||||||
CMPB CX, $9
|
CMPB CX, $9
|
||||||
JA LBB9_34
|
JA LBB9_32
|
||||||
LEAL 0(AX)(AX*4), AX
|
LEAL 0(AX)(AX*4), AX
|
||||||
LEAL -48(BX)(AX*2), AX
|
LEAL -48(BX)(AX*2), AX
|
||||||
INCQ DX
|
INCQ DX
|
||||||
CMPL SI, DX
|
CMPL SI, DX
|
||||||
JNE LBB9_31
|
JNE LBB9_29
|
||||||
|
|
||||||
LBB9_34:
|
LBB9_32:
|
||||||
IMULL R8, AX
|
IMULL R8, AX
|
||||||
ADDL AX, -36(BP)
|
ADDL AX, -36(BP)
|
||||||
|
|
||||||
LBB9_35:
|
LBB9_33:
|
||||||
LEAQ -840(BP), DI
|
LEAQ -840(BP), DI
|
||||||
LEAQ -24(BP), SI
|
LEAQ -24(BP), SI
|
||||||
WORD $0xf8c5; BYTE $0x77 // vzeroupper
|
WORD $0xf8c5; BYTE $0x77 // vzeroupper
|
||||||
LONG $0xfff8c2e8; BYTE $0xff // callq _decimal_to_f64
|
LONG $0xfff8d5e8; BYTE $0xff // callq _decimal_to_f64
|
||||||
LONG $0x4510fbc5; BYTE $0xe8 // vmovsd $-24(%rbp), %xmm0
|
LONG $0x4510fbc5; BYTE $0xe8 // vmovsd $-24(%rbp), %xmm0
|
||||||
ADDQ $832, SP
|
ADDQ $832, SP
|
||||||
BYTE $0x5b // popq %rbx
|
BYTE $0x5b // popq %rbx
|
||||||
|
|
@ -4584,7 +4576,7 @@ LBB13_66:
|
||||||
CMPL BX, $23
|
CMPL BX, $23
|
||||||
JL LBB13_75
|
JL LBB13_75
|
||||||
LEAL -22(BX), AX
|
LEAL -22(BX), AX
|
||||||
LONG $0xee0d8d48; WORD $0x0152; BYTE $0x00 // leaq $86766(%rip), %rcx /* _P10_TAB(%rip) */
|
LONG $0x0c0d8d48; WORD $0x0153; BYTE $0x00 // leaq $86796(%rip), %rcx /* _P10_TAB(%rip) */
|
||||||
LONG $0x0459fbc5; BYTE $0xc1 // vmulsd (%rcx,%rax,8), %xmm0, %xmm0
|
LONG $0x0459fbc5; BYTE $0xc1 // vmulsd (%rcx,%rax,8), %xmm0, %xmm0
|
||||||
MOVL $22, AX
|
MOVL $22, AX
|
||||||
JMP LBB13_76
|
JMP LBB13_76
|
||||||
|
|
@ -4603,7 +4595,7 @@ LBB13_72:
|
||||||
CMPL BX, $-22
|
CMPL BX, $-22
|
||||||
JB LBB13_79
|
JB LBB13_79
|
||||||
NEGL BX
|
NEGL BX
|
||||||
LONG $0xb5058d48; WORD $0x0152; BYTE $0x00 // leaq $86709(%rip), %rax /* _P10_TAB(%rip) */
|
LONG $0xd3058d48; WORD $0x0152; BYTE $0x00 // leaq $86739(%rip), %rax /* _P10_TAB(%rip) */
|
||||||
LONG $0x045efbc5; BYTE $0xd8 // vdivsd (%rax,%rbx,8), %xmm0, %xmm0
|
LONG $0x045efbc5; BYTE $0xd8 // vdivsd (%rax,%rbx,8), %xmm0, %xmm0
|
||||||
LONG $0x4511fbc5; BYTE $0xc8 // vmovsd %xmm0, $-56(%rbp)
|
LONG $0x4511fbc5; BYTE $0xc8 // vmovsd %xmm0, $-56(%rbp)
|
||||||
JMP LBB13_85
|
JMP LBB13_85
|
||||||
|
|
@ -4624,7 +4616,7 @@ LBB13_76:
|
||||||
LONG $0xc82ef9c5 // vucomisd %xmm0, %xmm1
|
LONG $0xc82ef9c5 // vucomisd %xmm0, %xmm1
|
||||||
JA LBB13_79
|
JA LBB13_79
|
||||||
MOVL AX, AX
|
MOVL AX, AX
|
||||||
LONG $0x710d8d48; WORD $0x0152; BYTE $0x00 // leaq $86641(%rip), %rcx /* _P10_TAB(%rip) */
|
LONG $0x8f0d8d48; WORD $0x0152; BYTE $0x00 // leaq $86671(%rip), %rcx /* _P10_TAB(%rip) */
|
||||||
LONG $0x0459fbc5; BYTE $0xc1 // vmulsd (%rcx,%rax,8), %xmm0, %xmm0
|
LONG $0x0459fbc5; BYTE $0xc1 // vmulsd (%rcx,%rax,8), %xmm0, %xmm0
|
||||||
LONG $0x4511fbc5; BYTE $0xc8 // vmovsd %xmm0, $-56(%rbp)
|
LONG $0x4511fbc5; BYTE $0xc8 // vmovsd %xmm0, $-56(%rbp)
|
||||||
JMP LBB13_85
|
JMP LBB13_85
|
||||||
|
|
@ -4635,8 +4627,8 @@ LBB13_79:
|
||||||
MOVQ R12, DI
|
MOVQ R12, DI
|
||||||
MOVL BX, SI
|
MOVL BX, SI
|
||||||
MOVL -60(BP), DX
|
MOVL -60(BP), DX
|
||||||
LONG $0xffe876e8; BYTE $0xff // callq _atof_eisel_lemire64
|
LONG $0xffe8a8e8; BYTE $0xff // callq _atof_eisel_lemire64
|
||||||
TESTL AX, AX
|
TESTB AX, AX
|
||||||
JE LBB13_83
|
JE LBB13_83
|
||||||
CMPL -44(BP), $0
|
CMPL -44(BP), $0
|
||||||
JE LBB13_84
|
JE LBB13_84
|
||||||
|
|
@ -4645,8 +4637,8 @@ LBB13_79:
|
||||||
MOVQ R12, DI
|
MOVQ R12, DI
|
||||||
MOVL BX, SI
|
MOVL BX, SI
|
||||||
MOVL -60(BP), DX
|
MOVL -60(BP), DX
|
||||||
LONG $0xffe858e8; BYTE $0xff // callq _atof_eisel_lemire64
|
LONG $0xffe88ae8; BYTE $0xff // callq _atof_eisel_lemire64
|
||||||
TESTL AX, AX
|
TESTB AX, AX
|
||||||
JE LBB13_83
|
JE LBB13_83
|
||||||
LONG $0x4d10fbc5; BYTE $0xb8 // vmovsd $-72(%rbp), %xmm1
|
LONG $0x4d10fbc5; BYTE $0xb8 // vmovsd $-72(%rbp), %xmm1
|
||||||
LONG $0x4510fbc5; BYTE $0xc8 // vmovsd $-56(%rbp), %xmm0
|
LONG $0x4510fbc5; BYTE $0xc8 // vmovsd $-56(%rbp), %xmm0
|
||||||
|
|
@ -4661,7 +4653,7 @@ LBB13_83:
|
||||||
ADDQ AX, DI
|
ADDQ AX, DI
|
||||||
MOVL 8(CX), SI
|
MOVL 8(CX), SI
|
||||||
SUBL AX, SI
|
SUBL AX, SI
|
||||||
LONG $0xffeecbe8; BYTE $0xff // callq _atof_native_decimal
|
LONG $0xffeedee8; BYTE $0xff // callq _atof_native_decimal
|
||||||
JMP LBB13_85
|
JMP LBB13_85
|
||||||
|
|
||||||
LBB13_84:
|
LBB13_84:
|
||||||
|
|
@ -6388,7 +6380,7 @@ _print_mantissa:
|
||||||
LONG $0x64fa6b41 // imull $100, %r10d, %edi
|
LONG $0x64fa6b41 // imull $100, %r10d, %edi
|
||||||
SUBL DI, AX
|
SUBL DI, AX
|
||||||
MOVWLZX AX, R11
|
MOVWLZX AX, R11
|
||||||
LONG $0x9e3d8d48; WORD $0x0059; BYTE $0x00 // leaq $22942(%rip), %rdi /* _Digits(%rip) */
|
LONG $0xbc3d8d48; WORD $0x0059; BYTE $0x00 // leaq $22972(%rip), %rdi /* _Digits(%rip) */
|
||||||
MOVWLZX 0(DI)(R8*2), AX
|
MOVWLZX 0(DI)(R8*2), AX
|
||||||
MOVW AX, -2(R14)
|
MOVW AX, -2(R14)
|
||||||
MOVWLZX 0(DI)(R9*2), AX
|
MOVWLZX 0(DI)(R9*2), AX
|
||||||
|
|
@ -6404,7 +6396,7 @@ LBB24_2:
|
||||||
CMPL DI, $10000
|
CMPL DI, $10000
|
||||||
JB LBB24_3
|
JB LBB24_3
|
||||||
MOVL $3518437209, R8
|
MOVL $3518437209, R8
|
||||||
LONG $0x560d8d4c; WORD $0x0059; BYTE $0x00 // leaq $22870(%rip), %r9 /* _Digits(%rip) */
|
LONG $0x740d8d4c; WORD $0x0059; BYTE $0x00 // leaq $22900(%rip), %r9 /* _Digits(%rip) */
|
||||||
|
|
||||||
LBB24_5:
|
LBB24_5:
|
||||||
MOVL DI, AX
|
MOVL DI, AX
|
||||||
|
|
@ -6435,7 +6427,7 @@ LBB24_7:
|
||||||
WORD $0xd16b; BYTE $0x64 // imull $100, %ecx, %edx
|
WORD $0xd16b; BYTE $0x64 // imull $100, %ecx, %edx
|
||||||
SUBL DX, AX
|
SUBL DX, AX
|
||||||
MOVWLZX AX, AX
|
MOVWLZX AX, AX
|
||||||
LONG $0xef158d48; WORD $0x0058; BYTE $0x00 // leaq $22767(%rip), %rdx /* _Digits(%rip) */
|
LONG $0x0d158d48; WORD $0x0059; BYTE $0x00 // leaq $22797(%rip), %rdx /* _Digits(%rip) */
|
||||||
MOVWLZX 0(DX)(AX*2), AX
|
MOVWLZX 0(DX)(AX*2), AX
|
||||||
MOVW AX, -2(R14)
|
MOVW AX, -2(R14)
|
||||||
ADDQ $-2, R14
|
ADDQ $-2, R14
|
||||||
|
|
@ -6445,7 +6437,7 @@ LBB24_8:
|
||||||
CMPL AX, $10
|
CMPL AX, $10
|
||||||
JB LBB24_10
|
JB LBB24_10
|
||||||
MOVL AX, AX
|
MOVL AX, AX
|
||||||
LONG $0xd20d8d48; WORD $0x0058; BYTE $0x00 // leaq $22738(%rip), %rcx /* _Digits(%rip) */
|
LONG $0xf00d8d48; WORD $0x0058; BYTE $0x00 // leaq $22768(%rip), %rcx /* _Digits(%rip) */
|
||||||
MOVWLZX 0(CX)(AX*2), AX
|
MOVWLZX 0(CX)(AX*2), AX
|
||||||
MOVW AX, -2(R14)
|
MOVW AX, -2(R14)
|
||||||
BYTE $0x5b // popq %rbx
|
BYTE $0x5b // popq %rbx
|
||||||
|
|
@ -6502,7 +6494,7 @@ LBB25_4:
|
||||||
RET
|
RET
|
||||||
|
|
||||||
LBB25_6:
|
LBB25_6:
|
||||||
LONG $0xb70d8d48; WORD $0x007a; BYTE $0x00 // leaq $31415(%rip), %rcx /* _U8_LEN_TAB(%rip) */
|
LONG $0xd50d8d48; WORD $0x007a; BYTE $0x00 // leaq $31445(%rip), %rcx /* _U8_LEN_TAB(%rip) */
|
||||||
MOVBLZX 0(AX)(CX*1), AX
|
MOVBLZX 0(AX)(CX*1), AX
|
||||||
ADDL BX, AX
|
ADDL BX, AX
|
||||||
ADDQ $8, SP
|
ADDQ $8, SP
|
||||||
|
|
@ -6513,64 +6505,62 @@ LBB25_6:
|
||||||
_left_shift:
|
_left_shift:
|
||||||
BYTE $0x55 // pushq %rbp
|
BYTE $0x55 // pushq %rbp
|
||||||
WORD $0x8948; BYTE $0xe5 // movq %rsp, %rbp
|
WORD $0x8948; BYTE $0xe5 // movq %rsp, %rbp
|
||||||
|
WORD $0x5741 // pushq %r15
|
||||||
|
WORD $0x5641 // pushq %r14
|
||||||
BYTE $0x53 // pushq %rbx
|
BYTE $0x53 // pushq %rbx
|
||||||
MOVL SI, CX
|
MOVL SI, CX
|
||||||
IMUL3Q $804, CX, R10
|
IMUL3Q $804, CX, DX
|
||||||
LONG $0x951d8d4c; WORD $0x007b; BYTE $0x00 // leaq $31637(%rip), %r11 /* _LSHIFT_TAB(%rip) */
|
LONG $0xaf358d48; WORD $0x007b; BYTE $0x00 // leaq $31663(%rip), %rsi /* _LSHIFT_TAB(%rip) */
|
||||||
MOVL 0(R10)(R11*1), R8
|
MOVL 0(DX)(SI*1), R8
|
||||||
MOVLQSX 800(DI), R9
|
MOVLQSX 800(DI), R9
|
||||||
|
MOVB 4(DX)(SI*1), AX
|
||||||
TESTQ R9, R9
|
TESTQ R9, R9
|
||||||
JE LBB26_1
|
JE LBB26_6
|
||||||
LEAQ 4(R10)(R11*1), SI
|
LEAQ 5(DX)(SI*1), DX
|
||||||
XORL AX, AX
|
XORL SI, SI
|
||||||
|
|
||||||
LBB26_3:
|
LBB26_3:
|
||||||
MOVBLZX 0(SI)(AX*1), DX
|
TESTB AX, AX
|
||||||
CMPB 0(DI)(AX*1), DX
|
JE LBB26_8
|
||||||
JNE LBB26_8
|
CMPB 0(DI)(SI*1), AX
|
||||||
INCQ AX
|
JNE LBB26_5
|
||||||
CMPQ R9, AX
|
MOVBLZX 0(DX)(SI*1), AX
|
||||||
|
INCQ SI
|
||||||
|
CMPQ R9, SI
|
||||||
JNE LBB26_3
|
JNE LBB26_3
|
||||||
LEAL -1(R9), AX
|
|
||||||
CMPL AX, $798
|
|
||||||
JA LBB26_10
|
|
||||||
MOVL R9, AX
|
|
||||||
JMP LBB26_7
|
|
||||||
|
|
||||||
LBB26_1:
|
LBB26_6:
|
||||||
XORL AX, AX
|
TESTB AX, AX
|
||||||
|
JE LBB26_8
|
||||||
|
|
||||||
LBB26_7:
|
LBB26_7:
|
||||||
ADDQ R10, R11
|
|
||||||
MOVB 4(AX)(R11*1), AX
|
|
||||||
ADDB $-48, AX
|
|
||||||
CMPB AX, $10
|
|
||||||
JAE LBB26_10
|
|
||||||
|
|
||||||
LBB26_9:
|
|
||||||
DECL R8
|
DECL R8
|
||||||
|
|
||||||
LBB26_10:
|
LBB26_8:
|
||||||
TESTL R9, R9
|
TESTL R9, R9
|
||||||
JLE LBB26_23
|
JLE LBB26_22
|
||||||
LEAL -1(R9)(R8*1), R10
|
LEAL 0(R8)(R9*1), AX
|
||||||
|
MOVLQSX AX, BX
|
||||||
|
MOVQ BX, R10
|
||||||
|
SHLQ $32, R10
|
||||||
INCQ R9
|
INCQ R9
|
||||||
XORL DX, DX
|
XORL DX, DX
|
||||||
MOVQ $-3689348814741910323, R11
|
MOVQ $-3689348814741910323, R11
|
||||||
JMP LBB26_12
|
MOVQ $-4294967296, R14
|
||||||
|
JMP LBB26_10
|
||||||
|
|
||||||
LBB26_13:
|
LBB26_11:
|
||||||
ADDB $48, AX
|
ADDB $48, AX
|
||||||
MOVLQSX R10, BX
|
MOVB AX, -1(DI)(BX*1)
|
||||||
MOVB AX, 0(DI)(BX*1)
|
|
||||||
DECL R10
|
|
||||||
|
|
||||||
LBB26_19:
|
LBB26_18:
|
||||||
|
DECQ BX
|
||||||
|
ADDQ R14, R10
|
||||||
DECQ R9
|
DECQ R9
|
||||||
CMPQ R9, $1
|
CMPQ R9, $1
|
||||||
JLE LBB26_14
|
JLE LBB26_12
|
||||||
|
|
||||||
LBB26_12:
|
LBB26_10:
|
||||||
MOVBQSX -2(DI)(R9*1), SI
|
MOVBQSX -2(DI)(R9*1), SI
|
||||||
ADDQ $-48, SI
|
ADDQ $-48, SI
|
||||||
SHLQ CX, SI
|
SHLQ CX, SI
|
||||||
|
|
@ -6579,62 +6569,48 @@ LBB26_12:
|
||||||
MULQ R11
|
MULQ R11
|
||||||
SHRQ $3, DX
|
SHRQ $3, DX
|
||||||
LEAQ 0(DX)(DX*1), AX
|
LEAQ 0(DX)(DX*1), AX
|
||||||
LEAQ 0(AX)(AX*4), BX
|
LEAQ 0(AX)(AX*4), R15
|
||||||
MOVQ SI, AX
|
MOVQ SI, AX
|
||||||
SUBQ BX, AX
|
SUBQ R15, AX
|
||||||
CMPL R10, $799
|
CMPQ BX, $800
|
||||||
JLE LBB26_13
|
JLE LBB26_11
|
||||||
TESTQ AX, AX
|
TESTQ AX, AX
|
||||||
JE LBB26_19
|
JE LBB26_18
|
||||||
MOVL $1, 812(DI)
|
MOVL $1, 812(DI)
|
||||||
JMP LBB26_19
|
JMP LBB26_18
|
||||||
|
|
||||||
LBB26_14:
|
LBB26_12:
|
||||||
CMPQ SI, $10
|
CMPQ SI, $10
|
||||||
JAE LBB26_15
|
JAE LBB26_13
|
||||||
|
|
||||||
LBB26_23:
|
|
||||||
MOVL 800(DI), CX
|
|
||||||
ADDL R8, CX
|
|
||||||
CMPL CX, $801
|
|
||||||
MOVL $800, AX
|
|
||||||
WORD $0x4c0f; BYTE $0xc1 // cmovll %ecx, %eax
|
|
||||||
MOVL AX, 800(DI)
|
|
||||||
ADDL R8, 804(DI)
|
|
||||||
TESTL CX, CX
|
|
||||||
JLE LBB26_27
|
|
||||||
MOVL AX, CX
|
|
||||||
INCQ CX
|
|
||||||
|
|
||||||
LBB26_25:
|
|
||||||
DECL AX
|
|
||||||
CMPB 0(DI)(AX*1), $48
|
|
||||||
JNE LBB26_29
|
|
||||||
MOVL AX, 800(DI)
|
|
||||||
DECQ CX
|
|
||||||
CMPQ CX, $1
|
|
||||||
JG LBB26_25
|
|
||||||
|
|
||||||
LBB26_27:
|
|
||||||
TESTL AX, AX
|
|
||||||
JE LBB26_28
|
|
||||||
|
|
||||||
LBB26_29:
|
|
||||||
BYTE $0x5b // popq %rbx
|
|
||||||
BYTE $0x5d // popq %rbp
|
|
||||||
RET
|
|
||||||
|
|
||||||
LBB26_16:
|
|
||||||
ADDB $48, AX
|
|
||||||
MOVLQSX R10, SI
|
|
||||||
MOVB AX, 0(DI)(SI*1)
|
|
||||||
DECL R10
|
|
||||||
|
|
||||||
LBB26_22:
|
LBB26_22:
|
||||||
CMPQ CX, $9
|
MOVL 800(DI), AX
|
||||||
JBE LBB26_23
|
ADDL R8, AX
|
||||||
|
CMPL AX, $801
|
||||||
|
MOVL $800, CX
|
||||||
|
WORD $0x4c0f; BYTE $0xc8 // cmovll %eax, %ecx
|
||||||
|
MOVL CX, 800(DI)
|
||||||
|
ADDL R8, 804(DI)
|
||||||
|
BYTE $0x5b // popq %rbx
|
||||||
|
WORD $0x5e41 // popq %r14
|
||||||
|
WORD $0x5f41 // popq %r15
|
||||||
|
BYTE $0x5d // popq %rbp
|
||||||
|
JMP _trim
|
||||||
|
|
||||||
|
LBB26_13:
|
||||||
|
SARQ $32, R10
|
||||||
|
JMP LBB26_14
|
||||||
|
|
||||||
LBB26_15:
|
LBB26_15:
|
||||||
|
ADDB $48, AX
|
||||||
|
MOVB AX, -1(DI)(R10*1)
|
||||||
|
|
||||||
|
LBB26_21:
|
||||||
|
DECQ R10
|
||||||
|
CMPQ CX, $9
|
||||||
|
JBE LBB26_22
|
||||||
|
|
||||||
|
LBB26_14:
|
||||||
MOVQ DX, CX
|
MOVQ DX, CX
|
||||||
MOVQ DX, AX
|
MOVQ DX, AX
|
||||||
MULQ R11
|
MULQ R11
|
||||||
|
|
@ -6643,22 +6619,16 @@ LBB26_15:
|
||||||
LEAQ 0(AX)(AX*4), SI
|
LEAQ 0(AX)(AX*4), SI
|
||||||
MOVQ CX, AX
|
MOVQ CX, AX
|
||||||
SUBQ SI, AX
|
SUBQ SI, AX
|
||||||
CMPL R10, $799
|
CMPQ R10, $800
|
||||||
JLE LBB26_16
|
JLE LBB26_15
|
||||||
TESTQ AX, AX
|
TESTQ AX, AX
|
||||||
JE LBB26_22
|
JE LBB26_21
|
||||||
MOVL $1, 812(DI)
|
MOVL $1, 812(DI)
|
||||||
JMP LBB26_22
|
JMP LBB26_21
|
||||||
|
|
||||||
LBB26_8:
|
LBB26_5:
|
||||||
JLE LBB26_9
|
JL LBB26_7
|
||||||
JMP LBB26_10
|
JMP LBB26_8
|
||||||
|
|
||||||
LBB26_28:
|
|
||||||
MOVL $0, 804(DI)
|
|
||||||
BYTE $0x5b // popq %rbx
|
|
||||||
BYTE $0x5d // popq %rbp
|
|
||||||
RET
|
|
||||||
|
|
||||||
_right_shift:
|
_right_shift:
|
||||||
BYTE $0x55 // pushq %rbp
|
BYTE $0x55 // pushq %rbp
|
||||||
|
|
@ -6794,6 +6764,36 @@ LBB27_23:
|
||||||
BYTE $0x5d // popq %rbp
|
BYTE $0x5d // popq %rbp
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
_trim:
|
||||||
|
BYTE $0x55 // pushq %rbp
|
||||||
|
WORD $0x8948; BYTE $0xe5 // movq %rsp, %rbp
|
||||||
|
MOVL 800(DI), AX
|
||||||
|
TESTL AX, AX
|
||||||
|
JLE LBB28_4
|
||||||
|
LEAQ 1(AX), CX
|
||||||
|
|
||||||
|
LBB28_2:
|
||||||
|
DECL AX
|
||||||
|
CMPB 0(DI)(AX*1), $48
|
||||||
|
JNE LBB28_6
|
||||||
|
MOVL AX, 800(DI)
|
||||||
|
DECQ CX
|
||||||
|
CMPQ CX, $1
|
||||||
|
JG LBB28_2
|
||||||
|
|
||||||
|
LBB28_4:
|
||||||
|
TESTL AX, AX
|
||||||
|
JE LBB28_5
|
||||||
|
|
||||||
|
LBB28_6:
|
||||||
|
BYTE $0x5d // popq %rbp
|
||||||
|
RET
|
||||||
|
|
||||||
|
LBB28_5:
|
||||||
|
MOVL $0, 804(DI)
|
||||||
|
BYTE $0x5d // popq %rbp
|
||||||
|
RET
|
||||||
|
|
||||||
_POW10_M128_TAB:
|
_POW10_M128_TAB:
|
||||||
QUAD $0x1732c869cd60e453 // .quad 1671618768450675795
|
QUAD $0x1732c869cd60e453 // .quad 1671618768450675795
|
||||||
QUAD $0xfa8fd5a0081c0288 // .quad -391859759250406776
|
QUAD $0xfa8fd5a0081c0288 // .quad -391859759250406776
|
||||||
|
|
@ -13367,7 +13367,7 @@ TEXT ·__skip_array(SB), NOSPLIT, $0 - 32
|
||||||
MOVQ s+0(FP), DI
|
MOVQ s+0(FP), DI
|
||||||
MOVQ p+8(FP), SI
|
MOVQ p+8(FP), SI
|
||||||
MOVQ m+16(FP), DX
|
MOVQ m+16(FP), DX
|
||||||
CALL ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+18358(SB) // _skip_array
|
CALL ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+18308(SB) // _skip_array
|
||||||
MOVQ AX, ret+24(FP)
|
MOVQ AX, ret+24(FP)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
@ -13375,7 +13375,7 @@ TEXT ·__skip_object(SB), NOSPLIT, $0 - 32
|
||||||
MOVQ s+0(FP), DI
|
MOVQ s+0(FP), DI
|
||||||
MOVQ p+8(FP), SI
|
MOVQ p+8(FP), SI
|
||||||
MOVQ m+16(FP), DX
|
MOVQ m+16(FP), DX
|
||||||
CALL ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+18393(SB) // _skip_object
|
CALL ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+18343(SB) // _skip_object
|
||||||
MOVQ AX, ret+24(FP)
|
MOVQ AX, ret+24(FP)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
@ -13383,7 +13383,7 @@ TEXT ·__skip_one(SB), NOSPLIT, $0 - 32
|
||||||
MOVQ s+0(FP), DI
|
MOVQ s+0(FP), DI
|
||||||
MOVQ p+8(FP), SI
|
MOVQ p+8(FP), SI
|
||||||
MOVQ m+16(FP), DX
|
MOVQ m+16(FP), DX
|
||||||
CALL ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+15558(SB) // _skip_one
|
CALL ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+15508(SB) // _skip_one
|
||||||
MOVQ AX, ret+24(FP)
|
MOVQ AX, ret+24(FP)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
@ -13410,7 +13410,7 @@ TEXT ·__value(SB), NOSPLIT, $0 - 48
|
||||||
MOVQ p+16(FP), DX
|
MOVQ p+16(FP), DX
|
||||||
MOVQ v+24(FP), CX
|
MOVQ v+24(FP), CX
|
||||||
MOVQ allow_control+32(FP), R8
|
MOVQ allow_control+32(FP), R8
|
||||||
CALL ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+11282(SB) // _value
|
CALL ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+11232(SB) // _value
|
||||||
MOVQ AX, ret+40(FP)
|
MOVQ AX, ret+40(FP)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
@ -13418,26 +13418,26 @@ TEXT ·__vnumber(SB), NOSPLIT, $0 - 24
|
||||||
MOVQ s+0(FP), DI
|
MOVQ s+0(FP), DI
|
||||||
MOVQ p+8(FP), SI
|
MOVQ p+8(FP), SI
|
||||||
MOVQ v+16(FP), DX
|
MOVQ v+16(FP), DX
|
||||||
LEAQ ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+13846(SB), AX // _vnumber
|
LEAQ ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+13796(SB), AX // _vnumber
|
||||||
JMP AX
|
JMP AX
|
||||||
|
|
||||||
TEXT ·__vsigned(SB), NOSPLIT, $0 - 24
|
TEXT ·__vsigned(SB), NOSPLIT, $0 - 24
|
||||||
MOVQ s+0(FP), DI
|
MOVQ s+0(FP), DI
|
||||||
MOVQ p+8(FP), SI
|
MOVQ p+8(FP), SI
|
||||||
MOVQ v+16(FP), DX
|
MOVQ v+16(FP), DX
|
||||||
LEAQ ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+15008(SB), AX // _vsigned
|
LEAQ ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+14958(SB), AX // _vsigned
|
||||||
JMP AX
|
JMP AX
|
||||||
|
|
||||||
TEXT ·__vstring(SB), NOSPLIT, $0 - 24
|
TEXT ·__vstring(SB), NOSPLIT, $0 - 24
|
||||||
MOVQ s+0(FP), DI
|
MOVQ s+0(FP), DI
|
||||||
MOVQ p+8(FP), SI
|
MOVQ p+8(FP), SI
|
||||||
MOVQ v+16(FP), DX
|
MOVQ v+16(FP), DX
|
||||||
LEAQ ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+12993(SB), AX // _vstring
|
LEAQ ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+12943(SB), AX // _vstring
|
||||||
JMP AX
|
JMP AX
|
||||||
|
|
||||||
TEXT ·__vunsigned(SB), NOSPLIT, $0 - 24
|
TEXT ·__vunsigned(SB), NOSPLIT, $0 - 24
|
||||||
MOVQ s+0(FP), DI
|
MOVQ s+0(FP), DI
|
||||||
MOVQ p+8(FP), SI
|
MOVQ p+8(FP), SI
|
||||||
MOVQ v+16(FP), DX
|
MOVQ v+16(FP), DX
|
||||||
LEAQ ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+15285(SB), AX // _vunsigned
|
LEAQ ·___asm2asm_compiled_code__DO_NOT_CALL_THIS_SYMBOL___+15235(SB), AX // _vunsigned
|
||||||
JMP AX
|
JMP AX
|
||||||
|
|
|
||||||
|
|
@ -19,16 +19,16 @@ var (
|
||||||
_subr__lspace = **(**uintptr)(unsafe.Pointer(&_func__base)) + 366
|
_subr__lspace = **(**uintptr)(unsafe.Pointer(&_func__base)) + 366
|
||||||
_subr__lzero = **(**uintptr)(unsafe.Pointer(&_func__base)) + 0
|
_subr__lzero = **(**uintptr)(unsafe.Pointer(&_func__base)) + 0
|
||||||
_subr__quote = **(**uintptr)(unsafe.Pointer(&_func__base)) + 5202
|
_subr__quote = **(**uintptr)(unsafe.Pointer(&_func__base)) + 5202
|
||||||
_subr__skip_array = **(**uintptr)(unsafe.Pointer(&_func__base)) + 18358
|
_subr__skip_array = **(**uintptr)(unsafe.Pointer(&_func__base)) + 18308
|
||||||
_subr__skip_object = **(**uintptr)(unsafe.Pointer(&_func__base)) + 18393
|
_subr__skip_object = **(**uintptr)(unsafe.Pointer(&_func__base)) + 18343
|
||||||
_subr__skip_one = **(**uintptr)(unsafe.Pointer(&_func__base)) + 15558
|
_subr__skip_one = **(**uintptr)(unsafe.Pointer(&_func__base)) + 15508
|
||||||
_subr__u64toa = **(**uintptr)(unsafe.Pointer(&_func__base)) + 3882
|
_subr__u64toa = **(**uintptr)(unsafe.Pointer(&_func__base)) + 3882
|
||||||
_subr__unquote = **(**uintptr)(unsafe.Pointer(&_func__base)) + 7039
|
_subr__unquote = **(**uintptr)(unsafe.Pointer(&_func__base)) + 7039
|
||||||
_subr__value = **(**uintptr)(unsafe.Pointer(&_func__base)) + 11282
|
_subr__value = **(**uintptr)(unsafe.Pointer(&_func__base)) + 11232
|
||||||
_subr__vnumber = **(**uintptr)(unsafe.Pointer(&_func__base)) + 13846
|
_subr__vnumber = **(**uintptr)(unsafe.Pointer(&_func__base)) + 13796
|
||||||
_subr__vsigned = **(**uintptr)(unsafe.Pointer(&_func__base)) + 15008
|
_subr__vsigned = **(**uintptr)(unsafe.Pointer(&_func__base)) + 14958
|
||||||
_subr__vstring = **(**uintptr)(unsafe.Pointer(&_func__base)) + 12993
|
_subr__vstring = **(**uintptr)(unsafe.Pointer(&_func__base)) + 12943
|
||||||
_subr__vunsigned = **(**uintptr)(unsafe.Pointer(&_func__base)) + 15285
|
_subr__vunsigned = **(**uintptr)(unsafe.Pointer(&_func__base)) + 15235
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
||||||
|
|
@ -54,9 +54,9 @@ static inline u128_output mul_u64(uint64_t x, uint64_t y) {
|
||||||
/* This is Eisel Lemire ParseFloat algorithm implemented in C.
|
/* This is Eisel Lemire ParseFloat algorithm implemented in C.
|
||||||
* reference: https://nigeltao.github.io/blog/2020/eisel-lemire.html
|
* reference: https://nigeltao.github.io/blog/2020/eisel-lemire.html
|
||||||
*/
|
*/
|
||||||
int atof_eisel_lemire64(uint64_t mant, int exp10, int sgn, double *val) {
|
bool atof_eisel_lemire64(uint64_t mant, int exp10, int sgn, double *val) {
|
||||||
if (exp10 < -348 || exp10 > 347) {
|
if (exp10 < -348 || exp10 > 347) {
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calculate the 2-base exponent of float */
|
/* Calculate the 2-base exponent of float */
|
||||||
|
|
@ -78,7 +78,7 @@ int atof_eisel_lemire64(uint64_t mant, int exp10, int sgn, double *val) {
|
||||||
*/
|
*/
|
||||||
if ((x_hi & 0x1FF) == 0x1FF && (x_lo + mant) < mant) {
|
if ((x_hi & 0x1FF) == 0x1FF && (x_lo + mant) < mant) {
|
||||||
/* lower 64 bits of POW10 mantissa */
|
/* lower 64 bits of POW10 mantissa */
|
||||||
u128_output y = mul_u64(mant, POW10_M128_TAB[exp10 + 347][0]);
|
u128_output y = mul_u64(mant, POW10_M128_TAB[exp10 + 348][0]);
|
||||||
uint64_t merged_hi = x_hi;
|
uint64_t merged_hi = x_hi;
|
||||||
uint64_t merged_lo = x_lo + y.hi;
|
uint64_t merged_lo = x_lo + y.hi;
|
||||||
|
|
||||||
|
|
@ -89,7 +89,7 @@ int atof_eisel_lemire64(uint64_t mant, int exp10, int sgn, double *val) {
|
||||||
|
|
||||||
/* Still ambigunous */
|
/* Still ambigunous */
|
||||||
if ((merged_hi & 0x1FF) == 0x1FF && (merged_lo + 1) == 0 && (y.lo + mant) < mant) {
|
if ((merged_hi & 0x1FF) == 0x1FF && (merged_lo + 1) == 0 && (y.lo + mant) < mant) {
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
x_hi = merged_hi;
|
x_hi = merged_hi;
|
||||||
|
|
@ -103,7 +103,7 @@ int atof_eisel_lemire64(uint64_t mant, int exp10, int sgn, double *val) {
|
||||||
|
|
||||||
/* Half-way Ambiguity */
|
/* Half-way Ambiguity */
|
||||||
if ((x_lo == 0) && ((x_hi & 0x1FF) == 0) && ((ret_man & 3) == 1)) {
|
if ((x_lo == 0) && ((x_hi & 0x1FF) == 0) && ((ret_man & 3) == 1)) {
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If not half-way, then it's rounding to-nearest
|
/* If not half-way, then it's rounding to-nearest
|
||||||
|
|
@ -121,17 +121,17 @@ int atof_eisel_lemire64(uint64_t mant, int exp10, int sgn, double *val) {
|
||||||
* ret_exp2 >= 0x7FF means INF/inf.
|
* ret_exp2 >= 0x7FF means INF/inf.
|
||||||
*/
|
*/
|
||||||
if ((ret_exp2 - 1) >= (0x7FF - 1)) {
|
if ((ret_exp2 - 1) >= (0x7FF - 1)) {
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the lower 52 bits as finnal mantissa */
|
/* Get the lower 52 bits as finnal mantissa */
|
||||||
uint64_t bits = (ret_exp2 << 52) | (ret_man & 0x000FFFFFFFFFFFFF);
|
uint64_t bits = (ret_exp2 << 52) | (ret_man & 0x000FFFFFFFFFFFFF);
|
||||||
if (sgn == -1) {
|
if (sgn == -1) {
|
||||||
bits |= ((uint64_t)1) << 63;
|
bits |= 1ull << 63;
|
||||||
}
|
}
|
||||||
*(int64_t*)val = bits;
|
*(int64_t*)val = bits;
|
||||||
|
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,10 +70,7 @@ static inline void decimal_set(Decimal *d, const char *s, int len) {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
decimal_init(d);
|
decimal_init(d);
|
||||||
if (s[i] == '+') {
|
if (s[i] == '-') {
|
||||||
i++;
|
|
||||||
}
|
|
||||||
else if (s[i] == '-') {
|
|
||||||
i++;
|
i++;
|
||||||
d->neg = 1;
|
d->neg = 1;
|
||||||
}
|
}
|
||||||
|
|
@ -144,14 +141,14 @@ static inline void right_shift(Decimal *d, uint32_t k) {
|
||||||
uint64_t n = 0;
|
uint64_t n = 0;
|
||||||
|
|
||||||
/* Pick up enough leading digits to cover first shift */
|
/* Pick up enough leading digits to cover first shift */
|
||||||
for (; n>>k == 0; r++) {
|
for (; n >> k == 0; r++) {
|
||||||
if (r >= d->nd) {
|
if (r >= d->nd) {
|
||||||
if (n == 0) {
|
if (n == 0) {
|
||||||
d->nd = 0; // no digits for this num
|
d->nd = 0; // no digits for this num
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* until n has enough bits for right shift */
|
/* until n has enough bits for right shift */
|
||||||
while (n>>k == 0) {
|
while (n >> k == 0) {
|
||||||
n *= 10;
|
n *= 10;
|
||||||
r++;
|
r++;
|
||||||
}
|
}
|
||||||
|
|
@ -161,7 +158,7 @@ static inline void right_shift(Decimal *d, uint32_t k) {
|
||||||
}
|
}
|
||||||
d->dp -= r - 1; // point shift left
|
d->dp -= r - 1; // point shift left
|
||||||
|
|
||||||
uint64_t mask = (((uint64_t)1) << k) - 1;
|
uint64_t mask = (1ull << k) - 1;
|
||||||
uint64_t dig = 0;
|
uint64_t dig = 0;
|
||||||
|
|
||||||
/* Pick up a digit, put down a digit */
|
/* Pick up a digit, put down a digit */
|
||||||
|
|
@ -191,44 +188,41 @@ static inline void right_shift(Decimal *d, uint32_t k) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Compare the leading prefix, if b is lexicographically less, return 0 */
|
/* Compare the leading prefix, if b is lexicographically less, return 0 */
|
||||||
static inline int prefix_cmp(const char *b, const char *s, uint64_t len) {
|
static inline bool prefix_is_less(const char *b, const char *s, uint64_t bn) {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
for (; i < bn; i++) {
|
||||||
for (; i < len; i++) {
|
if (s[i] == '\0') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (b[i] != s[i]) {
|
if (b[i] != s[i]) {
|
||||||
return b[i] > s[i];
|
return b[i] < s[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* when b is substr of s */
|
return s[i] != '\0';
|
||||||
if (i < DECIMAL_MAX_DNUM && s[i] >= '0' && s[i] <= '9') {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Binary shift left (* 2) by k bits. k <= maxShift to avoid overflow */
|
/* Binary shift left (* 2) by k bits. k <= maxShift to avoid overflow */
|
||||||
static inline void left_shift(Decimal *d, uint32_t k) {
|
static inline void left_shift(Decimal *d, uint32_t k) {
|
||||||
int delta = LSHIFT_TAB[k].delta;
|
int delta = LSHIFT_TAB[k].delta;
|
||||||
|
|
||||||
if (prefix_cmp(d->d, LSHIFT_TAB[k].cutoff, d->nd) == 0){
|
if (prefix_is_less(d->d, LSHIFT_TAB[k].cutoff, d->nd)){
|
||||||
delta--;
|
delta--;
|
||||||
}
|
}
|
||||||
|
|
||||||
int r = d->nd - 1; // read index
|
int r = d->nd; // read index
|
||||||
int w = d->nd + delta - 1; // write index
|
int w = d->nd + delta; // write index
|
||||||
uint64_t n = 0;
|
uint64_t n = 0;
|
||||||
uint64_t quo = 0;
|
uint64_t quo = 0;
|
||||||
uint64_t rem = 0;
|
uint64_t rem = 0;
|
||||||
|
|
||||||
/* Pick up a digit, put down a digit */
|
/* Pick up a digit, put down a digit */
|
||||||
for (; r >= 0; r--) {
|
for (r--; r >= 0; r--) {
|
||||||
n += (uint64_t)(d->d[r] - '0') << k;
|
n += (uint64_t)(d->d[r] - '0') << k;
|
||||||
quo = n / 10;
|
quo = n / 10;
|
||||||
rem = n - 10 * quo;
|
rem = n - 10 * quo;
|
||||||
|
w--;
|
||||||
if (w < DECIMAL_MAX_DNUM) {
|
if (w < DECIMAL_MAX_DNUM) {
|
||||||
d->d[w] = (char)(rem + '0');
|
d->d[w] = (char)(rem + '0');
|
||||||
w--;
|
|
||||||
} else if (rem != 0) {
|
} else if (rem != 0) {
|
||||||
/* truncated */
|
/* truncated */
|
||||||
d->trunc = 1;
|
d->trunc = 1;
|
||||||
|
|
@ -240,9 +234,9 @@ static inline void left_shift(Decimal *d, uint32_t k) {
|
||||||
while (n > 0) {
|
while (n > 0) {
|
||||||
quo = n / 10;
|
quo = n / 10;
|
||||||
rem = n - 10 * quo;
|
rem = n - 10 * quo;
|
||||||
|
w--;
|
||||||
if (w < DECIMAL_MAX_DNUM) {
|
if (w < DECIMAL_MAX_DNUM) {
|
||||||
d->d[w] = (char)(rem + '0');
|
d->d[w] = (char)(rem + '0');
|
||||||
w--;
|
|
||||||
} else if (rem != 0) {
|
} else if (rem != 0) {
|
||||||
/* truncated */
|
/* truncated */
|
||||||
d->trunc = 1;
|
d->trunc = 1;
|
||||||
|
|
@ -356,7 +350,7 @@ int decimal_to_f64(Decimal *d, double *val) {
|
||||||
decimal_shift(d, -n); // shift right
|
decimal_shift(d, -n); // shift right
|
||||||
exp2 += n;
|
exp2 += n;
|
||||||
}
|
}
|
||||||
while ((d->dp < 0) || (d->dp == 0) && (d->d[0] < '5')) { // d < 0.5
|
while ((d->dp < 0) || ((d->dp == 0) && (d->d[0] < '5'))) { // d < 0.5
|
||||||
if (-d->dp >= 9) {
|
if (-d->dp >= 9) {
|
||||||
n = 27;
|
n = 27;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -389,7 +383,7 @@ int decimal_to_f64(Decimal *d, double *val) {
|
||||||
mant = rounded_integer(d);
|
mant = rounded_integer(d);
|
||||||
|
|
||||||
/* Rounding might have added a bit; shift down. */
|
/* Rounding might have added a bit; shift down. */
|
||||||
if (mant == (((uint64_t)2) << 52)) { // mant has 54 bits
|
if (mant == (2ull << 52)) { // mant has 54 bits
|
||||||
mant >>= 1;
|
mant >>= 1;
|
||||||
exp2 ++;
|
exp2 ++;
|
||||||
if ((exp2 + 1023) >= 0x7FF) {
|
if ((exp2 + 1023) >= 0x7FF) {
|
||||||
|
|
@ -398,7 +392,7 @@ int decimal_to_f64(Decimal *d, double *val) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Denormalized? */
|
/* Denormalized? */
|
||||||
if ((mant & (((uint64_t)1) << 52)) == 0) {
|
if ((mant & (1ull << 52)) == 0) {
|
||||||
exp2 = -1023;
|
exp2 = -1023;
|
||||||
}
|
}
|
||||||
goto out;
|
goto out;
|
||||||
|
|
@ -413,7 +407,7 @@ out:
|
||||||
bits = mant & 0x000FFFFFFFFFFFFF;
|
bits = mant & 0x000FFFFFFFFFFFFF;
|
||||||
bits |= (uint64_t)((exp2 + 1023) & 0x7FF) << 52;
|
bits |= (uint64_t)((exp2 + 1023) & 0x7FF) << 52;
|
||||||
if (d->neg) {
|
if (d->neg) {
|
||||||
bits |= ((uint64_t)1) << 63;
|
bits |= 1ull << 63;
|
||||||
}
|
}
|
||||||
*(uint64_t*)val = bits;
|
*(uint64_t*)val = bits;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
|
|
@ -114,7 +114,7 @@ long skip_string(const GoString *src, long *p);
|
||||||
long skip_negative(const GoString *src, long *p);
|
long skip_negative(const GoString *src, long *p);
|
||||||
long skip_positive(const GoString *src, long *p);
|
long skip_positive(const GoString *src, long *p);
|
||||||
|
|
||||||
int atof_eisel_lemire64(uint64_t mant, int exp10, int sgn, double *val);
|
bool atof_eisel_lemire64(uint64_t mant, int exp10, int sgn, double *val);
|
||||||
double atof_native_decimal(const char *buf, int len);
|
double atof_native_decimal(const char *buf, int len);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -483,11 +483,11 @@ void vstring(const GoString *src, long *p, JsonState *ret) {
|
||||||
ret->iv = val;
|
ret->iv = val;
|
||||||
|
|
||||||
/** check whether float can represent the val exactly **/
|
/** check whether float can represent the val exactly **/
|
||||||
static inline int is_atof_exact(uint64_t man, int exp, int sgn, double *val) {
|
static inline bool is_atof_exact(uint64_t man, int exp, int sgn, double *val) {
|
||||||
double f = (double)man;
|
double f = (double)man;
|
||||||
|
|
||||||
if (man >> 52 != 0) {
|
if (man >> 52 != 0) {
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sgn == -1) {
|
if (sgn == -1) {
|
||||||
|
|
@ -497,7 +497,7 @@ static inline int is_atof_exact(uint64_t man, int exp, int sgn, double *val) {
|
||||||
|
|
||||||
if (exp == 0 || man == 0) {
|
if (exp == 0 || man == 0) {
|
||||||
*val = f;
|
*val = f;
|
||||||
return 1;
|
return true;
|
||||||
} else if (exp > 0 && exp <= 15+22) {
|
} else if (exp > 0 && exp <= 15+22) {
|
||||||
/* uint64 integers: accurate range <= 10^15 *
|
/* uint64 integers: accurate range <= 10^15 *
|
||||||
* Powers of 10: accurate range <= 10^22, as P10_TAB *
|
* Powers of 10: accurate range <= 10^22, as P10_TAB *
|
||||||
|
|
@ -509,17 +509,17 @@ static inline int is_atof_exact(uint64_t man, int exp, int sgn, double *val) {
|
||||||
|
|
||||||
/* f is not accurate when too larger */
|
/* f is not accurate when too larger */
|
||||||
if (f > 1e15 || f < -1e15) {
|
if (f > 1e15 || f < -1e15) {
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
*val = f * P10_TAB[exp];
|
*val = f * P10_TAB[exp];
|
||||||
return 1;
|
return true;
|
||||||
} else if (exp < 0 && exp >= -22) {
|
} else if (exp < 0 && exp >= -22) {
|
||||||
*val = f / P10_TAB[-exp];
|
*val = f / P10_TAB[-exp];
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline double parse_float64(uint64_t man, int exp, int sgn, int trunc, const GoString *src, long idx) {
|
static inline double parse_float64(uint64_t man, int exp, int sgn, int trunc, const GoString *src, long idx) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue