github.com/bytedance/sonic@v1.11.7-0.20240517092252-d2edb31b167b/internal/native/neon/u64toa_arm64.s (about)

     1  // +build !noasm !appengine
     2  // Code generated by asm2asm, DO NOT EDIT.
     3  
     4  #include "go_asm.h"
     5  #include "funcdata.h"
     6  #include "textflag.h"
     7  
     8  TEXT ·__u64toa_entry__(SB), NOSPLIT, $16
     9  	NO_LOCAL_POINTERS
    10  	WORD $0x100000a0 // adr x0, .+20
    11  	MOVD R0, ret(FP)
    12  	RET
    13  	  // .p2align 3, 0x00
    14  lCPI0_0:
    15  	WORD $0x147b20c5
    16  	WORD $0x80003334
    17  	// // .word 8389
    18  // .word 5243
    19  // .word 13108
    20  // .word 32768
    21  
    22  lCPI0_1:
    23  	WORD $0x08000080
    24  	WORD $0x80002000
    25  	// // .word 128
    26  // .word 2048
    27  // .word 8192
    28  // .word 32768
    29  
    30  lCPI0_2:
    31  	WORD $0x08040201
    32  	WORD $0x80402010
    33  	WORD $0x08040201
    34  	WORD $0x80402010
    35  	// // .byte 1
    36  // .byte 2
    37  // .byte 4
    38  // .byte 8
    39  // .byte 16
    40  // .byte 32
    41  // .byte 64
    42  // .byte 128
    43  // .byte 1
    44  // .byte 2
    45  // .byte 4
    46  // .byte 8
    47  // .byte 16
    48  // .byte 32
    49  // .byte 64
    50  // .byte 128
    51  
    52  lCPI0_3:
    53  	WORD $0x09010800
    54  	WORD $0x0b030a02
    55  	WORD $0x0d050c04
    56  	WORD $0x0f070e06
    57  	// // .byte 0
    58  // .byte 8
    59  // .byte 1
    60  // .byte 9
    61  // .byte 2
    62  // .byte 10
    63  // .byte 3
    64  // .byte 11
    65  // .byte 4
    66  // .byte 12
    67  // .byte 5
    68  // .byte 13
    69  // .byte 6
    70  // .byte 14
    71  // .byte 7
    72  // .byte 15
    73  
    74  _u64toa:
    75  	WORD $0xd10083ff  // sub	sp, sp, #32
    76  	WORD $0xa900fbfd  // stp	fp, lr, [sp, #8]
    77  	WORD $0xa93ffbfd  // stp	fp, lr, [sp, #-8]
    78  	WORD $0xd10023fd  // sub	fp, sp, #8
    79  	WORD $0xd344fc28  // lsr	x8, x1, #4
    80  	WORD $0xf109c11f  // cmp	x8, #624
    81  	WORD $0x540005e8  // b.hi	LBB0_9 $188(%rip)
    82  	WORD $0x53023c28  // ubfx	w8, w1, #2, #14
    83  	WORD $0x52828f69  // mov	w9, #5243
    84  	WORD $0x1b097d08  // mul	w8, w8, w9
    85  	WORD $0x53117d08  // lsr	w8, w8, #17
    86  	WORD $0xd37f7d09  // ubfiz	x9, x8, #1, #32
    87  	WORD $0x52800c8a  // mov	w10, #100
    88  	WORD $0x1b0a8508  // msub	w8, w8, w10, w1
    89  	WORD $0x92403d08  // and	x8, x8, #0xffff
    90  	WORD $0xd37ff908  // lsl	x8, x8, #1
    91  	WORD $0x710fa03f  // cmp	w1, #1000
    92  	WORD $0x540000e3  // b.lo	LBB0_3 $28(%rip)
    93  Lloh0:
    94  	WORD $0x10002aaa  // adr	x10, _Digits $1364(%rip)
    95  Lloh1:
    96  	WORD $0x9100014a  // add	x10, x10, _Digits@PAGEOFF $0(%rip)
    97  	WORD $0x3869694a  // ldrb	w10, [x10, x9]
    98  	WORD $0x3900000a  // strb	w10, [x0]
    99  	WORD $0x5280002a  // mov	w10, #1
   100  	WORD $0x14000004  // b	LBB0_5 $16(%rip)
   101  LBB0_3:
   102  	WORD $0x7101903f  // cmp	w1, #100
   103  	WORD $0x540002e3  // b.lo	LBB0_8 $92(%rip)
   104  	WORD $0x5280000a  // mov	w10, #0
   105  LBB0_5:
   106  Lloh2:
   107  	WORD $0x1000298b  // adr	x11, _Digits $1328(%rip)
   108  Lloh3:
   109  	WORD $0x9100016b  // add	x11, x11, _Digits@PAGEOFF $0(%rip)
   110  	WORD $0x8b294169  // add	x9, x11, w9, uxtw
   111  	WORD $0x3940052b  // ldrb	w11, [x9, #1]
   112  	WORD $0x11000549  // add	w9, w10, #1
   113  	WORD $0x382a480b  // strb	w11, [x0, w10, uxtw]
   114  LBB0_6:
   115  Lloh4:
   116  	WORD $0x100028ca  // adr	x10, _Digits $1304(%rip)
   117  Lloh5:
   118  	WORD $0x9100014a  // add	x10, x10, _Digits@PAGEOFF $0(%rip)
   119  	WORD $0x3868694b  // ldrb	w11, [x10, x8]
   120  	WORD $0x1100052a  // add	w10, w9, #1
   121  	WORD $0x3829480b  // strb	w11, [x0, w9, uxtw]
   122  LBB0_7:
   123  Lloh6:
   124  	WORD $0x10002829  // adr	x9, _Digits $1284(%rip)
   125  Lloh7:
   126  	WORD $0x91000129  // add	x9, x9, _Digits@PAGEOFF $0(%rip)
   127  	WORD $0x8b282128  // add	x8, x9, w8, uxth
   128  	WORD $0x39400509  // ldrb	w9, [x8, #1]
   129  	WORD $0x11000548  // add	w8, w10, #1
   130  	WORD $0x382a4809  // strb	w9, [x0, w10, uxtw]
   131  	WORD $0xaa0803e0  // mov	x0, x8
   132  	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
   133  	WORD $0x910083ff  // add	sp, sp, #32
   134  	WORD $0xd65f03c0  // ret
   135  LBB0_8:
   136  	WORD $0x52800009  // mov	w9, #0
   137  	WORD $0x5280000a  // mov	w10, #0
   138  	WORD $0x7100283f  // cmp	w1, #10
   139  	WORD $0x54fffdc2  // b.hs	LBB0_6 $-72(%rip)
   140  	WORD $0x17fffff2  // b	LBB0_7 $-56(%rip)
   141  LBB0_9:
   142  	WORD $0x529c2008  // mov	w8, #57600
   143  	WORD $0x72a0bea8  // movk	w8, #1525, lsl #16
   144  	WORD $0xeb08003f  // cmp	x1, x8
   145  	WORD $0x54000a02  // b.hs	LBB0_18 $320(%rip)
   146  	WORD $0x5282eb28  // mov	w8, #5977
   147  	WORD $0x72ba36e8  // movk	w8, #53687, lsl #16
   148  	WORD $0x92407c29  // and	x9, x1, #0xffffffff
   149  	WORD $0x9ba87d28  // umull	x8, w9, w8
   150  	WORD $0xd36dfd08  // lsr	x8, x8, #45
   151  	WORD $0x529bd06a  // mov	w10, #56963
   152  	WORD $0x72a8636a  // movk	w10, #17179, lsl #16
   153  	WORD $0x9baa7d29  // umull	x9, w9, w10
   154  	WORD $0xd371fd29  // lsr	x9, x9, #49
   155  	WORD $0x927f312a  // and	x10, x9, #0x3ffe
   156  	WORD $0x53023d09  // ubfx	w9, w8, #2, #14
   157  	WORD $0x52828f6b  // mov	w11, #5243
   158  	WORD $0x1b0b7d29  // mul	w9, w9, w11
   159  	WORD $0x53117d29  // lsr	w9, w9, #17
   160  	WORD $0x52800c8b  // mov	w11, #100
   161  	WORD $0x1b0ba129  // msub	w9, w9, w11, w8
   162  	WORD $0x92403d29  // and	x9, x9, #0xffff
   163  	WORD $0xd37ff929  // lsl	x9, x9, #1
   164  	WORD $0x5292d00b  // mov	w11, #38528
   165  	WORD $0x72a0130b  // movk	w11, #152, lsl #16
   166  	WORD $0x6b0b003f  // cmp	w1, w11
   167  	WORD $0x540000e3  // b.lo	LBB0_12 $28(%rip)
   168  Lloh8:
   169  	WORD $0x1000230b  // adr	x11, _Digits $1120(%rip)
   170  Lloh9:
   171  	WORD $0x9100016b  // add	x11, x11, _Digits@PAGEOFF $0(%rip)
   172  	WORD $0x386a696b  // ldrb	w11, [x11, x10]
   173  	WORD $0x3900000b  // strb	w11, [x0]
   174  	WORD $0x5280002c  // mov	w12, #1
   175  	WORD $0x14000006  // b	LBB0_14 $24(%rip)
   176  LBB0_12:
   177  	WORD $0x5288480b  // mov	w11, #16960
   178  	WORD $0x72a001eb  // movk	w11, #15, lsl #16
   179  	WORD $0x6b0b003f  // cmp	w1, w11
   180  	WORD $0x54000543  // b.lo	LBB0_17 $168(%rip)
   181  	WORD $0x5280000c  // mov	w12, #0
   182  LBB0_14:
   183  Lloh10:
   184  	WORD $0x100021ab  // adr	x11, _Digits $1076(%rip)
   185  Lloh11:
   186  	WORD $0x9100016b  // add	x11, x11, _Digits@PAGEOFF $0(%rip)
   187  	WORD $0x8b2a416a  // add	x10, x11, w10, uxtw
   188  	WORD $0x3940054a  // ldrb	w10, [x10, #1]
   189  	WORD $0x1100058b  // add	w11, w12, #1
   190  	WORD $0x382c480a  // strb	w10, [x0, w12, uxtw]
   191  LBB0_15:
   192  Lloh12:
   193  	WORD $0x100020ea  // adr	x10, _Digits $1052(%rip)
   194  Lloh13:
   195  	WORD $0x9100014a  // add	x10, x10, _Digits@PAGEOFF $0(%rip)
   196  	WORD $0x3869694c  // ldrb	w12, [x10, x9]
   197  	WORD $0x1100056a  // add	w10, w11, #1
   198  	WORD $0x382b480c  // strb	w12, [x0, w11, uxtw]
   199  LBB0_16:
   200  	WORD $0x5284e20b  // mov	w11, #10000
   201  	WORD $0x1b0b8508  // msub	w8, w8, w11, w1
   202  	WORD $0x53023d0b  // ubfx	w11, w8, #2, #14
   203  	WORD $0x52828f6c  // mov	w12, #5243
   204  	WORD $0x1b0c7d6b  // mul	w11, w11, w12
   205  	WORD $0x53117d6b  // lsr	w11, w11, #17
   206  	WORD $0x52800c8c  // mov	w12, #100
   207  	WORD $0x1b0ca168  // msub	w8, w11, w12, w8
   208  	WORD $0x92403d08  // and	x8, x8, #0xffff
   209  	WORD $0xd37ff908  // lsl	x8, x8, #1
   210  Lloh14:
   211  	WORD $0x10001f0c  // adr	x12, _Digits $992(%rip)
   212  Lloh15:
   213  	WORD $0x9100018c  // add	x12, x12, _Digits@PAGEOFF $0(%rip)
   214  	WORD $0x8b292189  // add	x9, x12, w9, uxth
   215  	WORD $0x39400529  // ldrb	w9, [x9, #1]
   216  	WORD $0x8b2a400d  // add	x13, x0, w10, uxtw
   217  	WORD $0x390001a9  // strb	w9, [x13]
   218  	WORD $0x786b5989  // ldrh	w9, [x12, w11, uxtw #1]
   219  	WORD $0x780011a9  // sturh	w9, [x13, #1]
   220  	WORD $0x38686989  // ldrb	w9, [x12, x8]
   221  	WORD $0x39000da9  // strb	w9, [x13, #3]
   222  	WORD $0x927f3908  // and	x8, x8, #0xfffe
   223  	WORD $0x8b080188  // add	x8, x12, x8
   224  	WORD $0x39400509  // ldrb	w9, [x8, #1]
   225  	WORD $0x11001548  // add	w8, w10, #5
   226  	WORD $0x390011a9  // strb	w9, [x13, #4]
   227  	WORD $0xaa0803e0  // mov	x0, x8
   228  	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
   229  	WORD $0x910083ff  // add	sp, sp, #32
   230  	WORD $0xd65f03c0  // ret
   231  LBB0_17:
   232  	WORD $0x5280000b  // mov	w11, #0
   233  	WORD $0x5280000a  // mov	w10, #0
   234  	WORD $0x53057c2c  // lsr	w12, w1, #5
   235  	WORD $0x7130d59f  // cmp	w12, #3125
   236  	WORD $0x54fffb42  // b.hs	LBB0_15 $-152(%rip)
   237  	WORD $0x17ffffde  // b	LBB0_16 $-136(%rip)
   238  LBB0_18:
   239  	WORD $0xd2adf82a  // mov	x10, #1874919424
   240  	WORD $0xf2d0de4a  // movk	x10, #34546, lsl #32
   241  	WORD $0xf2e0046a  // movk	x10, #35, lsl #48
   242  	WORD $0xeb0a003f  // cmp	x1, x10
   243  	WORD $0x54000bc2  // b.hs	LBB0_20 $376(%rip)
   244  	WORD $0xd299dfa9  // mov	x9, #52989
   245  	WORD $0xf2b08c29  // movk	x9, #33889, lsl #16
   246  	WORD $0xf2cee229  // movk	x9, #30481, lsl #32
   247  	WORD $0xf2f57989  // movk	x9, #43980, lsl #48
   248  	WORD $0x9bc97c29  // umulh	x9, x1, x9
   249  	WORD $0xd35afd29  // lsr	x9, x9, #26
   250  	WORD $0x1b088528  // msub	w8, w9, w8, w1
   251  	WORD $0x6f00e400  // movi.2d	v0, #0000000000000000
   252  	WORD $0x6f00e401  // movi.2d	v1, #0000000000000000
   253  	WORD $0x4e041d21  // mov.s	v1[0], w9
   254  	WORD $0x0ea12822  // xtn.2s	v2, v1
   255  	WORD $0x5282eb29  // mov	w9, #5977
   256  	WORD $0x72ba36e9  // movk	w9, #53687, lsl #16
   257  	WORD $0x0e040d23  // dup.2s	v3, w9
   258  	WORD $0x2ea3c042  // umull.2d	v2, v2, v3
   259  	WORD $0x6f530442  // ushr.2d	v2, v2, #45
   260  	WORD $0x0ea12844  // xtn.2s	v4, v2
   261  	WORD $0x5284e209  // mov	w9, #10000
   262  	WORD $0x0e040d25  // dup.2s	v5, w9
   263  	WORD $0x2ea5c084  // umull.2d	v4, v4, v5
   264  	WORD $0x6ea48421  // sub.4s	v1, v1, v4
   265  	WORD $0x4e413841  // zip1.8h	v1, v2, v1
   266  	WORD $0x4f425421  // shl.2d	v1, v1, #2
   267  	WORD $0x4e413821  // zip1.8h	v1, v1, v1
   268  	WORD $0x4e813821  // zip1.4s	v1, v1, v1
   269  Lloh16:
   270  	WORD $0x10ffe9c9  // adr	x9, lCPI0_0 $-712(%rip)
   271  Lloh17:
   272  	WORD $0xfd400122  // ldr	d2, [x9, lCPI0_0@PAGEOFF] $0(%rip)
   273  	WORD $0x2e62c024  // umull.4s	v4, v1, v2
   274  	WORD $0x6e014021  // ext.16b	v1, v1, v1, #8
   275  	WORD $0x2e62c021  // umull.4s	v1, v1, v2
   276  	WORD $0x4e415881  // uzp2.8h	v1, v4, v1
   277  Lloh18:
   278  	WORD $0x10ffe949  // adr	x9, lCPI0_1 $-728(%rip)
   279  Lloh19:
   280  	WORD $0xfd400124  // ldr	d4, [x9, lCPI0_1@PAGEOFF] $0(%rip)
   281  	WORD $0x2e64c026  // umull.4s	v6, v1, v4
   282  	WORD $0x6e014021  // ext.16b	v1, v1, v1, #8
   283  	WORD $0x2e64c021  // umull.4s	v1, v1, v4
   284  	WORD $0x4e4158c1  // uzp2.8h	v1, v6, v1
   285  	WORD $0x4f008546  // movi.8h	v6, #10
   286  	WORD $0x4e669c27  // mul.8h	v7, v1, v6
   287  	WORD $0x4f5054e7  // shl.2d	v7, v7, #16
   288  	WORD $0x6e678421  // sub.8h	v1, v1, v7
   289  	WORD $0x4e041d00  // mov.s	v0[0], w8
   290  	WORD $0x0ea12807  // xtn.2s	v7, v0
   291  	WORD $0x2ea3c0e3  // umull.2d	v3, v7, v3
   292  	WORD $0x6f530463  // ushr.2d	v3, v3, #45
   293  	WORD $0x0ea12867  // xtn.2s	v7, v3
   294  	WORD $0x2ea5c0e5  // umull.2d	v5, v7, v5
   295  	WORD $0x6ea58400  // sub.4s	v0, v0, v5
   296  	WORD $0x4e403860  // zip1.8h	v0, v3, v0
   297  	WORD $0x4f425400  // shl.2d	v0, v0, #2
   298  	WORD $0x4e403800  // zip1.8h	v0, v0, v0
   299  	WORD $0x4e803800  // zip1.4s	v0, v0, v0
   300  	WORD $0x2e62c003  // umull.4s	v3, v0, v2
   301  	WORD $0x6e004000  // ext.16b	v0, v0, v0, #8
   302  	WORD $0x2e62c000  // umull.4s	v0, v0, v2
   303  	WORD $0x4e405860  // uzp2.8h	v0, v3, v0
   304  	WORD $0x2e64c002  // umull.4s	v2, v0, v4
   305  	WORD $0x6e004000  // ext.16b	v0, v0, v0, #8
   306  	WORD $0x2e64c000  // umull.4s	v0, v0, v4
   307  	WORD $0x4e405840  // uzp2.8h	v0, v2, v0
   308  	WORD $0x4e669c02  // mul.8h	v2, v0, v6
   309  	WORD $0x4f505442  // shl.2d	v2, v2, #16
   310  	WORD $0x6e628400  // sub.8h	v0, v0, v2
   311  	WORD $0x2e212821  // sqxtun.8b	v1, v1
   312  	WORD $0x6e212801  // sqxtun2.16b	v1, v0
   313  	WORD $0x4f01e600  // movi.16b	v0, #48
   314  	WORD $0x4e208420  // add.16b	v0, v1, v0
   315  	WORD $0x4e209821  // cmeq.16b	v1, v1, #0
   316  Lloh20:
   317  	WORD $0x10ffe4e8  // adr	x8, lCPI0_2 $-868(%rip)
   318  Lloh21:
   319  	WORD $0x3dc00102  // ldr	q2, [x8, lCPI0_2@PAGEOFF] $0(%rip)
   320  	WORD $0x4e221c21  // and.16b	v1, v1, v2
   321  Lloh22:
   322  	WORD $0x10ffe508  // adr	x8, lCPI0_3 $-864(%rip)
   323  Lloh23:
   324  	WORD $0x3dc00102  // ldr	q2, [x8, lCPI0_3@PAGEOFF] $0(%rip)
   325  	WORD $0x4e020021  // tbl.16b	v1, { v1 }, v2
   326  	WORD $0x4e71b821  // addv.8h	h1, v1
   327  	WORD $0x1e260028  // fmov	w8, s1
   328  	WORD $0x2a2803e8  // mvn	w8, w8
   329  	WORD $0x32114108  // orr	w8, w8, #0xffff8000
   330  	WORD $0x5ac00108  // rbit	w8, w8
   331  	WORD $0x5ac01108  // clz	w8, w8
   332  Lloh24:
   333  	WORD $0x100017e9  // adr	x9, _VecShiftShuffles $764(%rip)
   334  Lloh25:
   335  	WORD $0x91000129  // add	x9, x9, _VecShiftShuffles@PAGEOFF $0(%rip)
   336  	WORD $0x3ce85921  // ldr	q1, [x9, w8, uxtw #4]
   337  	WORD $0x4f04e5e2  // movi.16b	v2, #143
   338  	WORD $0x4e221c21  // and.16b	v1, v1, v2
   339  	WORD $0x4e010000  // tbl.16b	v0, { v0 }, v1
   340  	WORD $0x3d800000  // str	q0, [x0]
   341  	WORD $0x52800209  // mov	w9, #16
   342  	WORD $0x4b080128  // sub	w8, w9, w8
   343  	WORD $0xaa0803e0  // mov	x0, x8
   344  	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
   345  	WORD $0x910083ff  // add	sp, sp, #32
   346  	WORD $0xd65f03c0  // ret
   347  LBB0_20:
   348  	WORD $0xd28f0ae9  // mov	x9, #30807
   349  	WORD $0xf2b62269  // movk	x9, #45331, lsl #16
   350  	WORD $0xf2cca5e9  // movk	x9, #25903, lsl #32
   351  	WORD $0xf2e734a9  // movk	x9, #14757, lsl #48
   352  	WORD $0x9bc97c29  // umulh	x9, x1, x9
   353  	WORD $0xd373fd2b  // lsr	x11, x9, #51
   354  	WORD $0x7100257f  // cmp	w11, #9
   355  	WORD $0x540000a8  // b.hi	LBB0_22 $20(%rip)
   356  	WORD $0x1100c169  // add	w9, w11, #48
   357  	WORD $0x39000009  // strb	w9, [x0]
   358  	WORD $0x52800029  // mov	w9, #1
   359  	WORD $0x14000028  // b	LBB0_27 $160(%rip)
   360  LBB0_22:
   361  	WORD $0x71018d7f  // cmp	w11, #99
   362  	WORD $0x540000e8  // b.hi	LBB0_24 $28(%rip)
   363  Lloh26:
   364  	WORD $0x10000de9  // adr	x9, _Digits $444(%rip)
   365  Lloh27:
   366  	WORD $0x91000129  // add	x9, x9, _Digits@PAGEOFF $0(%rip)
   367  	WORD $0x786b5929  // ldrh	w9, [x9, w11, uxtw #1]
   368  	WORD $0x79000009  // strh	w9, [x0]
   369  	WORD $0x52800049  // mov	w9, #2
   370  	WORD $0x14000020  // b	LBB0_27 $128(%rip)
   371  LBB0_24:
   372  	WORD $0x5280a3e9  // mov	w9, #1311
   373  	WORD $0x1b097d69  // mul	w9, w11, w9
   374  	WORD $0x53117d29  // lsr	w9, w9, #17
   375  	WORD $0x710f9d7f  // cmp	w11, #999
   376  	WORD $0x54000188  // b.hi	LBB0_26 $48(%rip)
   377  	WORD $0x1100c12c  // add	w12, w9, #48
   378  	WORD $0x3900000c  // strb	w12, [x0]
   379  	WORD $0x52800c8c  // mov	w12, #100
   380  	WORD $0x1b0cad29  // msub	w9, w9, w12, w11
   381  	WORD $0x92403d29  // and	x9, x9, #0xffff
   382  Lloh28:
   383  	WORD $0x10000bec  // adr	x12, _Digits $380(%rip)
   384  Lloh29:
   385  	WORD $0x9100018c  // add	x12, x12, _Digits@PAGEOFF $0(%rip)
   386  	WORD $0x78697989  // ldrh	w9, [x12, x9, lsl #1]
   387  	WORD $0x78001009  // sturh	w9, [x0, #1]
   388  	WORD $0x52800069  // mov	w9, #3
   389  	WORD $0x14000010  // b	LBB0_27 $64(%rip)
   390  LBB0_26:
   391  Lloh30:
   392  	WORD $0x10000b2c  // adr	x12, _Digits $356(%rip)
   393  Lloh31:
   394  	WORD $0x9100018c  // add	x12, x12, _Digits@PAGEOFF $0(%rip)
   395  	WORD $0x7869598d  // ldrh	w13, [x12, w9, uxtw #1]
   396  	WORD $0x7900000d  // strh	w13, [x0]
   397  	WORD $0x52800c8d  // mov	w13, #100
   398  	WORD $0x1b0dad29  // msub	w9, w9, w13, w11
   399  	WORD $0x92403d29  // and	x9, x9, #0xffff
   400  	WORD $0xd37ff929  // lsl	x9, x9, #1
   401  	WORD $0x3869698d  // ldrb	w13, [x12, x9]
   402  	WORD $0x3900080d  // strb	w13, [x0, #2]
   403  	WORD $0x927f3929  // and	x9, x9, #0xfffe
   404  	WORD $0x8b090189  // add	x9, x12, x9
   405  	WORD $0x39400529  // ldrb	w9, [x9, #1]
   406  	WORD $0x39000c09  // strb	w9, [x0, #3]
   407  	WORD $0x52800089  // mov	w9, #4
   408  LBB0_27:
   409  	WORD $0x9b0a856a  // msub	x10, x11, x10, x1
   410  	WORD $0xd299dfab  // mov	x11, #52989
   411  	WORD $0xf2b08c2b  // movk	x11, #33889, lsl #16
   412  	WORD $0xf2cee22b  // movk	x11, #30481, lsl #32
   413  	WORD $0xf2f5798b  // movk	x11, #43980, lsl #48
   414  	WORD $0x9bcb7d4b  // umulh	x11, x10, x11
   415  	WORD $0xd35afd6b  // lsr	x11, x11, #26
   416  	WORD $0x6f00e400  // movi.2d	v0, #0000000000000000
   417  	WORD $0x6f00e401  // movi.2d	v1, #0000000000000000
   418  	WORD $0x4e041d61  // mov.s	v1[0], w11
   419  	WORD $0x5282eb2c  // mov	w12, #5977
   420  	WORD $0x72ba36ec  // movk	w12, #53687, lsl #16
   421  	WORD $0x0e040d82  // dup.2s	v2, w12
   422  	WORD $0x0ea12823  // xtn.2s	v3, v1
   423  	WORD $0x2ea2c063  // umull.2d	v3, v3, v2
   424  	WORD $0x6f530463  // ushr.2d	v3, v3, #45
   425  	WORD $0x5284e20c  // mov	w12, #10000
   426  	WORD $0x0e040d84  // dup.2s	v4, w12
   427  	WORD $0x0ea12865  // xtn.2s	v5, v3
   428  	WORD $0x2ea4c0a5  // umull.2d	v5, v5, v4
   429  	WORD $0x6ea58421  // sub.4s	v1, v1, v5
   430  	WORD $0x4e413861  // zip1.8h	v1, v3, v1
   431  	WORD $0x4f425421  // shl.2d	v1, v1, #2
   432  	WORD $0x4e413821  // zip1.8h	v1, v1, v1
   433  	WORD $0x4e813821  // zip1.4s	v1, v1, v1
   434  Lloh32:
   435  	WORD $0x10ffd7cc  // adr	x12, lCPI0_0 $-1288(%rip)
   436  Lloh33:
   437  	WORD $0xfd400183  // ldr	d3, [x12, lCPI0_0@PAGEOFF] $0(%rip)
   438  	WORD $0x2e63c025  // umull.4s	v5, v1, v3
   439  	WORD $0x6e014021  // ext.16b	v1, v1, v1, #8
   440  	WORD $0x2e63c021  // umull.4s	v1, v1, v3
   441  	WORD $0x4e4158a1  // uzp2.8h	v1, v5, v1
   442  Lloh34:
   443  	WORD $0x10ffd74c  // adr	x12, lCPI0_1 $-1304(%rip)
   444  Lloh35:
   445  	WORD $0xfd400185  // ldr	d5, [x12, lCPI0_1@PAGEOFF] $0(%rip)
   446  	WORD $0x2e65c026  // umull.4s	v6, v1, v5
   447  	WORD $0x6e014021  // ext.16b	v1, v1, v1, #8
   448  	WORD $0x2e65c021  // umull.4s	v1, v1, v5
   449  	WORD $0x4e4158c1  // uzp2.8h	v1, v6, v1
   450  	WORD $0x4f008546  // movi.8h	v6, #10
   451  	WORD $0x4e669c27  // mul.8h	v7, v1, v6
   452  	WORD $0x4f5054e7  // shl.2d	v7, v7, #16
   453  	WORD $0x6e678421  // sub.8h	v1, v1, v7
   454  	WORD $0x1b08a968  // msub	w8, w11, w8, w10
   455  	WORD $0x4e041d00  // mov.s	v0[0], w8
   456  	WORD $0x0ea12807  // xtn.2s	v7, v0
   457  	WORD $0x2ea2c0e2  // umull.2d	v2, v7, v2
   458  	WORD $0x6f530442  // ushr.2d	v2, v2, #45
   459  	WORD $0x0ea12847  // xtn.2s	v7, v2
   460  	WORD $0x2ea4c0e4  // umull.2d	v4, v7, v4
   461  	WORD $0x6ea48400  // sub.4s	v0, v0, v4
   462  	WORD $0x4e403840  // zip1.8h	v0, v2, v0
   463  	WORD $0x4f425400  // shl.2d	v0, v0, #2
   464  	WORD $0x4e403800  // zip1.8h	v0, v0, v0
   465  	WORD $0x4e803800  // zip1.4s	v0, v0, v0
   466  	WORD $0x2e63c002  // umull.4s	v2, v0, v3
   467  	WORD $0x6e004000  // ext.16b	v0, v0, v0, #8
   468  	WORD $0x2e63c000  // umull.4s	v0, v0, v3
   469  	WORD $0x4e405840  // uzp2.8h	v0, v2, v0
   470  	WORD $0x2e65c002  // umull.4s	v2, v0, v5
   471  	WORD $0x6e004000  // ext.16b	v0, v0, v0, #8
   472  	WORD $0x2e65c000  // umull.4s	v0, v0, v5
   473  	WORD $0x4e405840  // uzp2.8h	v0, v2, v0
   474  	WORD $0x4e669c02  // mul.8h	v2, v0, v6
   475  	WORD $0x4f505442  // shl.2d	v2, v2, #16
   476  	WORD $0x6e628400  // sub.8h	v0, v0, v2
   477  	WORD $0x2e212821  // sqxtun.8b	v1, v1
   478  	WORD $0x6e212801  // sqxtun2.16b	v1, v0
   479  	WORD $0x4f01e600  // movi.16b	v0, #48
   480  	WORD $0x4e208420  // add.16b	v0, v1, v0
   481  	WORD $0x3ca94800  // str	q0, [x0, w9, uxtw]
   482  	WORD $0x321c0128  // orr	w8, w9, #0x10
   483  	WORD $0xaa0803e0  // mov	x0, x8
   484  	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
   485  	WORD $0x910083ff  // add	sp, sp, #32
   486  	WORD $0xd65f03c0  // ret
   487  _Digits:
   488  	WORD $0x31303030  // .ascii 4, '0001020304050607'
   489  	WORD $0x33303230  // .ascii 4, '0203040506070809'
   490  	WORD $0x35303430  // .ascii 4, '0405060708091011'
   491  	WORD $0x37303630  // .ascii 4, '0607080910111213'
   492  	WORD $0x39303830  // .ascii 4, '0809101112131415'
   493  	WORD $0x31313031  // .ascii 4, '1011121314151617'
   494  	WORD $0x33313231  // .ascii 4, '1213141516171819'
   495  	WORD $0x35313431  // .ascii 4, '1415161718192021'
   496  	WORD $0x37313631  // .ascii 4, '1617181920212223'
   497  	WORD $0x39313831  // .ascii 4, '1819202122232425'
   498  	WORD $0x31323032  // .ascii 4, '2021222324252627'
   499  	WORD $0x33323232  // .ascii 4, '2223242526272829'
   500  	WORD $0x35323432  // .ascii 4, '2425262728293031'
   501  	WORD $0x37323632  // .ascii 4, '2627282930313233'
   502  	WORD $0x39323832  // .ascii 4, '2829303132333435'
   503  	WORD $0x31333033  // .ascii 4, '3031323334353637'
   504  	WORD $0x33333233  // .ascii 4, '3233343536373839'
   505  	WORD $0x35333433  // .ascii 4, '3435363738394041'
   506  	WORD $0x37333633  // .ascii 4, '3637383940414243'
   507  	WORD $0x39333833  // .ascii 4, '3839404142434445'
   508  	WORD $0x31343034  // .ascii 4, '4041424344454647'
   509  	WORD $0x33343234  // .ascii 4, '4243444546474849'
   510  	WORD $0x35343434  // .ascii 4, '4445464748495051'
   511  	WORD $0x37343634  // .ascii 4, '4647484950515253'
   512  	WORD $0x39343834  // .ascii 4, '4849505152535455'
   513  	WORD $0x31353035  // .ascii 4, '5051525354555657'
   514  	WORD $0x33353235  // .ascii 4, '5253545556575859'
   515  	WORD $0x35353435  // .ascii 4, '5455565758596061'
   516  	WORD $0x37353635  // .ascii 4, '5657585960616263'
   517  	WORD $0x39353835  // .ascii 4, '5859606162636465'
   518  	WORD $0x31363036  // .ascii 4, '6061626364656667'
   519  	WORD $0x33363236  // .ascii 4, '6263646566676869'
   520  	WORD $0x35363436  // .ascii 4, '6465666768697071'
   521  	WORD $0x37363636  // .ascii 4, '6667686970717273'
   522  	WORD $0x39363836  // .ascii 4, '6869707172737475'
   523  	WORD $0x31373037  // .ascii 4, '7071727374757677'
   524  	WORD $0x33373237  // .ascii 4, '7273747576777879'
   525  	WORD $0x35373437  // .ascii 4, '7475767778798081'
   526  	WORD $0x37373637  // .ascii 4, '7677787980818283'
   527  	WORD $0x39373837  // .ascii 4, '7879808182838485'
   528  	WORD $0x31383038  // .ascii 4, '8081828384858687'
   529  	WORD $0x33383238  // .ascii 4, '8283848586878889'
   530  	WORD $0x35383438  // .ascii 4, '8485868788899091'
   531  	WORD $0x37383638  // .ascii 4, '8687888990919293'
   532  	WORD $0x39383838  // .ascii 4, '8889909192939495'
   533  	WORD $0x31393039  // .ascii 4, '9091929394959697'
   534  	WORD $0x33393239  // .ascii 4, '9293949596979899'
   535  	WORD $0x35393439  // .ascii 4, '949596979899'
   536  	WORD $0x37393639  // .ascii 4, '96979899'
   537  	WORD $0x39393839  // .ascii 4, '9899'
   538  	WORD $0x00000000; WORD $0x00000000; WORD $0x00000000  // .p2align 4, 0x00
   539  _VecShiftShuffles:
   540  	WORD $0x03020100  // .ascii 4, '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
   541  	WORD $0x07060504  // .ascii 4, '\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x01\x02\x03\x04'
   542  	WORD $0x0b0a0908  // .ascii 4, '\x08\t\n\x0b\x0c\r\x0e\x0f\x01\x02\x03\x04\x05\x06\x07\x08'
   543  	WORD $0x0f0e0d0c  // .ascii 4, '\x0c\r\x0e\x0f\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c'
   544  	WORD $0x04030201  // .ascii 4, '\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff'
   545  	WORD $0x08070605  // .ascii 4, '\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\x02\x03\x04\x05'
   546  	WORD $0x0c0b0a09  // .ascii 4, '\t\n\x0b\x0c\r\x0e\x0f\xff\x02\x03\x04\x05\x06\x07\x08\t'
   547  	WORD $0xff0f0e0d  // .ascii 4, '\r\x0e\x0f\xff\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r'
   548  	WORD $0x05040302  // .ascii 4, '\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff'
   549  	WORD $0x09080706  // .ascii 4, '\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\x03\x04\x05\x06'
   550  	WORD $0x0d0c0b0a  // .ascii 4, '\n\x0b\x0c\r\x0e\x0f\xff\xff\x03\x04\x05\x06\x07\x08\t\n'
   551  	WORD $0xffff0f0e  // .ascii 4, '\x0e\x0f\xff\xff\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e'
   552  	WORD $0x06050403  // .ascii 4, '\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff'
   553  	WORD $0x0a090807  // .ascii 4, '\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\x04\x05\x06\x07'
   554  	WORD $0x0e0d0c0b  // .ascii 4, '\x0b\x0c\r\x0e\x0f\xff\xff\xff\x04\x05\x06\x07\x08\t\n\x0b'
   555  	WORD $0xffffff0f  // .ascii 4, '\x0f\xff\xff\xff\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
   556  	WORD $0x07060504  // .ascii 4, '\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff'
   557  	WORD $0x0b0a0908  // .ascii 4, '\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\x05\x06\x07\x08'
   558  	WORD $0x0f0e0d0c  // .ascii 4, '\x0c\r\x0e\x0f\xff\xff\xff\xff\x05\x06\x07\x08\t\n\x0b\x0c'
   559  	WORD $0xffffffff  // .ascii 4, '\xff\xff\xff\xff\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff'
   560  	WORD $0x08070605  // .ascii 4, '\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff'
   561  	WORD $0x0c0b0a09  // .ascii 4, '\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\x06\x07\x08\t'
   562  	WORD $0xff0f0e0d  // .ascii 4, '\r\x0e\x0f\xff\xff\xff\xff\xff\x06\x07\x08\t\n\x0b\x0c\r'
   563  	WORD $0xffffffff  // .ascii 4, '\xff\xff\xff\xff\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff'
   564  	WORD $0x09080706  // .ascii 4, '\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff'
   565  	WORD $0x0d0c0b0a  // .ascii 4, '\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\x07\x08\t\n'
   566  	WORD $0xffff0f0e  // .ascii 4, '\x0e\x0f\xff\xff\xff\xff\xff\xff\x07\x08\t\n\x0b\x0c\r\x0e'
   567  	WORD $0xffffffff  // .ascii 4, '\xff\xff\xff\xff\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff'
   568  	WORD $0x0a090807  // .ascii 4, '\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff'
   569  	WORD $0x0e0d0c0b  // .ascii 4, '\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\x08\t\n\x0b'
   570  	WORD $0xffffff0f  // .ascii 4, '\x0f\xff\xff\xff\xff\xff\xff\xff\x08\t\n\x0b\x0c\r\x0e\x0f'
   571  	WORD $0xffffffff  // .ascii 4, '\xff\xff\xff\xff\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff'
   572  	WORD $0x0b0a0908  // .ascii 4, '\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\xff'
   573  	WORD $0x0f0e0d0c  // .ascii 4, '\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\xff'
   574  	WORD $0xffffffff  // .ascii 4, '\xff\xff\xff\xff\xff\xff\xff\xff'
   575  	WORD $0xffffffff  // .ascii 4, '\xff\xff\xff\xff'
   576  
   577  TEXT ·__u64toa(SB), NOSPLIT, $0-24
   578  	NO_LOCAL_POINTERS
   579  
   580  _entry:
   581  	MOVD 16(g), R16
   582  	SUB $96, RSP, R17
   583  	CMP  R16, R17
   584  	BLS  _stack_grow
   585  
   586  _u64toa:
   587  	MOVD out+0(FP), R0
   588  	MOVD val+8(FP), R1
   589  	MOVD ·_subr__u64toa(SB), R11
   590  	WORD $0x1000005e // adr x30, .+8
   591  	JMP (R11)
   592  	MOVD R0, ret+16(FP)
   593  	RET
   594  
   595  _stack_grow:
   596  	MOVD R30, R3
   597  	CALL runtime·morestack_noctxt<>(SB)
   598  	JMP  _entry