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