github.com/bytedance/sonic@v1.11.7-0.20240517092252-d2edb31b167b/internal/native/neon/skip_number_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 ·__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
    14  lCPI0_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  
    36  lCPI0_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)
    84  LBB0_4:
    85  	WORD $0x5280002d  // mov	w13, #1
    86  	WORD $0x140000a9  // b	LBB0_47 $676(%rip)
    87  LBB0_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)
    98  LBB0_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
   109  Lloh0:
   110  	WORD $0x10fff92b  // adr	x11, lCPI0_0 $-220(%rip)
   111  Lloh1:
   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
   115  Lloh2:
   116  	WORD $0x10fff92b  // adr	x11, lCPI0_1 $-220(%rip)
   117  Lloh3:
   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
   122  LBB0_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
   178  LBB0_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
   185  LBB0_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
   192  LBB0_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)
   203  LBB0_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)
   212  LBB0_24:
   213  	WORD $0xb100059f  // cmn	x12, #1
   214  	WORD $0xaa0f03ec  // mov	x12, x15
   215  	WORD $0x54000661  // b.ne	LBB0_46 $204(%rip)
   216  LBB0_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)
   222  LBB0_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)
   239  LBB0_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)
   244  LBB0_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)
   249  LBB0_35:
   250  	WORD $0x8b22410d  // add	x13, x8, w2, uxtw
   251  	WORD $0x8b0f01b0  // add	x16, x13, x15
   252  LBB0_36:
   253  	WORD $0x9280000d  // mov	x13, #-1
   254  	WORD $0xb40003eb  // cbz	x11, LBB0_51 $124(%rip)
   255  LBB0_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)
   272  LBB0_45:
   273  	WORD $0xcb0d03ed  // neg	x13, x13
   274  LBB0_46:
   275  	WORD $0xb7f801ad  // tbnz	x13, #63, LBB0_51 $52(%rip)
   276  LBB0_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
   284  LBB0_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
   290  LBB0_51:
   291  	WORD $0xaa2d03ea  // mvn	x10, x13
   292  	WORD $0x8b0a0108  // add	x8, x8, x10
   293  LBB0_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
   301  LBB0_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)
   306  LBB0_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)
   315  LBB0_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)
   321  LBB0_56:
   322  	WORD $0xaa2f03ea  // mvn	x10, x15
   323  	WORD $0xcb25414d  // sub	x13, x10, w5, uxtw
   324  	WORD $0x17ffffd7  // b	LBB0_46 $-164(%rip)
   325  LBB0_57:
   326  	WORD $0xaa2f03ea  // mvn	x10, x15
   327  	WORD $0xcb24414d  // sub	x13, x10, w4, uxtw
   328  	WORD $0x17ffffd4  // b	LBB0_46 $-176(%rip)
   329  LBB0_58:
   330  	WORD $0xaa2f03ea  // mvn	x10, x15
   331  	WORD $0xcb23414d  // sub	x13, x10, w3, uxtw
   332  	WORD $0x17ffffd1  // b	LBB0_46 $-188(%rip)
   333  LBB0_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
   341  LBB0_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  
   352  TEXT ·__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