...

Text file src/github.com/bytedance/sonic/internal/native/neon/skip_number_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 ·__skip_number_entry__(SB), NOSPLIT, $32
     9	NO_LOCAL_POINTERS
    10	WORD $0x100000a0 // adr x0, .+20
    11	MOVD R0, ret(FP)
    12	RET
    13	  // .p2align 4, 0x00
    14lCPI0_0:
    15	WORD $0x08040201
    16	WORD $0x80402010
    17	WORD $0x08040201
    18	WORD $0x80402010
    19	// // .byte 1
    20// .byte 2
    21// .byte 4
    22// .byte 8
    23// .byte 16
    24// .byte 32
    25// .byte 64
    26// .byte 128
    27// .byte 1
    28// .byte 2
    29// .byte 4
    30// .byte 8
    31// .byte 16
    32// .byte 32
    33// .byte 64
    34// .byte 128
    35
    36lCPI0_1:
    37	WORD $0x09010800
    38	WORD $0x0b030a02
    39	WORD $0x0d050c04
    40	WORD $0x0f070e06
    41	// // .byte 0
    42// .byte 8
    43// .byte 1
    44// .byte 9
    45// .byte 2
    46// .byte 10
    47// .byte 3
    48// .byte 11
    49// .byte 4
    50// .byte 12
    51// .byte 5
    52// .byte 13
    53// .byte 6
    54// .byte 14
    55// .byte 7
    56// .byte 15
    57
    58_skip_number:
    59	WORD $0xd100c3ff  // sub	sp, sp, #48
    60	WORD $0xa900cff4  // stp	x20, x19, [sp, #8]
    61	WORD $0xa901fbfd  // stp	fp, lr, [sp, #24]
    62	WORD $0xa93ffbfd  // stp	fp, lr, [sp, #-8]
    63	WORD $0xd10023fd  // sub	fp, sp, #8
    64	WORD $0xaa0003e8  // mov	x8, x0
    65	WORD $0xf9400020  // ldr	x0, [x1]
    66	WORD $0xa9402909  // ldp	x9, x10, [x8]
    67	WORD $0x8b000128  // add	x8, x9, x0
    68	WORD $0xaa0803eb  // mov	x11, x8
    69	WORD $0x3840156c  // ldrb	w12, [x11], #1
    70	WORD $0x7100b59f  // cmp	w12, #45
    71	WORD $0x1a9f17ed  // cset	w13, eq
    72	WORD $0x9a8b1108  // csel	x8, x8, x11, ne
    73	WORD $0xcb00014a  // sub	x10, x10, x0
    74	WORD $0xeb0d014e  // subs	x14, x10, x13
    75	WORD $0x54001c40  // b.eq	LBB0_59 $904(%rip)
    76	WORD $0x3940010a  // ldrb	w10, [x8]
    77	WORD $0x5100e94b  // sub	w11, w10, #58
    78	WORD $0x3100297f  // cmn	w11, #10
    79	WORD $0x540017a3  // b.lo	LBB0_52 $756(%rip)
    80	WORD $0x7100c15f  // cmp	w10, #48
    81	WORD $0x540001e1  // b.ne	LBB0_6 $60(%rip)
    82	WORD $0xf10005df  // cmp	x14, #1
    83	WORD $0x54000061  // b.ne	LBB0_5 $12(%rip)
    84LBB0_4:
    85	WORD $0x5280002d  // mov	w13, #1
    86	WORD $0x140000a9  // b	LBB0_47 $676(%rip)
    87LBB0_5:
    88	WORD $0x3940050a  // ldrb	w10, [x8, #1]
    89	WORD $0x5100b94a  // sub	w10, w10, #46
    90	WORD $0x7100dd5f  // cmp	w10, #55
    91	WORD $0x5280002b  // mov	w11, #1
    92	WORD $0x9aca216a  // lsl	x10, x11, x10
    93	WORD $0xb20903eb  // mov	x11, #36028797027352576
    94	WORD $0xf280002b  // movk	x11, #1
    95	WORD $0x8a0b014a  // and	x10, x10, x11
    96	WORD $0xfa409944  // ccmp	x10, #0, #4, ls
    97	WORD $0x54fffea0  // b.eq	LBB0_4 $-44(%rip)
    98LBB0_6:
    99	WORD $0xf10041df  // cmp	x14, #16
   100	WORD $0x54001a63  // b.lo	LBB0_60 $844(%rip)
   101	WORD $0xd2800010  // mov	x16, #0
   102	WORD $0xd280000f  // mov	x15, #0
   103	WORD $0x9280000a  // mov	x10, #-1
   104	WORD $0x4f01e5c0  // movi.16b	v0, #46
   105	WORD $0x4f01e561  // movi.16b	v1, #43
   106	WORD $0x4f01e5a2  // movi.16b	v2, #45
   107	WORD $0x4f06e603  // movi.16b	v3, #208
   108	WORD $0x4f00e544  // movi.16b	v4, #10
   109Lloh0:
   110	WORD $0x10fff92b  // adr	x11, lCPI0_0 $-220(%rip)
   111Lloh1:
   112	WORD $0x3dc00165  // ldr	q5, [x11, lCPI0_0@PAGEOFF] $0(%rip)
   113	WORD $0x4f06e7e6  // movi.16b	v6, #223
   114	WORD $0x4f02e4a7  // movi.16b	v7, #69
   115Lloh2:
   116	WORD $0x10fff92b  // adr	x11, lCPI0_1 $-220(%rip)
   117Lloh3:
   118	WORD $0x3dc00170  // ldr	q16, [x11, lCPI0_1@PAGEOFF] $0(%rip)
   119	WORD $0x12800011  // mov	w17, #-1
   120	WORD $0x9280000c  // mov	x12, #-1
   121	WORD $0x9280000b  // mov	x11, #-1
   122LBB0_8:
   123	WORD $0x3cef6911  // ldr	q17, [x8, x15]
   124	WORD $0x6e208e32  // cmeq.16b	v18, v17, v0
   125	WORD $0x6e218e33  // cmeq.16b	v19, v17, v1
   126	WORD $0x6e228e34  // cmeq.16b	v20, v17, v2
   127	WORD $0x4e238635  // add.16b	v21, v17, v3
   128	WORD $0x6e353495  // cmhi.16b	v21, v4, v21
   129	WORD $0x4e261e31  // and.16b	v17, v17, v6
   130	WORD $0x6e278e31  // cmeq.16b	v17, v17, v7
   131	WORD $0x4eb41e73  // orr.16b	v19, v19, v20
   132	WORD $0x4eb21eb4  // orr.16b	v20, v21, v18
   133	WORD $0x4eb31e35  // orr.16b	v21, v17, v19
   134	WORD $0x4eb51e94  // orr.16b	v20, v20, v21
   135	WORD $0x4e251e52  // and.16b	v18, v18, v5
   136	WORD $0x4e100252  // tbl.16b	v18, { v18 }, v16
   137	WORD $0x4e71ba52  // addv.8h	h18, v18
   138	WORD $0x1e260243  // fmov	w3, s18
   139	WORD $0x4e251e31  // and.16b	v17, v17, v5
   140	WORD $0x4e100231  // tbl.16b	v17, { v17 }, v16
   141	WORD $0x4e71ba31  // addv.8h	h17, v17
   142	WORD $0x1e260224  // fmov	w4, s17
   143	WORD $0x4e251e71  // and.16b	v17, v19, v5
   144	WORD $0x4e100231  // tbl.16b	v17, { v17 }, v16
   145	WORD $0x4e71ba31  // addv.8h	h17, v17
   146	WORD $0x1e260226  // fmov	w6, s17
   147	WORD $0x4e251e91  // and.16b	v17, v20, v5
   148	WORD $0x4e100231  // tbl.16b	v17, { v17 }, v16
   149	WORD $0x4e71ba31  // addv.8h	h17, v17
   150	WORD $0x1e260222  // fmov	w2, s17
   151	WORD $0x2a2203e2  // mvn	w2, w2
   152	WORD $0x32103c42  // orr	w2, w2, #0xffff0000
   153	WORD $0x5ac00042  // rbit	w2, w2
   154	WORD $0x5ac01042  // clz	w2, w2
   155	WORD $0x1ac22225  // lsl	w5, w17, w2
   156	WORD $0x0a250067  // bic	w7, w3, w5
   157	WORD $0x0a250093  // bic	w19, w4, w5
   158	WORD $0x0a2500d4  // bic	w20, w6, w5
   159	WORD $0x7100405f  // cmp	w2, #16
   160	WORD $0x1a870065  // csel	w5, w3, w7, eq
   161	WORD $0x1a930084  // csel	w4, w4, w19, eq
   162	WORD $0x1a9400c3  // csel	w3, w6, w20, eq
   163	WORD $0x510004a6  // sub	w6, w5, #1
   164	WORD $0x6a0500c6  // ands	w6, w6, w5
   165	WORD $0x54001041  // b.ne	LBB0_55 $520(%rip)
   166	WORD $0x51000486  // sub	w6, w4, #1
   167	WORD $0x6a0400c6  // ands	w6, w6, w4
   168	WORD $0x54000fe1  // b.ne	LBB0_55 $508(%rip)
   169	WORD $0x51000466  // sub	w6, w3, #1
   170	WORD $0x6a0300c6  // ands	w6, w6, w3
   171	WORD $0x54000f81  // b.ne	LBB0_55 $496(%rip)
   172	WORD $0x340000c5  // cbz	w5, LBB0_14 $24(%rip)
   173	WORD $0x5ac000a5  // rbit	w5, w5
   174	WORD $0x5ac010a5  // clz	w5, w5
   175	WORD $0xb100057f  // cmn	x11, #1
   176	WORD $0x54000f81  // b.ne	LBB0_56 $496(%rip)
   177	WORD $0x8b0501eb  // add	x11, x15, x5
   178LBB0_14:
   179	WORD $0x340000c4  // cbz	w4, LBB0_17 $24(%rip)
   180	WORD $0x5ac00084  // rbit	w4, w4
   181	WORD $0x5ac01084  // clz	w4, w4
   182	WORD $0xb100059f  // cmn	x12, #1
   183	WORD $0x54000f21  // b.ne	LBB0_57 $484(%rip)
   184	WORD $0x8b0401ec  // add	x12, x15, x4
   185LBB0_17:
   186	WORD $0x340000c3  // cbz	w3, LBB0_20 $24(%rip)
   187	WORD $0x5ac00063  // rbit	w3, w3
   188	WORD $0x5ac01063  // clz	w3, w3
   189	WORD $0xb100055f  // cmn	x10, #1
   190	WORD $0x54000ec1  // b.ne	LBB0_58 $472(%rip)
   191	WORD $0x8b0301ea  // add	x10, x15, x3
   192LBB0_20:
   193	WORD $0x7100405f  // cmp	w2, #16
   194	WORD $0x54000621  // b.ne	LBB0_35 $196(%rip)
   195	WORD $0x910041ef  // add	x15, x15, #16
   196	WORD $0xd1004210  // sub	x16, x16, #16
   197	WORD $0x8b1001c2  // add	x2, x14, x16
   198	WORD $0xf1003c5f  // cmp	x2, #15
   199	WORD $0x54fff6e8  // b.hi	LBB0_8 $-292(%rip)
   200	WORD $0x8b0f0110  // add	x16, x8, x15
   201	WORD $0xeb0f01df  // cmp	x14, x15
   202	WORD $0x54000560  // b.eq	LBB0_36 $172(%rip)
   203LBB0_23:
   204	WORD $0x8b02020e  // add	x14, x16, x2
   205	WORD $0xaa3003ef  // mvn	x15, x16
   206	WORD $0x8b090011  // add	x17, x0, x9
   207	WORD $0x8b1101ef  // add	x15, x15, x17
   208	WORD $0x8b0d01ed  // add	x13, x15, x13
   209	WORD $0xcb08020f  // sub	x15, x16, x8
   210	WORD $0xaa1003f1  // mov	x17, x16
   211	WORD $0x14000009  // b	LBB0_26 $36(%rip)
   212LBB0_24:
   213	WORD $0xb100059f  // cmn	x12, #1
   214	WORD $0xaa0f03ec  // mov	x12, x15
   215	WORD $0x54000661  // b.ne	LBB0_46 $204(%rip)
   216LBB0_25:
   217	WORD $0xd10005ad  // sub	x13, x13, #1
   218	WORD $0x910005ef  // add	x15, x15, #1
   219	WORD $0xaa1103f0  // mov	x16, x17
   220	WORD $0xd1000442  // sub	x2, x2, #1
   221	WORD $0xb4000882  // cbz	x2, LBB0_53 $272(%rip)
   222LBB0_26:
   223	WORD $0x38401623  // ldrb	w3, [x17], #1
   224	WORD $0x5100c064  // sub	w4, w3, #48
   225	WORD $0x7100289f  // cmp	w4, #10
   226	WORD $0x54ffff03  // b.lo	LBB0_25 $-32(%rip)
   227	WORD $0x7100b47f  // cmp	w3, #45
   228	WORD $0x5400016d  // b.le	LBB0_32 $44(%rip)
   229	WORD $0x7101947f  // cmp	w3, #101
   230	WORD $0x54fffe20  // b.eq	LBB0_24 $-60(%rip)
   231	WORD $0x7101147f  // cmp	w3, #69
   232	WORD $0x54fffde0  // b.eq	LBB0_24 $-68(%rip)
   233	WORD $0x7100b87f  // cmp	w3, #46
   234	WORD $0x540001e1  // b.ne	LBB0_36 $60(%rip)
   235	WORD $0xb100057f  // cmn	x11, #1
   236	WORD $0xaa0f03eb  // mov	x11, x15
   237	WORD $0x54fffda0  // b.eq	LBB0_25 $-76(%rip)
   238	WORD $0x1400001e  // b	LBB0_46 $120(%rip)
   239LBB0_32:
   240	WORD $0x7100ac7f  // cmp	w3, #43
   241	WORD $0x54000060  // b.eq	LBB0_34 $12(%rip)
   242	WORD $0x7100b47f  // cmp	w3, #45
   243	WORD $0x540000e1  // b.ne	LBB0_36 $28(%rip)
   244LBB0_34:
   245	WORD $0xb100055f  // cmn	x10, #1
   246	WORD $0xaa0f03ea  // mov	x10, x15
   247	WORD $0x54fffca0  // b.eq	LBB0_25 $-108(%rip)
   248	WORD $0x14000016  // b	LBB0_46 $88(%rip)
   249LBB0_35:
   250	WORD $0x8b22410d  // add	x13, x8, w2, uxtw
   251	WORD $0x8b0f01b0  // add	x16, x13, x15
   252LBB0_36:
   253	WORD $0x9280000d  // mov	x13, #-1
   254	WORD $0xb40003eb  // cbz	x11, LBB0_51 $124(%rip)
   255LBB0_37:
   256	WORD $0xb40003ca  // cbz	x10, LBB0_51 $120(%rip)
   257	WORD $0xb40003ac  // cbz	x12, LBB0_51 $116(%rip)
   258	WORD $0xcb08020d  // sub	x13, x16, x8
   259	WORD $0xd10005ae  // sub	x14, x13, #1
   260	WORD $0xeb0e017f  // cmp	x11, x14
   261	WORD $0x54000160  // b.eq	LBB0_45 $44(%rip)
   262	WORD $0xeb0e015f  // cmp	x10, x14
   263	WORD $0x54000120  // b.eq	LBB0_45 $36(%rip)
   264	WORD $0xeb0e019f  // cmp	x12, x14
   265	WORD $0x540000e0  // b.eq	LBB0_45 $28(%rip)
   266	WORD $0xf100054e  // subs	x14, x10, #1
   267	WORD $0x540001cb  // b.lt	LBB0_48 $56(%rip)
   268	WORD $0xeb0e019f  // cmp	x12, x14
   269	WORD $0x54000180  // b.eq	LBB0_48 $48(%rip)
   270	WORD $0xaa2a03ed  // mvn	x13, x10
   271	WORD $0x1400000f  // b	LBB0_51 $60(%rip)
   272LBB0_45:
   273	WORD $0xcb0d03ed  // neg	x13, x13
   274LBB0_46:
   275	WORD $0xb7f801ad  // tbnz	x13, #63, LBB0_51 $52(%rip)
   276LBB0_47:
   277	WORD $0x8b0d0108  // add	x8, x8, x13
   278	WORD $0xcb090108  // sub	x8, x8, x9
   279	WORD $0xf9000028  // str	x8, [x1]
   280	WORD $0xa941fbfd  // ldp	fp, lr, [sp, #24]
   281	WORD $0xa940cff4  // ldp	x20, x19, [sp, #8]
   282	WORD $0x9100c3ff  // add	sp, sp, #48
   283	WORD $0xd65f03c0  // ret
   284LBB0_48:
   285	WORD $0xaa0c016a  // orr	x10, x11, x12
   286	WORD $0xb7f8022a  // tbnz	x10, #63, LBB0_54 $68(%rip)
   287	WORD $0xeb0c017f  // cmp	x11, x12
   288	WORD $0x540001eb  // b.lt	LBB0_54 $60(%rip)
   289	WORD $0xaa2b03ed  // mvn	x13, x11
   290LBB0_51:
   291	WORD $0xaa2d03ea  // mvn	x10, x13
   292	WORD $0x8b0a0108  // add	x8, x8, x10
   293LBB0_52:
   294	WORD $0x92800020  // mov	x0, #-2
   295	WORD $0xcb090108  // sub	x8, x8, x9
   296	WORD $0xf9000028  // str	x8, [x1]
   297	WORD $0xa941fbfd  // ldp	fp, lr, [sp, #24]
   298	WORD $0xa940cff4  // ldp	x20, x19, [sp, #8]
   299	WORD $0x9100c3ff  // add	sp, sp, #48
   300	WORD $0xd65f03c0  // ret
   301LBB0_53:
   302	WORD $0xaa0e03f0  // mov	x16, x14
   303	WORD $0x9280000d  // mov	x13, #-1
   304	WORD $0xb5fffaeb  // cbnz	x11, LBB0_37 $-164(%rip)
   305	WORD $0x17fffff4  // b	LBB0_51 $-48(%rip)
   306LBB0_54:
   307	WORD $0xd37ffd4a  // lsr	x10, x10, #63
   308	WORD $0x5200014a  // eor	w10, w10, #0x1
   309	WORD $0xd100058e  // sub	x14, x12, #1
   310	WORD $0xeb0e017f  // cmp	x11, x14
   311	WORD $0x1a9f17eb  // cset	w11, eq
   312	WORD $0x6a0b015f  // tst	w10, w11
   313	WORD $0xda8c01ad  // csinv	x13, x13, x12, eq
   314	WORD $0x17ffffdf  // b	LBB0_46 $-132(%rip)
   315LBB0_55:
   316	WORD $0x5ac000ca  // rbit	w10, w6
   317	WORD $0x5ac0114a  // clz	w10, w10
   318	WORD $0xaa2f03eb  // mvn	x11, x15
   319	WORD $0xcb0a016d  // sub	x13, x11, x10
   320	WORD $0x17ffffda  // b	LBB0_46 $-152(%rip)
   321LBB0_56:
   322	WORD $0xaa2f03ea  // mvn	x10, x15
   323	WORD $0xcb25414d  // sub	x13, x10, w5, uxtw
   324	WORD $0x17ffffd7  // b	LBB0_46 $-164(%rip)
   325LBB0_57:
   326	WORD $0xaa2f03ea  // mvn	x10, x15
   327	WORD $0xcb24414d  // sub	x13, x10, w4, uxtw
   328	WORD $0x17ffffd4  // b	LBB0_46 $-176(%rip)
   329LBB0_58:
   330	WORD $0xaa2f03ea  // mvn	x10, x15
   331	WORD $0xcb23414d  // sub	x13, x10, w3, uxtw
   332	WORD $0x17ffffd1  // b	LBB0_46 $-188(%rip)
   333LBB0_59:
   334	WORD $0x92800000  // mov	x0, #-1
   335	WORD $0xcb090108  // sub	x8, x8, x9
   336	WORD $0xf9000028  // str	x8, [x1]
   337	WORD $0xa941fbfd  // ldp	fp, lr, [sp, #24]
   338	WORD $0xa940cff4  // ldp	x20, x19, [sp, #8]
   339	WORD $0x9100c3ff  // add	sp, sp, #48
   340	WORD $0xd65f03c0  // ret
   341LBB0_60:
   342	WORD $0x9280000b  // mov	x11, #-1
   343	WORD $0xaa0803f0  // mov	x16, x8
   344	WORD $0xaa0e03e2  // mov	x2, x14
   345	WORD $0x9280000c  // mov	x12, #-1
   346	WORD $0x9280000a  // mov	x10, #-1
   347	WORD $0x17ffff87  // b	LBB0_23 $-484(%rip)
   348	  // .p2align 2, 0x00
   349_MASK_USE_NUMBER:
   350	WORD $0x00000002  // .long 2
   351
   352TEXT ·__skip_number(SB), NOSPLIT, $0-24
   353	NO_LOCAL_POINTERS
   354
   355_entry:
   356	MOVD 16(g), R16
   357	SUB $112, RSP, R17
   358	CMP  R16, R17
   359	BLS  _stack_grow
   360
   361_skip_number:
   362	MOVD s+0(FP), R0
   363	MOVD p+8(FP), R1
   364	MOVD ·_subr__skip_number(SB), R11
   365	WORD $0x1000005e // adr x30, .+8
   366	JMP (R11)
   367	MOVD R0, ret+16(FP)
   368	RET
   369
   370_stack_grow:
   371	MOVD R30, R3
   372	CALL runtime·morestack_noctxt<>(SB)
   373	JMP  _entry

View as plain text