...

Text file src/github.com/bytedance/sonic/internal/native/neon/i64toa_arm64.s

Documentation: github.com/bytedance/sonic/internal/native/neon

     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
     8TEXT ·__i64toa_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
    14lCPI0_0:
    15	WORD $0x147b20c5
    16	WORD $0x80003334
    17	// // .word 8389
    18// .word 5243
    19// .word 13108
    20// .word 32768
    21
    22lCPI0_1:
    23	WORD $0x08000080
    24	WORD $0x80002000
    25	// // .word 128
    26// .word 2048
    27// .word 8192
    28// .word 32768
    29
    30lCPI0_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
    52lCPI0_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_i64toa:
    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 $0xb7f80641  // tbnz	x1, #63, LBB0_10 $200(%rip)
    80	WORD $0xd344fc28  // lsr	x8, x1, #4
    81	WORD $0xf109c11f  // cmp	x8, #624
    82	WORD $0x540008e8  // b.hi	LBB0_13 $284(%rip)
    83	WORD $0x53023c28  // ubfx	w8, w1, #2, #14
    84	WORD $0x52828f69  // mov	w9, #5243
    85	WORD $0x1b097d08  // mul	w8, w8, w9
    86	WORD $0x53117d08  // lsr	w8, w8, #17
    87	WORD $0xd37f7d09  // ubfiz	x9, x8, #1, #32
    88	WORD $0x52800c8a  // mov	w10, #100
    89	WORD $0x1b0a8508  // msub	w8, w8, w10, w1
    90	WORD $0x92403d08  // and	x8, x8, #0xffff
    91	WORD $0xd37ff908  // lsl	x8, x8, #1
    92	WORD $0x710fa03f  // cmp	w1, #1000
    93	WORD $0x540000e3  // b.lo	LBB0_4 $28(%rip)
    94Lloh0:
    95	WORD $0x100054ea  // adr	x10, _Digits $2716(%rip)
    96Lloh1:
    97	WORD $0x9100014a  // add	x10, x10, _Digits@PAGEOFF $0(%rip)
    98	WORD $0x3869694a  // ldrb	w10, [x10, x9]
    99	WORD $0x3900000a  // strb	w10, [x0]
   100	WORD $0x5280002a  // mov	w10, #1
   101	WORD $0x14000004  // b	LBB0_6 $16(%rip)
   102LBB0_4:
   103	WORD $0x7101903f  // cmp	w1, #100
   104	WORD $0x540002e3  // b.lo	LBB0_9 $92(%rip)
   105	WORD $0x5280000a  // mov	w10, #0
   106LBB0_6:
   107Lloh2:
   108	WORD $0x100053cb  // adr	x11, _Digits $2680(%rip)
   109Lloh3:
   110	WORD $0x9100016b  // add	x11, x11, _Digits@PAGEOFF $0(%rip)
   111	WORD $0x8b294169  // add	x9, x11, w9, uxtw
   112	WORD $0x3940052b  // ldrb	w11, [x9, #1]
   113	WORD $0x11000549  // add	w9, w10, #1
   114	WORD $0x382a480b  // strb	w11, [x0, w10, uxtw]
   115LBB0_7:
   116Lloh4:
   117	WORD $0x1000530a  // adr	x10, _Digits $2656(%rip)
   118Lloh5:
   119	WORD $0x9100014a  // add	x10, x10, _Digits@PAGEOFF $0(%rip)
   120	WORD $0x3868694b  // ldrb	w11, [x10, x8]
   121	WORD $0x1100052a  // add	w10, w9, #1
   122	WORD $0x3829480b  // strb	w11, [x0, w9, uxtw]
   123LBB0_8:
   124Lloh6:
   125	WORD $0x10005269  // adr	x9, _Digits $2636(%rip)
   126Lloh7:
   127	WORD $0x91000129  // add	x9, x9, _Digits@PAGEOFF $0(%rip)
   128	WORD $0x8b282128  // add	x8, x9, w8, uxth
   129	WORD $0x39400509  // ldrb	w9, [x8, #1]
   130	WORD $0x11000548  // add	w8, w10, #1
   131	WORD $0x382a4809  // strb	w9, [x0, w10, uxtw]
   132	WORD $0xaa0803e0  // mov	x0, x8
   133	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
   134	WORD $0x910083ff  // add	sp, sp, #32
   135	WORD $0xd65f03c0  // ret
   136LBB0_9:
   137	WORD $0x52800009  // mov	w9, #0
   138	WORD $0x5280000a  // mov	w10, #0
   139	WORD $0x7100283f  // cmp	w1, #10
   140	WORD $0x54fffdc2  // b.hs	LBB0_7 $-72(%rip)
   141	WORD $0x17fffff2  // b	LBB0_8 $-56(%rip)
   142LBB0_10:
   143	WORD $0x528005a9  // mov	w9, #45
   144	WORD $0xaa0003e8  // mov	x8, x0
   145	WORD $0x38001509  // strb	w9, [x8], #1
   146	WORD $0xcb0103e9  // neg	x9, x1
   147	WORD $0xd344fd2a  // lsr	x10, x9, #4
   148	WORD $0xf109c15f  // cmp	x10, #624
   149	WORD $0x54001068  // b.hi	LBB0_28 $524(%rip)
   150	WORD $0x53023d2a  // ubfx	w10, w9, #2, #14
   151	WORD $0x52828f6b  // mov	w11, #5243
   152	WORD $0x1b0b7d4a  // mul	w10, w10, w11
   153	WORD $0x53117d4a  // lsr	w10, w10, #17
   154	WORD $0xd37f7d4b  // ubfiz	x11, x10, #1, #32
   155	WORD $0x52800c8c  // mov	w12, #100
   156	WORD $0x1b0ca54a  // msub	w10, w10, w12, w9
   157	WORD $0x92403d4a  // and	x10, x10, #0xffff
   158	WORD $0xd37ff94a  // lsl	x10, x10, #1
   159	WORD $0x710fa13f  // cmp	w9, #1000
   160	WORD $0x540004e3  // b.lo	LBB0_16 $156(%rip)
   161Lloh8:
   162	WORD $0x10004e49  // adr	x9, _Digits $2504(%rip)
   163Lloh9:
   164	WORD $0x91000129  // add	x9, x9, _Digits@PAGEOFF $0(%rip)
   165	WORD $0x386b6929  // ldrb	w9, [x9, x11]
   166	WORD $0x39000109  // strb	w9, [x8]
   167	WORD $0x52800029  // mov	w9, #1
   168	WORD $0x14000024  // b	LBB0_18 $144(%rip)
   169LBB0_13:
   170	WORD $0x529c2008  // mov	w8, #57600
   171	WORD $0x72a0bea8  // movk	w8, #1525, lsl #16
   172	WORD $0xeb08003f  // cmp	x1, x8
   173	WORD $0x540011c2  // b.hs	LBB0_31 $568(%rip)
   174	WORD $0x5282eb28  // mov	w8, #5977
   175	WORD $0x72ba36e8  // movk	w8, #53687, lsl #16
   176	WORD $0x92407c29  // and	x9, x1, #0xffffffff
   177	WORD $0x9ba87d28  // umull	x8, w9, w8
   178	WORD $0xd36dfd08  // lsr	x8, x8, #45
   179	WORD $0x529bd06a  // mov	w10, #56963
   180	WORD $0x72a8636a  // movk	w10, #17179, lsl #16
   181	WORD $0x9baa7d29  // umull	x9, w9, w10
   182	WORD $0xd371fd29  // lsr	x9, x9, #49
   183	WORD $0x927f312a  // and	x10, x9, #0x3ffe
   184	WORD $0x53023d09  // ubfx	w9, w8, #2, #14
   185	WORD $0x52828f6b  // mov	w11, #5243
   186	WORD $0x1b0b7d29  // mul	w9, w9, w11
   187	WORD $0x53117d29  // lsr	w9, w9, #17
   188	WORD $0x52800c8b  // mov	w11, #100
   189	WORD $0x1b0ba129  // msub	w9, w9, w11, w8
   190	WORD $0x92403d29  // and	x9, x9, #0xffff
   191	WORD $0xd37ff929  // lsl	x9, x9, #1
   192	WORD $0x5292cfeb  // mov	w11, #38527
   193	WORD $0x72a0130b  // movk	w11, #152, lsl #16
   194	WORD $0x6b0b003f  // cmp	w1, w11
   195	WORD $0x54000409  // b.ls	LBB0_21 $128(%rip)
   196Lloh10:
   197	WORD $0x10004a4b  // adr	x11, _Digits $2376(%rip)
   198Lloh11:
   199	WORD $0x9100016b  // add	x11, x11, _Digits@PAGEOFF $0(%rip)
   200	WORD $0x386a696b  // ldrb	w11, [x11, x10]
   201	WORD $0x3900000b  // strb	w11, [x0]
   202	WORD $0x5280002c  // mov	w12, #1
   203	WORD $0x1400001f  // b	LBB0_23 $124(%rip)
   204LBB0_16:
   205	WORD $0x7101913f  // cmp	w9, #100
   206	WORD $0x540008a3  // b.lo	LBB0_26 $276(%rip)
   207	WORD $0x52800009  // mov	w9, #0
   208LBB0_18:
   209Lloh12:
   210	WORD $0x1000492c  // adr	x12, _Digits $2340(%rip)
   211Lloh13:
   212	WORD $0x9100018c  // add	x12, x12, _Digits@PAGEOFF $0(%rip)
   213	WORD $0x8b2b418b  // add	x11, x12, w11, uxtw
   214	WORD $0x3940056c  // ldrb	w12, [x11, #1]
   215	WORD $0x1100052b  // add	w11, w9, #1
   216	WORD $0x3829490c  // strb	w12, [x8, w9, uxtw]
   217LBB0_19:
   218Lloh14:
   219	WORD $0x10004869  // adr	x9, _Digits $2316(%rip)
   220Lloh15:
   221	WORD $0x91000129  // add	x9, x9, _Digits@PAGEOFF $0(%rip)
   222	WORD $0x386a6929  // ldrb	w9, [x9, x10]
   223	WORD $0x1100056c  // add	w12, w11, #1
   224	WORD $0x382b4909  // strb	w9, [x8, w11, uxtw]
   225LBB0_20:
   226Lloh16:
   227	WORD $0x100047c9  // adr	x9, _Digits $2296(%rip)
   228Lloh17:
   229	WORD $0x91000129  // add	x9, x9, _Digits@PAGEOFF $0(%rip)
   230	WORD $0x8b2a2129  // add	x9, x9, w10, uxth
   231	WORD $0x3940052a  // ldrb	w10, [x9, #1]
   232	WORD $0x11000589  // add	w9, w12, #1
   233	WORD $0x382c490a  // strb	w10, [x8, w12, uxtw]
   234	WORD $0x11000528  // add	w8, w9, #1
   235	WORD $0xaa0803e0  // mov	x0, x8
   236	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
   237	WORD $0x910083ff  // add	sp, sp, #32
   238	WORD $0xd65f03c0  // ret
   239LBB0_21:
   240	WORD $0x528847eb  // mov	w11, #16959
   241	WORD $0x72a001eb  // movk	w11, #15, lsl #16
   242	WORD $0x6b0b003f  // cmp	w1, w11
   243	WORD $0x540005e9  // b.ls	LBB0_27 $188(%rip)
   244	WORD $0x5280000c  // mov	w12, #0
   245LBB0_23:
   246Lloh18:
   247	WORD $0x100045cb  // adr	x11, _Digits $2232(%rip)
   248Lloh19:
   249	WORD $0x9100016b  // add	x11, x11, _Digits@PAGEOFF $0(%rip)
   250	WORD $0x8b2a416a  // add	x10, x11, w10, uxtw
   251	WORD $0x3940054a  // ldrb	w10, [x10, #1]
   252	WORD $0x1100058b  // add	w11, w12, #1
   253	WORD $0x382c480a  // strb	w10, [x0, w12, uxtw]
   254LBB0_24:
   255Lloh20:
   256	WORD $0x1000450a  // adr	x10, _Digits $2208(%rip)
   257Lloh21:
   258	WORD $0x9100014a  // add	x10, x10, _Digits@PAGEOFF $0(%rip)
   259	WORD $0x3869694c  // ldrb	w12, [x10, x9]
   260	WORD $0x1100056a  // add	w10, w11, #1
   261	WORD $0x382b480c  // strb	w12, [x0, w11, uxtw]
   262LBB0_25:
   263	WORD $0x5284e20b  // mov	w11, #10000
   264	WORD $0x1b0b8508  // msub	w8, w8, w11, w1
   265	WORD $0x53023d0b  // ubfx	w11, w8, #2, #14
   266	WORD $0x52828f6c  // mov	w12, #5243
   267	WORD $0x1b0c7d6b  // mul	w11, w11, w12
   268	WORD $0x53117d6b  // lsr	w11, w11, #17
   269	WORD $0x52800c8c  // mov	w12, #100
   270	WORD $0x1b0ca168  // msub	w8, w11, w12, w8
   271	WORD $0x92403d08  // and	x8, x8, #0xffff
   272	WORD $0xd37ff908  // lsl	x8, x8, #1
   273Lloh22:
   274	WORD $0x1000432c  // adr	x12, _Digits $2148(%rip)
   275Lloh23:
   276	WORD $0x9100018c  // add	x12, x12, _Digits@PAGEOFF $0(%rip)
   277	WORD $0x8b292189  // add	x9, x12, w9, uxth
   278	WORD $0x39400529  // ldrb	w9, [x9, #1]
   279	WORD $0x8b2a400d  // add	x13, x0, w10, uxtw
   280	WORD $0x390001a9  // strb	w9, [x13]
   281	WORD $0x786b5989  // ldrh	w9, [x12, w11, uxtw #1]
   282	WORD $0x780011a9  // sturh	w9, [x13, #1]
   283	WORD $0x38686989  // ldrb	w9, [x12, x8]
   284	WORD $0x39000da9  // strb	w9, [x13, #3]
   285	WORD $0x927f3908  // and	x8, x8, #0xfffe
   286	WORD $0x8b080188  // add	x8, x12, x8
   287	WORD $0x39400509  // ldrb	w9, [x8, #1]
   288	WORD $0x11001548  // add	w8, w10, #5
   289	WORD $0x390011a9  // strb	w9, [x13, #4]
   290	WORD $0xaa0803e0  // mov	x0, x8
   291	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
   292	WORD $0x910083ff  // add	sp, sp, #32
   293	WORD $0xd65f03c0  // ret
   294LBB0_26:
   295	WORD $0x5280000b  // mov	w11, #0
   296	WORD $0x5280000c  // mov	w12, #0
   297	WORD $0x7100293f  // cmp	w9, #10
   298	WORD $0x54fff802  // b.hs	LBB0_19 $-256(%rip)
   299	WORD $0x17ffffc4  // b	LBB0_20 $-240(%rip)
   300LBB0_27:
   301	WORD $0x5280000b  // mov	w11, #0
   302	WORD $0x5280000a  // mov	w10, #0
   303	WORD $0x53057c2c  // lsr	w12, w1, #5
   304	WORD $0x7130d59f  // cmp	w12, #3125
   305	WORD $0x54fffaa2  // b.hs	LBB0_24 $-172(%rip)
   306	WORD $0x17ffffd9  // b	LBB0_25 $-156(%rip)
   307LBB0_28:
   308	WORD $0x529c200a  // mov	w10, #57600
   309	WORD $0x72a0beaa  // movk	w10, #1525, lsl #16
   310	WORD $0xeb0a013f  // cmp	x9, x10
   311	WORD $0x54001662  // b.hs	LBB0_39 $716(%rip)
   312	WORD $0x5282eb2a  // mov	w10, #5977
   313	WORD $0x72ba36ea  // movk	w10, #53687, lsl #16
   314	WORD $0x9baa7d2a  // umull	x10, w9, w10
   315	WORD $0xd36dfd4a  // lsr	x10, x10, #45
   316	WORD $0x529bd06b  // mov	w11, #56963
   317	WORD $0x72a8636b  // movk	w11, #17179, lsl #16
   318	WORD $0x92407d2c  // and	x12, x9, #0xffffffff
   319	WORD $0x9bab7d8b  // umull	x11, w12, w11
   320	WORD $0xd371fd6b  // lsr	x11, x11, #49
   321	WORD $0x927f316c  // and	x12, x11, #0x3ffe
   322	WORD $0x53023d4b  // ubfx	w11, w10, #2, #14
   323	WORD $0x52828f6d  // mov	w13, #5243
   324	WORD $0x1b0d7d6b  // mul	w11, w11, w13
   325	WORD $0x53117d6b  // lsr	w11, w11, #17
   326	WORD $0x52800c8d  // mov	w13, #100
   327	WORD $0x1b0da96b  // msub	w11, w11, w13, w10
   328	WORD $0x92403d6b  // and	x11, x11, #0xffff
   329	WORD $0xd37ff96b  // lsl	x11, x11, #1
   330	WORD $0x5292cfed  // mov	w13, #38527
   331	WORD $0x72a0130d  // movk	w13, #152, lsl #16
   332	WORD $0x6b0d013f  // cmp	w9, w13
   333	WORD $0x54000d29  // b.ls	LBB0_33 $420(%rip)
   334Lloh24:
   335	WORD $0x10003c2d  // adr	x13, _Digits $1924(%rip)
   336Lloh25:
   337	WORD $0x910001ad  // add	x13, x13, _Digits@PAGEOFF $0(%rip)
   338	WORD $0x386c69ad  // ldrb	w13, [x13, x12]
   339	WORD $0x3900010d  // strb	w13, [x8]
   340	WORD $0x5280002e  // mov	w14, #1
   341	WORD $0x14000068  // b	LBB0_35 $416(%rip)
   342LBB0_31:
   343	WORD $0xd2adf82a  // mov	x10, #1874919424
   344	WORD $0xf2d0de4a  // movk	x10, #34546, lsl #32
   345	WORD $0xf2e0046a  // movk	x10, #35, lsl #48
   346	WORD $0xeb0a003f  // cmp	x1, x10
   347	WORD $0x54001ea2  // b.hs	LBB0_41 $980(%rip)
   348	WORD $0xd299dfa9  // mov	x9, #52989
   349	WORD $0xf2b08c29  // movk	x9, #33889, lsl #16
   350	WORD $0xf2cee229  // movk	x9, #30481, lsl #32
   351	WORD $0xf2f57989  // movk	x9, #43980, lsl #48
   352	WORD $0x9bc97c29  // umulh	x9, x1, x9
   353	WORD $0xd35afd29  // lsr	x9, x9, #26
   354	WORD $0x1b088528  // msub	w8, w9, w8, w1
   355	WORD $0x6f00e400  // movi.2d	v0, #0000000000000000
   356	WORD $0x6f00e401  // movi.2d	v1, #0000000000000000
   357	WORD $0x4e041d21  // mov.s	v1[0], w9
   358	WORD $0x0ea12822  // xtn.2s	v2, v1
   359	WORD $0x5282eb29  // mov	w9, #5977
   360	WORD $0x72ba36e9  // movk	w9, #53687, lsl #16
   361	WORD $0x0e040d23  // dup.2s	v3, w9
   362	WORD $0x2ea3c042  // umull.2d	v2, v2, v3
   363	WORD $0x6f530442  // ushr.2d	v2, v2, #45
   364	WORD $0x0ea12844  // xtn.2s	v4, v2
   365	WORD $0x5284e209  // mov	w9, #10000
   366	WORD $0x0e040d25  // dup.2s	v5, w9
   367	WORD $0x2ea5c084  // umull.2d	v4, v4, v5
   368	WORD $0x6ea48421  // sub.4s	v1, v1, v4
   369	WORD $0x4e413841  // zip1.8h	v1, v2, v1
   370	WORD $0x4f425421  // shl.2d	v1, v1, #2
   371	WORD $0x4e413821  // zip1.8h	v1, v1, v1
   372	WORD $0x4e813821  // zip1.4s	v1, v1, v1
   373Lloh26:
   374	WORD $0x10ffdee9  // adr	x9, lCPI0_0 $-1060(%rip)
   375Lloh27:
   376	WORD $0xfd400122  // ldr	d2, [x9, lCPI0_0@PAGEOFF] $0(%rip)
   377	WORD $0x2e62c024  // umull.4s	v4, v1, v2
   378	WORD $0x6e014021  // ext.16b	v1, v1, v1, #8
   379	WORD $0x2e62c021  // umull.4s	v1, v1, v2
   380	WORD $0x4e415881  // uzp2.8h	v1, v4, v1
   381Lloh28:
   382	WORD $0x10ffde69  // adr	x9, lCPI0_1 $-1076(%rip)
   383Lloh29:
   384	WORD $0xfd400124  // ldr	d4, [x9, lCPI0_1@PAGEOFF] $0(%rip)
   385	WORD $0x2e64c026  // umull.4s	v6, v1, v4
   386	WORD $0x6e014021  // ext.16b	v1, v1, v1, #8
   387	WORD $0x2e64c021  // umull.4s	v1, v1, v4
   388	WORD $0x4e4158c1  // uzp2.8h	v1, v6, v1
   389	WORD $0x4f008546  // movi.8h	v6, #10
   390	WORD $0x4e669c27  // mul.8h	v7, v1, v6
   391	WORD $0x4f5054e7  // shl.2d	v7, v7, #16
   392	WORD $0x6e678421  // sub.8h	v1, v1, v7
   393	WORD $0x4e041d00  // mov.s	v0[0], w8
   394	WORD $0x0ea12807  // xtn.2s	v7, v0
   395	WORD $0x2ea3c0e3  // umull.2d	v3, v7, v3
   396	WORD $0x6f530463  // ushr.2d	v3, v3, #45
   397	WORD $0x0ea12867  // xtn.2s	v7, v3
   398	WORD $0x2ea5c0e5  // umull.2d	v5, v7, v5
   399	WORD $0x6ea58400  // sub.4s	v0, v0, v5
   400	WORD $0x4e403860  // zip1.8h	v0, v3, v0
   401	WORD $0x4f425400  // shl.2d	v0, v0, #2
   402	WORD $0x4e403800  // zip1.8h	v0, v0, v0
   403	WORD $0x4e803800  // zip1.4s	v0, v0, v0
   404	WORD $0x2e62c003  // umull.4s	v3, v0, v2
   405	WORD $0x6e004000  // ext.16b	v0, v0, v0, #8
   406	WORD $0x2e62c000  // umull.4s	v0, v0, v2
   407	WORD $0x4e405860  // uzp2.8h	v0, v3, v0
   408	WORD $0x2e64c002  // umull.4s	v2, v0, v4
   409	WORD $0x6e004000  // ext.16b	v0, v0, v0, #8
   410	WORD $0x2e64c000  // umull.4s	v0, v0, v4
   411	WORD $0x4e405840  // uzp2.8h	v0, v2, v0
   412	WORD $0x4e669c02  // mul.8h	v2, v0, v6
   413	WORD $0x4f505442  // shl.2d	v2, v2, #16
   414	WORD $0x6e628400  // sub.8h	v0, v0, v2
   415	WORD $0x2e212821  // sqxtun.8b	v1, v1
   416	WORD $0x6e212801  // sqxtun2.16b	v1, v0
   417	WORD $0x4f01e600  // movi.16b	v0, #48
   418	WORD $0x4e208420  // add.16b	v0, v1, v0
   419	WORD $0x4e209821  // cmeq.16b	v1, v1, #0
   420Lloh30:
   421	WORD $0x10ffda08  // adr	x8, lCPI0_2 $-1216(%rip)
   422Lloh31:
   423	WORD $0x3dc00102  // ldr	q2, [x8, lCPI0_2@PAGEOFF] $0(%rip)
   424	WORD $0x4e221c21  // and.16b	v1, v1, v2
   425Lloh32:
   426	WORD $0x10ffda28  // adr	x8, lCPI0_3 $-1212(%rip)
   427Lloh33:
   428	WORD $0x3dc00102  // ldr	q2, [x8, lCPI0_3@PAGEOFF] $0(%rip)
   429	WORD $0x4e020021  // tbl.16b	v1, { v1 }, v2
   430	WORD $0x4e71b821  // addv.8h	h1, v1
   431	WORD $0x1e260028  // fmov	w8, s1
   432	WORD $0x2a2803e8  // mvn	w8, w8
   433	WORD $0x32114108  // orr	w8, w8, #0xffff8000
   434	WORD $0x5ac00108  // rbit	w8, w8
   435	WORD $0x5ac01108  // clz	w8, w8
   436Lloh34:
   437	WORD $0x10003709  // adr	x9, _VecShiftShuffles $1760(%rip)
   438Lloh35:
   439	WORD $0x91000129  // add	x9, x9, _VecShiftShuffles@PAGEOFF $0(%rip)
   440	WORD $0x3ce85921  // ldr	q1, [x9, w8, uxtw #4]
   441	WORD $0x4f04e5e2  // movi.16b	v2, #143
   442	WORD $0x4e221c21  // and.16b	v1, v1, v2
   443	WORD $0x4e010000  // tbl.16b	v0, { v0 }, v1
   444	WORD $0x3d800000  // str	q0, [x0]
   445	WORD $0x52800209  // mov	w9, #16
   446	WORD $0x4b080128  // sub	w8, w9, w8
   447	WORD $0xaa0803e0  // mov	x0, x8
   448	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
   449	WORD $0x910083ff  // add	sp, sp, #32
   450	WORD $0xd65f03c0  // ret
   451LBB0_33:
   452	WORD $0x528847ed  // mov	w13, #16959
   453	WORD $0x72a001ed  // movk	w13, #15, lsl #16
   454	WORD $0x6b0d013f  // cmp	w9, w13
   455	WORD $0x54000569  // b.ls	LBB0_38 $172(%rip)
   456	WORD $0x5280000e  // mov	w14, #0
   457LBB0_35:
   458Lloh36:
   459	WORD $0x10002e8d  // adr	x13, _Digits $1488(%rip)
   460Lloh37:
   461	WORD $0x910001ad  // add	x13, x13, _Digits@PAGEOFF $0(%rip)
   462	WORD $0x8b2c41ac  // add	x12, x13, w12, uxtw
   463	WORD $0x3940058c  // ldrb	w12, [x12, #1]
   464	WORD $0x110005cd  // add	w13, w14, #1
   465	WORD $0x382e490c  // strb	w12, [x8, w14, uxtw]
   466LBB0_36:
   467Lloh38:
   468	WORD $0x10002dcc  // adr	x12, _Digits $1464(%rip)
   469Lloh39:
   470	WORD $0x9100018c  // add	x12, x12, _Digits@PAGEOFF $0(%rip)
   471	WORD $0x386b698e  // ldrb	w14, [x12, x11]
   472	WORD $0x110005ac  // add	w12, w13, #1
   473	WORD $0x382d490e  // strb	w14, [x8, w13, uxtw]
   474LBB0_37:
   475	WORD $0x5284e20d  // mov	w13, #10000
   476	WORD $0x1b0da549  // msub	w9, w10, w13, w9
   477	WORD $0x53023d2a  // ubfx	w10, w9, #2, #14
   478	WORD $0x52828f6d  // mov	w13, #5243
   479	WORD $0x1b0d7d4a  // mul	w10, w10, w13
   480	WORD $0x53117d4a  // lsr	w10, w10, #17
   481	WORD $0x52800c8d  // mov	w13, #100
   482	WORD $0x1b0da549  // msub	w9, w10, w13, w9
   483	WORD $0x92403d29  // and	x9, x9, #0xffff
   484	WORD $0xd37ff929  // lsl	x9, x9, #1
   485Lloh40:
   486	WORD $0x10002bed  // adr	x13, _Digits $1404(%rip)
   487Lloh41:
   488	WORD $0x910001ad  // add	x13, x13, _Digits@PAGEOFF $0(%rip)
   489	WORD $0x8b2b21ab  // add	x11, x13, w11, uxth
   490	WORD $0x3940056b  // ldrb	w11, [x11, #1]
   491	WORD $0x8b2c4108  // add	x8, x8, w12, uxtw
   492	WORD $0x3900010b  // strb	w11, [x8]
   493	WORD $0x786a59aa  // ldrh	w10, [x13, w10, uxtw #1]
   494	WORD $0x7800110a  // sturh	w10, [x8, #1]
   495	WORD $0x386969aa  // ldrb	w10, [x13, x9]
   496	WORD $0x39000d0a  // strb	w10, [x8, #3]
   497	WORD $0x927f3929  // and	x9, x9, #0xfffe
   498	WORD $0x8b0901a9  // add	x9, x13, x9
   499	WORD $0x3940052a  // ldrb	w10, [x9, #1]
   500	WORD $0x11001589  // add	w9, w12, #5
   501	WORD $0x3900110a  // strb	w10, [x8, #4]
   502	WORD $0x11000528  // add	w8, w9, #1
   503	WORD $0xaa0803e0  // mov	x0, x8
   504	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
   505	WORD $0x910083ff  // add	sp, sp, #32
   506	WORD $0xd65f03c0  // ret
   507LBB0_38:
   508	WORD $0x5280000d  // mov	w13, #0
   509	WORD $0x5280000c  // mov	w12, #0
   510	WORD $0x53057d2e  // lsr	w14, w9, #5
   511	WORD $0x7130d5df  // cmp	w14, #3125
   512	WORD $0x54fffb22  // b.hs	LBB0_36 $-156(%rip)
   513	WORD $0x17ffffdd  // b	LBB0_37 $-140(%rip)
   514LBB0_39:
   515	WORD $0xd2adf82c  // mov	x12, #1874919424
   516	WORD $0xf2d0de4c  // movk	x12, #34546, lsl #32
   517	WORD $0xf2e0046c  // movk	x12, #35, lsl #48
   518	WORD $0xeb0c013f  // cmp	x9, x12
   519	WORD $0x540019e2  // b.hs	LBB0_47 $828(%rip)
   520	WORD $0xd299dfab  // mov	x11, #52989
   521	WORD $0xf2b08c2b  // movk	x11, #33889, lsl #16
   522	WORD $0xf2cee22b  // movk	x11, #30481, lsl #32
   523	WORD $0xf2f5798b  // movk	x11, #43980, lsl #48
   524	WORD $0x9bcb7d2b  // umulh	x11, x9, x11
   525	WORD $0xd35afd6b  // lsr	x11, x11, #26
   526	WORD $0x1b0aa569  // msub	w9, w11, w10, w9
   527	WORD $0x6f00e400  // movi.2d	v0, #0000000000000000
   528	WORD $0x6f00e401  // movi.2d	v1, #0000000000000000
   529	WORD $0x4e041d61  // mov.s	v1[0], w11
   530	WORD $0x0ea12822  // xtn.2s	v2, v1
   531	WORD $0x5282eb2a  // mov	w10, #5977
   532	WORD $0x72ba36ea  // movk	w10, #53687, lsl #16
   533	WORD $0x0e040d43  // dup.2s	v3, w10
   534	WORD $0x2ea3c042  // umull.2d	v2, v2, v3
   535	WORD $0x6f530442  // ushr.2d	v2, v2, #45
   536	WORD $0x0ea12844  // xtn.2s	v4, v2
   537	WORD $0x5284e20a  // mov	w10, #10000
   538	WORD $0x0e040d45  // dup.2s	v5, w10
   539	WORD $0x2ea5c084  // umull.2d	v4, v4, v5
   540	WORD $0x6ea48421  // sub.4s	v1, v1, v4
   541	WORD $0x4e413841  // zip1.8h	v1, v2, v1
   542	WORD $0x4f425421  // shl.2d	v1, v1, #2
   543	WORD $0x4e413821  // zip1.8h	v1, v1, v1
   544	WORD $0x4e813821  // zip1.4s	v1, v1, v1
   545Lloh42:
   546	WORD $0x10ffcc2a  // adr	x10, lCPI0_0 $-1660(%rip)
   547Lloh43:
   548	WORD $0xfd400142  // ldr	d2, [x10, lCPI0_0@PAGEOFF] $0(%rip)
   549	WORD $0x2e62c024  // umull.4s	v4, v1, v2
   550	WORD $0x6e014021  // ext.16b	v1, v1, v1, #8
   551	WORD $0x2e62c021  // umull.4s	v1, v1, v2
   552	WORD $0x4e415881  // uzp2.8h	v1, v4, v1
   553Lloh44:
   554	WORD $0x10ffcbaa  // adr	x10, lCPI0_1 $-1676(%rip)
   555Lloh45:
   556	WORD $0xfd400144  // ldr	d4, [x10, lCPI0_1@PAGEOFF] $0(%rip)
   557	WORD $0x2e64c026  // umull.4s	v6, v1, v4
   558	WORD $0x6e014021  // ext.16b	v1, v1, v1, #8
   559	WORD $0x2e64c021  // umull.4s	v1, v1, v4
   560	WORD $0x4e4158c1  // uzp2.8h	v1, v6, v1
   561	WORD $0x4f008546  // movi.8h	v6, #10
   562	WORD $0x4e669c27  // mul.8h	v7, v1, v6
   563	WORD $0x4f5054e7  // shl.2d	v7, v7, #16
   564	WORD $0x6e678421  // sub.8h	v1, v1, v7
   565	WORD $0x4e041d20  // mov.s	v0[0], w9
   566	WORD $0x0ea12807  // xtn.2s	v7, v0
   567	WORD $0x2ea3c0e3  // umull.2d	v3, v7, v3
   568	WORD $0x6f530463  // ushr.2d	v3, v3, #45
   569	WORD $0x0ea12867  // xtn.2s	v7, v3
   570	WORD $0x2ea5c0e5  // umull.2d	v5, v7, v5
   571	WORD $0x6ea58400  // sub.4s	v0, v0, v5
   572	WORD $0x4e403860  // zip1.8h	v0, v3, v0
   573	WORD $0x4f425400  // shl.2d	v0, v0, #2
   574	WORD $0x4e403800  // zip1.8h	v0, v0, v0
   575	WORD $0x4e803800  // zip1.4s	v0, v0, v0
   576	WORD $0x2e62c003  // umull.4s	v3, v0, v2
   577	WORD $0x6e004000  // ext.16b	v0, v0, v0, #8
   578	WORD $0x2e62c000  // umull.4s	v0, v0, v2
   579	WORD $0x4e405860  // uzp2.8h	v0, v3, v0
   580	WORD $0x2e64c002  // umull.4s	v2, v0, v4
   581	WORD $0x6e004000  // ext.16b	v0, v0, v0, #8
   582	WORD $0x2e64c000  // umull.4s	v0, v0, v4
   583	WORD $0x4e405840  // uzp2.8h	v0, v2, v0
   584	WORD $0x4e669c02  // mul.8h	v2, v0, v6
   585	WORD $0x4f505442  // shl.2d	v2, v2, #16
   586	WORD $0x6e628400  // sub.8h	v0, v0, v2
   587	WORD $0x2e212821  // sqxtun.8b	v1, v1
   588	WORD $0x6e212801  // sqxtun2.16b	v1, v0
   589	WORD $0x4f01e600  // movi.16b	v0, #48
   590	WORD $0x4e208420  // add.16b	v0, v1, v0
   591	WORD $0x4e209821  // cmeq.16b	v1, v1, #0
   592Lloh46:
   593	WORD $0x10ffc749  // adr	x9, lCPI0_2 $-1816(%rip)
   594Lloh47:
   595	WORD $0x3dc00122  // ldr	q2, [x9, lCPI0_2@PAGEOFF] $0(%rip)
   596	WORD $0x4e221c21  // and.16b	v1, v1, v2
   597Lloh48:
   598	WORD $0x10ffc769  // adr	x9, lCPI0_3 $-1812(%rip)
   599Lloh49:
   600	WORD $0x3dc00122  // ldr	q2, [x9, lCPI0_3@PAGEOFF] $0(%rip)
   601	WORD $0x4e020021  // tbl.16b	v1, { v1 }, v2
   602	WORD $0x4e71b821  // addv.8h	h1, v1
   603	WORD $0x1e260029  // fmov	w9, s1
   604	WORD $0x2a2903e9  // mvn	w9, w9
   605	WORD $0x32114129  // orr	w9, w9, #0xffff8000
   606	WORD $0x5ac00129  // rbit	w9, w9
   607	WORD $0x5ac01129  // clz	w9, w9
   608Lloh50:
   609	WORD $0x1000244a  // adr	x10, _VecShiftShuffles $1160(%rip)
   610Lloh51:
   611	WORD $0x9100014a  // add	x10, x10, _VecShiftShuffles@PAGEOFF $0(%rip)
   612	WORD $0x3ce95941  // ldr	q1, [x10, w9, uxtw #4]
   613	WORD $0x4f04e5e2  // movi.16b	v2, #143
   614	WORD $0x4e221c21  // and.16b	v1, v1, v2
   615	WORD $0x4e010000  // tbl.16b	v0, { v0 }, v1
   616	WORD $0x3d800100  // str	q0, [x8]
   617	WORD $0x52800208  // mov	w8, #16
   618	WORD $0x4b090109  // sub	w9, w8, w9
   619	WORD $0x11000528  // add	w8, w9, #1
   620	WORD $0xaa0803e0  // mov	x0, x8
   621	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
   622	WORD $0x910083ff  // add	sp, sp, #32
   623	WORD $0xd65f03c0  // ret
   624LBB0_41:
   625	WORD $0xd28f0ae9  // mov	x9, #30807
   626	WORD $0xf2b62269  // movk	x9, #45331, lsl #16
   627	WORD $0xf2cca5e9  // movk	x9, #25903, lsl #32
   628	WORD $0xf2e734a9  // movk	x9, #14757, lsl #48
   629	WORD $0x9bc97c29  // umulh	x9, x1, x9
   630	WORD $0xd373fd2b  // lsr	x11, x9, #51
   631	WORD $0x7100257f  // cmp	w11, #9
   632	WORD $0x540000a8  // b.hi	LBB0_43 $20(%rip)
   633	WORD $0x1100c169  // add	w9, w11, #48
   634	WORD $0x39000009  // strb	w9, [x0]
   635	WORD $0x52800029  // mov	w9, #1
   636	WORD $0x1400001b  // b	LBB0_46 $108(%rip)
   637LBB0_43:
   638	WORD $0x71018d7f  // cmp	w11, #99
   639	WORD $0x540000e8  // b.hi	LBB0_45 $28(%rip)
   640Lloh52:
   641	WORD $0x10001a89  // adr	x9, _Digits $848(%rip)
   642Lloh53:
   643	WORD $0x91000129  // add	x9, x9, _Digits@PAGEOFF $0(%rip)
   644	WORD $0x786b5929  // ldrh	w9, [x9, w11, uxtw #1]
   645	WORD $0x79000009  // strh	w9, [x0]
   646	WORD $0x52800049  // mov	w9, #2
   647	WORD $0x14000013  // b	LBB0_46 $76(%rip)
   648LBB0_45:
   649	WORD $0x5280a3e9  // mov	w9, #1311
   650	WORD $0x1b097d69  // mul	w9, w11, w9
   651	WORD $0x53117d29  // lsr	w9, w9, #17
   652	WORD $0x321c052c  // orr	w12, w9, #0x30
   653	WORD $0x3900000c  // strb	w12, [x0]
   654	WORD $0x52800c8c  // mov	w12, #100
   655	WORD $0x1b0cad29  // msub	w9, w9, w12, w11
   656	WORD $0x92403d29  // and	x9, x9, #0xffff
   657	WORD $0xd37ff929  // lsl	x9, x9, #1
   658Lloh54:
   659	WORD $0x100018ac  // adr	x12, _Digits $788(%rip)
   660Lloh55:
   661	WORD $0x9100018c  // add	x12, x12, _Digits@PAGEOFF $0(%rip)
   662	WORD $0x3869698d  // ldrb	w13, [x12, x9]
   663	WORD $0x3900040d  // strb	w13, [x0, #1]
   664	WORD $0x927f3929  // and	x9, x9, #0xfffe
   665	WORD $0x8b090189  // add	x9, x12, x9
   666	WORD $0x39400529  // ldrb	w9, [x9, #1]
   667	WORD $0x39000809  // strb	w9, [x0, #2]
   668	WORD $0x52800069  // mov	w9, #3
   669LBB0_46:
   670	WORD $0x9b0a856a  // msub	x10, x11, x10, x1
   671	WORD $0xd299dfab  // mov	x11, #52989
   672	WORD $0xf2b08c2b  // movk	x11, #33889, lsl #16
   673	WORD $0xf2cee22b  // movk	x11, #30481, lsl #32
   674	WORD $0xf2f5798b  // movk	x11, #43980, lsl #48
   675	WORD $0x9bcb7d4b  // umulh	x11, x10, x11
   676	WORD $0xd35afd6b  // lsr	x11, x11, #26
   677	WORD $0x6f00e400  // movi.2d	v0, #0000000000000000
   678	WORD $0x6f00e401  // movi.2d	v1, #0000000000000000
   679	WORD $0x4e041d61  // mov.s	v1[0], w11
   680	WORD $0x5282eb2c  // mov	w12, #5977
   681	WORD $0x72ba36ec  // movk	w12, #53687, lsl #16
   682	WORD $0x0e040d82  // dup.2s	v2, w12
   683	WORD $0x0ea12823  // xtn.2s	v3, v1
   684	WORD $0x2ea2c063  // umull.2d	v3, v3, v2
   685	WORD $0x6f530463  // ushr.2d	v3, v3, #45
   686	WORD $0x5284e20c  // mov	w12, #10000
   687	WORD $0x0e040d84  // dup.2s	v4, w12
   688	WORD $0x0ea12865  // xtn.2s	v5, v3
   689	WORD $0x2ea4c0a5  // umull.2d	v5, v5, v4
   690	WORD $0x6ea58421  // sub.4s	v1, v1, v5
   691	WORD $0x4e413861  // zip1.8h	v1, v3, v1
   692	WORD $0x4f425421  // shl.2d	v1, v1, #2
   693	WORD $0x4e413821  // zip1.8h	v1, v1, v1
   694	WORD $0x4e813821  // zip1.4s	v1, v1, v1
   695Lloh56:
   696	WORD $0x10ffbbac  // adr	x12, lCPI0_0 $-2188(%rip)
   697Lloh57:
   698	WORD $0xfd400183  // ldr	d3, [x12, lCPI0_0@PAGEOFF] $0(%rip)
   699	WORD $0x2e63c025  // umull.4s	v5, v1, v3
   700	WORD $0x6e014021  // ext.16b	v1, v1, v1, #8
   701	WORD $0x2e63c021  // umull.4s	v1, v1, v3
   702	WORD $0x4e4158a1  // uzp2.8h	v1, v5, v1
   703Lloh58:
   704	WORD $0x10ffbb2c  // adr	x12, lCPI0_1 $-2204(%rip)
   705Lloh59:
   706	WORD $0xfd400185  // ldr	d5, [x12, lCPI0_1@PAGEOFF] $0(%rip)
   707	WORD $0x2e65c026  // umull.4s	v6, v1, v5
   708	WORD $0x6e014021  // ext.16b	v1, v1, v1, #8
   709	WORD $0x2e65c021  // umull.4s	v1, v1, v5
   710	WORD $0x4e4158c1  // uzp2.8h	v1, v6, v1
   711	WORD $0x4f008546  // movi.8h	v6, #10
   712	WORD $0x4e669c27  // mul.8h	v7, v1, v6
   713	WORD $0x4f5054e7  // shl.2d	v7, v7, #16
   714	WORD $0x6e678421  // sub.8h	v1, v1, v7
   715	WORD $0x1b08a968  // msub	w8, w11, w8, w10
   716	WORD $0x4e041d00  // mov.s	v0[0], w8
   717	WORD $0x0ea12807  // xtn.2s	v7, v0
   718	WORD $0x2ea2c0e2  // umull.2d	v2, v7, v2
   719	WORD $0x6f530442  // ushr.2d	v2, v2, #45
   720	WORD $0x0ea12847  // xtn.2s	v7, v2
   721	WORD $0x2ea4c0e4  // umull.2d	v4, v7, v4
   722	WORD $0x6ea48400  // sub.4s	v0, v0, v4
   723	WORD $0x4e403840  // zip1.8h	v0, v2, v0
   724	WORD $0x4f425400  // shl.2d	v0, v0, #2
   725	WORD $0x4e403800  // zip1.8h	v0, v0, v0
   726	WORD $0x4e803800  // zip1.4s	v0, v0, v0
   727	WORD $0x2e63c002  // umull.4s	v2, v0, v3
   728	WORD $0x6e004000  // ext.16b	v0, v0, v0, #8
   729	WORD $0x2e63c000  // umull.4s	v0, v0, v3
   730	WORD $0x4e405840  // uzp2.8h	v0, v2, v0
   731	WORD $0x2e65c002  // umull.4s	v2, v0, v5
   732	WORD $0x6e004000  // ext.16b	v0, v0, v0, #8
   733	WORD $0x2e65c000  // umull.4s	v0, v0, v5
   734	WORD $0x4e405840  // uzp2.8h	v0, v2, v0
   735	WORD $0x4e669c02  // mul.8h	v2, v0, v6
   736	WORD $0x4f505442  // shl.2d	v2, v2, #16
   737	WORD $0x6e628400  // sub.8h	v0, v0, v2
   738	WORD $0x2e212821  // sqxtun.8b	v1, v1
   739	WORD $0x6e212801  // sqxtun2.16b	v1, v0
   740	WORD $0x4f01e600  // movi.16b	v0, #48
   741	WORD $0x4e208420  // add.16b	v0, v1, v0
   742	WORD $0x3ca94800  // str	q0, [x0, w9, uxtw]
   743	WORD $0x321c0128  // orr	w8, w9, #0x10
   744	WORD $0xaa0803e0  // mov	x0, x8
   745	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
   746	WORD $0x910083ff  // add	sp, sp, #32
   747	WORD $0xd65f03c0  // ret
   748LBB0_47:
   749	WORD $0xd28f0aeb  // mov	x11, #30807
   750	WORD $0xf2b6226b  // movk	x11, #45331, lsl #16
   751	WORD $0xf2cca5eb  // movk	x11, #25903, lsl #32
   752	WORD $0xf2e734ab  // movk	x11, #14757, lsl #48
   753	WORD $0x9bcb7d2b  // umulh	x11, x9, x11
   754	WORD $0xd373fd6d  // lsr	x13, x11, #51
   755	WORD $0x710025bf  // cmp	w13, #9
   756	WORD $0x540000a8  // b.hi	LBB0_49 $20(%rip)
   757	WORD $0x1100c1ab  // add	w11, w13, #48
   758	WORD $0x3900010b  // strb	w11, [x8]
   759	WORD $0x5280002b  // mov	w11, #1
   760	WORD $0x1400001c  // b	LBB0_52 $112(%rip)
   761LBB0_49:
   762	WORD $0x71018dbf  // cmp	w13, #99
   763	WORD $0x540000e8  // b.hi	LBB0_51 $28(%rip)
   764Lloh60:
   765	WORD $0x10000c8b  // adr	x11, _Digits $400(%rip)
   766Lloh61:
   767	WORD $0x9100016b  // add	x11, x11, _Digits@PAGEOFF $0(%rip)
   768	WORD $0x786d596b  // ldrh	w11, [x11, w13, uxtw #1]
   769	WORD $0x7800100b  // sturh	w11, [x0, #1]
   770	WORD $0x5280004b  // mov	w11, #2
   771	WORD $0x14000014  // b	LBB0_52 $80(%rip)
   772LBB0_51:
   773	WORD $0x53023dab  // ubfx	w11, w13, #2, #14
   774	WORD $0x52828f6e  // mov	w14, #5243
   775	WORD $0x1b0e7d6b  // mul	w11, w11, w14
   776	WORD $0x53117d6b  // lsr	w11, w11, #17
   777	WORD $0x321c056e  // orr	w14, w11, #0x30
   778	WORD $0x3900040e  // strb	w14, [x0, #1]
   779	WORD $0x52800c8e  // mov	w14, #100
   780	WORD $0x1b0eb56b  // msub	w11, w11, w14, w13
   781	WORD $0x92403d6b  // and	x11, x11, #0xffff
   782	WORD $0xd37ff96b  // lsl	x11, x11, #1
   783Lloh62:
   784	WORD $0x10000a8e  // adr	x14, _Digits $336(%rip)
   785Lloh63:
   786	WORD $0x910001ce  // add	x14, x14, _Digits@PAGEOFF $0(%rip)
   787	WORD $0x386b69cf  // ldrb	w15, [x14, x11]
   788	WORD $0x3900080f  // strb	w15, [x0, #2]
   789	WORD $0x927f396b  // and	x11, x11, #0xfffe
   790	WORD $0x8b0b01cb  // add	x11, x14, x11
   791	WORD $0x3940056b  // ldrb	w11, [x11, #1]
   792	WORD $0x39000c0b  // strb	w11, [x0, #3]
   793	WORD $0x5280006b  // mov	w11, #3
   794LBB0_52:
   795	WORD $0x9b0ca5a9  // msub	x9, x13, x12, x9
   796	WORD $0xd299dfac  // mov	x12, #52989
   797	WORD $0xf2b08c2c  // movk	x12, #33889, lsl #16
   798	WORD $0xf2cee22c  // movk	x12, #30481, lsl #32
   799	WORD $0xf2f5798c  // movk	x12, #43980, lsl #48
   800	WORD $0x9bcc7d2c  // umulh	x12, x9, x12
   801	WORD $0xd35afd8c  // lsr	x12, x12, #26
   802	WORD $0x6f00e400  // movi.2d	v0, #0000000000000000
   803	WORD $0x6f00e401  // movi.2d	v1, #0000000000000000
   804	WORD $0x4e041d81  // mov.s	v1[0], w12
   805	WORD $0x5282eb2d  // mov	w13, #5977
   806	WORD $0x72ba36ed  // movk	w13, #53687, lsl #16
   807	WORD $0x0e040da2  // dup.2s	v2, w13
   808	WORD $0x0ea12823  // xtn.2s	v3, v1
   809	WORD $0x2ea2c063  // umull.2d	v3, v3, v2
   810	WORD $0x6f530463  // ushr.2d	v3, v3, #45
   811	WORD $0x5284e20d  // mov	w13, #10000
   812	WORD $0x0e040da4  // dup.2s	v4, w13
   813	WORD $0x0ea12865  // xtn.2s	v5, v3
   814	WORD $0x2ea4c0a5  // umull.2d	v5, v5, v4
   815	WORD $0x6ea58421  // sub.4s	v1, v1, v5
   816	WORD $0x4e413861  // zip1.8h	v1, v3, v1
   817	WORD $0x4f425421  // shl.2d	v1, v1, #2
   818	WORD $0x4e413821  // zip1.8h	v1, v1, v1
   819	WORD $0x4e813821  // zip1.4s	v1, v1, v1
   820Lloh64:
   821	WORD $0x10ffad8d  // adr	x13, lCPI0_0 $-2640(%rip)
   822Lloh65:
   823	WORD $0xfd4001a3  // ldr	d3, [x13, lCPI0_0@PAGEOFF] $0(%rip)
   824	WORD $0x2e63c025  // umull.4s	v5, v1, v3
   825	WORD $0x6e014021  // ext.16b	v1, v1, v1, #8
   826	WORD $0x2e63c021  // umull.4s	v1, v1, v3
   827	WORD $0x4e4158a1  // uzp2.8h	v1, v5, v1
   828Lloh66:
   829	WORD $0x10ffad0d  // adr	x13, lCPI0_1 $-2656(%rip)
   830Lloh67:
   831	WORD $0xfd4001a5  // ldr	d5, [x13, lCPI0_1@PAGEOFF] $0(%rip)
   832	WORD $0x2e65c026  // umull.4s	v6, v1, v5
   833	WORD $0x6e014021  // ext.16b	v1, v1, v1, #8
   834	WORD $0x2e65c021  // umull.4s	v1, v1, v5
   835	WORD $0x4e4158c1  // uzp2.8h	v1, v6, v1
   836	WORD $0x4f008546  // movi.8h	v6, #10
   837	WORD $0x4e669c27  // mul.8h	v7, v1, v6
   838	WORD $0x4f5054e7  // shl.2d	v7, v7, #16
   839	WORD $0x6e678421  // sub.8h	v1, v1, v7
   840	WORD $0x1b0aa589  // msub	w9, w12, w10, w9
   841	WORD $0x4e041d20  // mov.s	v0[0], w9
   842	WORD $0x0ea12807  // xtn.2s	v7, v0
   843	WORD $0x2ea2c0e2  // umull.2d	v2, v7, v2
   844	WORD $0x6f530442  // ushr.2d	v2, v2, #45
   845	WORD $0x0ea12847  // xtn.2s	v7, v2
   846	WORD $0x2ea4c0e4  // umull.2d	v4, v7, v4
   847	WORD $0x6ea48400  // sub.4s	v0, v0, v4
   848	WORD $0x4e403840  // zip1.8h	v0, v2, v0
   849	WORD $0x4f425400  // shl.2d	v0, v0, #2
   850	WORD $0x4e403800  // zip1.8h	v0, v0, v0
   851	WORD $0x4e803800  // zip1.4s	v0, v0, v0
   852	WORD $0x2e63c002  // umull.4s	v2, v0, v3
   853	WORD $0x6e004000  // ext.16b	v0, v0, v0, #8
   854	WORD $0x2e63c000  // umull.4s	v0, v0, v3
   855	WORD $0x4e405840  // uzp2.8h	v0, v2, v0
   856	WORD $0x2e65c002  // umull.4s	v2, v0, v5
   857	WORD $0x6e004000  // ext.16b	v0, v0, v0, #8
   858	WORD $0x2e65c000  // umull.4s	v0, v0, v5
   859	WORD $0x4e405840  // uzp2.8h	v0, v2, v0
   860	WORD $0x4e669c02  // mul.8h	v2, v0, v6
   861	WORD $0x4f505442  // shl.2d	v2, v2, #16
   862	WORD $0x6e628400  // sub.8h	v0, v0, v2
   863	WORD $0x2e212821  // sqxtun.8b	v1, v1
   864	WORD $0x6e212801  // sqxtun2.16b	v1, v0
   865	WORD $0x4f01e600  // movi.16b	v0, #48
   866	WORD $0x4e208420  // add.16b	v0, v1, v0
   867	WORD $0x3cab4900  // str	q0, [x8, w11, uxtw]
   868	WORD $0x321c0169  // orr	w9, w11, #0x10
   869	WORD $0x11000528  // add	w8, w9, #1
   870	WORD $0xaa0803e0  // mov	x0, x8
   871	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
   872	WORD $0x910083ff  // add	sp, sp, #32
   873	WORD $0xd65f03c0  // ret
   874_Digits:
   875	WORD $0x31303030  // .ascii 4, '0001020304050607'
   876	WORD $0x33303230  // .ascii 4, '0203040506070809'
   877	WORD $0x35303430  // .ascii 4, '0405060708091011'
   878	WORD $0x37303630  // .ascii 4, '0607080910111213'
   879	WORD $0x39303830  // .ascii 4, '0809101112131415'
   880	WORD $0x31313031  // .ascii 4, '1011121314151617'
   881	WORD $0x33313231  // .ascii 4, '1213141516171819'
   882	WORD $0x35313431  // .ascii 4, '1415161718192021'
   883	WORD $0x37313631  // .ascii 4, '1617181920212223'
   884	WORD $0x39313831  // .ascii 4, '1819202122232425'
   885	WORD $0x31323032  // .ascii 4, '2021222324252627'
   886	WORD $0x33323232  // .ascii 4, '2223242526272829'
   887	WORD $0x35323432  // .ascii 4, '2425262728293031'
   888	WORD $0x37323632  // .ascii 4, '2627282930313233'
   889	WORD $0x39323832  // .ascii 4, '2829303132333435'
   890	WORD $0x31333033  // .ascii 4, '3031323334353637'
   891	WORD $0x33333233  // .ascii 4, '3233343536373839'
   892	WORD $0x35333433  // .ascii 4, '3435363738394041'
   893	WORD $0x37333633  // .ascii 4, '3637383940414243'
   894	WORD $0x39333833  // .ascii 4, '3839404142434445'
   895	WORD $0x31343034  // .ascii 4, '4041424344454647'
   896	WORD $0x33343234  // .ascii 4, '4243444546474849'
   897	WORD $0x35343434  // .ascii 4, '4445464748495051'
   898	WORD $0x37343634  // .ascii 4, '4647484950515253'
   899	WORD $0x39343834  // .ascii 4, '4849505152535455'
   900	WORD $0x31353035  // .ascii 4, '5051525354555657'
   901	WORD $0x33353235  // .ascii 4, '5253545556575859'
   902	WORD $0x35353435  // .ascii 4, '5455565758596061'
   903	WORD $0x37353635  // .ascii 4, '5657585960616263'
   904	WORD $0x39353835  // .ascii 4, '5859606162636465'
   905	WORD $0x31363036  // .ascii 4, '6061626364656667'
   906	WORD $0x33363236  // .ascii 4, '6263646566676869'
   907	WORD $0x35363436  // .ascii 4, '6465666768697071'
   908	WORD $0x37363636  // .ascii 4, '6667686970717273'
   909	WORD $0x39363836  // .ascii 4, '6869707172737475'
   910	WORD $0x31373037  // .ascii 4, '7071727374757677'
   911	WORD $0x33373237  // .ascii 4, '7273747576777879'
   912	WORD $0x35373437  // .ascii 4, '7475767778798081'
   913	WORD $0x37373637  // .ascii 4, '7677787980818283'
   914	WORD $0x39373837  // .ascii 4, '7879808182838485'
   915	WORD $0x31383038  // .ascii 4, '8081828384858687'
   916	WORD $0x33383238  // .ascii 4, '8283848586878889'
   917	WORD $0x35383438  // .ascii 4, '8485868788899091'
   918	WORD $0x37383638  // .ascii 4, '8687888990919293'
   919	WORD $0x39383838  // .ascii 4, '8889909192939495'
   920	WORD $0x31393039  // .ascii 4, '9091929394959697'
   921	WORD $0x33393239  // .ascii 4, '9293949596979899'
   922	WORD $0x35393439  // .ascii 4, '949596979899'
   923	WORD $0x37393639  // .ascii 4, '96979899'
   924	WORD $0x39393839  // .ascii 4, '9899'
   925	  // .p2align 4, 0x00
   926_VecShiftShuffles:
   927	WORD $0x03020100  // .ascii 4, '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
   928	WORD $0x07060504  // .ascii 4, '\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x01\x02\x03\x04'
   929	WORD $0x0b0a0908  // .ascii 4, '\x08\t\n\x0b\x0c\r\x0e\x0f\x01\x02\x03\x04\x05\x06\x07\x08'
   930	WORD $0x0f0e0d0c  // .ascii 4, '\x0c\r\x0e\x0f\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c'
   931	WORD $0x04030201  // .ascii 4, '\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff'
   932	WORD $0x08070605  // .ascii 4, '\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\x02\x03\x04\x05'
   933	WORD $0x0c0b0a09  // .ascii 4, '\t\n\x0b\x0c\r\x0e\x0f\xff\x02\x03\x04\x05\x06\x07\x08\t'
   934	WORD $0xff0f0e0d  // .ascii 4, '\r\x0e\x0f\xff\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r'
   935	WORD $0x05040302  // .ascii 4, '\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff'
   936	WORD $0x09080706  // .ascii 4, '\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\x03\x04\x05\x06'
   937	WORD $0x0d0c0b0a  // .ascii 4, '\n\x0b\x0c\r\x0e\x0f\xff\xff\x03\x04\x05\x06\x07\x08\t\n'
   938	WORD $0xffff0f0e  // .ascii 4, '\x0e\x0f\xff\xff\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e'
   939	WORD $0x06050403  // .ascii 4, '\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff'
   940	WORD $0x0a090807  // .ascii 4, '\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\x04\x05\x06\x07'
   941	WORD $0x0e0d0c0b  // .ascii 4, '\x0b\x0c\r\x0e\x0f\xff\xff\xff\x04\x05\x06\x07\x08\t\n\x0b'
   942	WORD $0xffffff0f  // .ascii 4, '\x0f\xff\xff\xff\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
   943	WORD $0x07060504  // .ascii 4, '\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff'
   944	WORD $0x0b0a0908  // .ascii 4, '\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\x05\x06\x07\x08'
   945	WORD $0x0f0e0d0c  // .ascii 4, '\x0c\r\x0e\x0f\xff\xff\xff\xff\x05\x06\x07\x08\t\n\x0b\x0c'
   946	WORD $0xffffffff  // .ascii 4, '\xff\xff\xff\xff\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff'
   947	WORD $0x08070605  // .ascii 4, '\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff'
   948	WORD $0x0c0b0a09  // .ascii 4, '\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\x06\x07\x08\t'
   949	WORD $0xff0f0e0d  // .ascii 4, '\r\x0e\x0f\xff\xff\xff\xff\xff\x06\x07\x08\t\n\x0b\x0c\r'
   950	WORD $0xffffffff  // .ascii 4, '\xff\xff\xff\xff\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff'
   951	WORD $0x09080706  // .ascii 4, '\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff'
   952	WORD $0x0d0c0b0a  // .ascii 4, '\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\x07\x08\t\n'
   953	WORD $0xffff0f0e  // .ascii 4, '\x0e\x0f\xff\xff\xff\xff\xff\xff\x07\x08\t\n\x0b\x0c\r\x0e'
   954	WORD $0xffffffff  // .ascii 4, '\xff\xff\xff\xff\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff'
   955	WORD $0x0a090807  // .ascii 4, '\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff'
   956	WORD $0x0e0d0c0b  // .ascii 4, '\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\x08\t\n\x0b'
   957	WORD $0xffffff0f  // .ascii 4, '\x0f\xff\xff\xff\xff\xff\xff\xff\x08\t\n\x0b\x0c\r\x0e\x0f'
   958	WORD $0xffffffff  // .ascii 4, '\xff\xff\xff\xff\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff'
   959	WORD $0x0b0a0908  // .ascii 4, '\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\xff'
   960	WORD $0x0f0e0d0c  // .ascii 4, '\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\xff'
   961	WORD $0xffffffff  // .ascii 4, '\xff\xff\xff\xff\xff\xff\xff\xff'
   962	WORD $0xffffffff  // .ascii 4, '\xff\xff\xff\xff'
   963
   964TEXT ·__i64toa(SB), NOSPLIT, $0-24
   965	NO_LOCAL_POINTERS
   966
   967_entry:
   968	MOVD 16(g), R16
   969	SUB $96, RSP, R17
   970	CMP  R16, R17
   971	BLS  _stack_grow
   972
   973_i64toa:
   974	MOVD out+0(FP), R0
   975	MOVD val+8(FP), R1
   976	MOVD ·_subr__i64toa(SB), R11
   977	WORD $0x1000005e // adr x30, .+8
   978	JMP (R11)
   979	MOVD R0, ret+16(FP)
   980	RET
   981
   982_stack_grow:
   983	MOVD R30, R3
   984	CALL runtime·morestack_noctxt<>(SB)
   985	JMP  _entry

View as plain text