github.com/bytedance/sonic@v1.11.7-0.20240517092252-d2edb31b167b/internal/native/neon/vstring_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 ·__vstring_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 _vstring: 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 $0xf9400028 // ldr x8, [x1] 65 WORD $0xf9400409 // ldr x9, [x0, #8] 66 WORD $0x37280c43 // tbnz w3, #5, LBB0_11 $392(%rip) 67 WORD $0xeb08012b // subs x11, x9, x8 68 WORD $0x54003b00 // b.eq LBB0_75 $1888(%rip) 69 WORD $0xf940000a // ldr x10, [x0] 70 WORD $0xf101017f // cmp x11, #64 71 WORD $0x54001d43 // b.lo LBB0_26 $936(%rip) 72 WORD $0xd280000c // mov x12, #0 73 WORD $0x92800009 // mov x9, #-1 74 WORD $0x4f01e440 // movi.16b v0, #34 75 WORD $0x4f02e781 // movi.16b v1, #92 76 Lloh0: 77 WORD $0x10fffced // adr x13, lCPI0_0 $-100(%rip) 78 Lloh1: 79 WORD $0x3dc001a2 // ldr q2, [x13, lCPI0_0@PAGEOFF] $0(%rip) 80 Lloh2: 81 WORD $0x10fffd2d // adr x13, lCPI0_1 $-92(%rip) 82 Lloh3: 83 WORD $0x3dc001a3 // ldr q3, [x13, lCPI0_1@PAGEOFF] $0(%rip) 84 WORD $0xaa0803ed // mov x13, x8 85 LBB0_4: 86 WORD $0x8b0d014e // add x14, x10, x13 87 WORD $0xad4015c4 // ldp q4, q5, [x14] 88 WORD $0xad411dc6 // ldp q6, q7, [x14, #32] 89 WORD $0x6e208c90 // cmeq.16b v16, v4, v0 90 WORD $0x6e208cb1 // cmeq.16b v17, v5, v0 91 WORD $0x6e208cd2 // cmeq.16b v18, v6, v0 92 WORD $0x6e208cf3 // cmeq.16b v19, v7, v0 93 WORD $0x6e218c84 // cmeq.16b v4, v4, v1 94 WORD $0x6e218ca5 // cmeq.16b v5, v5, v1 95 WORD $0x6e218cc6 // cmeq.16b v6, v6, v1 96 WORD $0x6e218ce7 // cmeq.16b v7, v7, v1 97 WORD $0x4e221e10 // and.16b v16, v16, v2 98 WORD $0x4e030210 // tbl.16b v16, { v16 }, v3 99 WORD $0x4e71ba10 // addv.8h h16, v16 100 WORD $0x1e26020e // fmov w14, s16 101 WORD $0x4e221e30 // and.16b v16, v17, v2 102 WORD $0x4e030210 // tbl.16b v16, { v16 }, v3 103 WORD $0x4e71ba10 // addv.8h h16, v16 104 WORD $0x1e26020f // fmov w15, s16 105 WORD $0x4e221e50 // and.16b v16, v18, v2 106 WORD $0x4e030210 // tbl.16b v16, { v16 }, v3 107 WORD $0x4e71ba10 // addv.8h h16, v16 108 WORD $0x1e260210 // fmov w16, s16 109 WORD $0x4e221e70 // and.16b v16, v19, v2 110 WORD $0x4e030210 // tbl.16b v16, { v16 }, v3 111 WORD $0x4e71ba10 // addv.8h h16, v16 112 WORD $0x1e260211 // fmov w17, s16 113 WORD $0x4e221c84 // and.16b v4, v4, v2 114 WORD $0x4e030084 // tbl.16b v4, { v4 }, v3 115 WORD $0x4e71b884 // addv.8h h4, v4 116 WORD $0x1e260083 // fmov w3, s4 117 WORD $0x4e221ca4 // and.16b v4, v5, v2 118 WORD $0x4e030084 // tbl.16b v4, { v4 }, v3 119 WORD $0x4e71b884 // addv.8h h4, v4 120 WORD $0x1e260084 // fmov w4, s4 121 WORD $0x4e221cc4 // and.16b v4, v6, v2 122 WORD $0x4e030084 // tbl.16b v4, { v4 }, v3 123 WORD $0x4e71b884 // addv.8h h4, v4 124 WORD $0x1e260085 // fmov w5, s4 125 WORD $0x4e221ce4 // and.16b v4, v7, v2 126 WORD $0x4e030084 // tbl.16b v4, { v4 }, v3 127 WORD $0x4e71b884 // addv.8h h4, v4 128 WORD $0x1e260086 // fmov w6, s4 129 WORD $0xd3607e10 // lsl x16, x16, #32 130 WORD $0xaa11c210 // orr x16, x16, x17, lsl #48 131 WORD $0x53103def // lsl w15, w15, #16 132 WORD $0xaa0f020f // orr x15, x16, x15 133 WORD $0xaa0e01ee // orr x14, x15, x14 134 WORD $0xd3607caf // lsl x15, x5, #32 135 WORD $0xaa06c1ef // orr x15, x15, x6, lsl #48 136 WORD $0x53103c90 // lsl w16, w4, #16 137 WORD $0xaa1001ef // orr x15, x15, x16 138 WORD $0xaa0301ef // orr x15, x15, x3 139 WORD $0xb500010f // cbnz x15, LBB0_8 $32(%rip) 140 WORD $0xb500018c // cbnz x12, LBB0_9 $48(%rip) 141 WORD $0xb50002ce // cbnz x14, LBB0_10 $88(%rip) 142 LBB0_7: 143 WORD $0xd101016b // sub x11, x11, #64 144 WORD $0x910101ad // add x13, x13, #64 145 WORD $0xf100fd7f // cmp x11, #63 146 WORD $0x54fff8a8 // b.hi LBB0_4 $-236(%rip) 147 WORD $0x140000a0 // b LBB0_24 $640(%rip) 148 LBB0_8: 149 WORD $0xb100053f // cmn x9, #1 150 WORD $0xdac001f0 // rbit x16, x15 151 WORD $0xdac01210 // clz x16, x16 152 WORD $0x8b0d0210 // add x16, x16, x13 153 WORD $0x9a901129 // csel x9, x9, x16, ne 154 LBB0_9: 155 WORD $0x8a2c01f0 // bic x16, x15, x12 156 WORD $0xaa100591 // orr x17, x12, x16, lsl #1 157 WORD $0x8a3101ec // bic x12, x15, x17 158 WORD $0x9201f18c // and x12, x12, #0xaaaaaaaaaaaaaaaa 159 WORD $0xab10018f // adds x15, x12, x16 160 WORD $0x1a9f37ec // cset w12, hs 161 WORD $0xd37ff9ef // lsl x15, x15, #1 162 WORD $0xd200f1ef // eor x15, x15, #0x5555555555555555 163 WORD $0x8a1101ef // and x15, x15, x17 164 WORD $0x8a2f01ce // bic x14, x14, x15 165 WORD $0xb4fffd8e // cbz x14, LBB0_7 $-80(%rip) 166 LBB0_10: 167 WORD $0xdac001ca // rbit x10, x14 168 WORD $0xdac0114a // clz x10, x10 169 WORD $0x8b0d014a // add x10, x10, x13 170 WORD $0x9100054e // add x14, x10, #1 171 WORD $0xb6f8102e // tbz x14, #63, LBB0_23 $516(%rip) 172 WORD $0x1400017a // b LBB0_76 $1512(%rip) 173 LBB0_11: 174 WORD $0xeb08012c // subs x12, x9, x8 175 WORD $0x54002ee0 // b.eq LBB0_75 $1500(%rip) 176 WORD $0xf940000a // ldr x10, [x0] 177 WORD $0x10fff18f // adr x15, lCPI0_0 $-464(%rip) 178 WORD $0x10fff1ee // adr x14, lCPI0_1 $-452(%rip) 179 WORD $0xf101019f // cmp x12, #64 180 WORD $0x540015e3 // b.lo LBB0_32 $700(%rip) 181 WORD $0xd280000b // mov x11, #0 182 WORD $0x92800009 // mov x9, #-1 183 WORD $0x4f01e440 // movi.16b v0, #34 184 WORD $0x3dc001e1 // ldr q1, [x15, lCPI0_0@PAGEOFF] $0(%rip) 185 WORD $0x3dc001c2 // ldr q2, [x14, lCPI0_1@PAGEOFF] $0(%rip) 186 WORD $0x4f02e783 // movi.16b v3, #92 187 WORD $0x4f01e404 // movi.16b v4, #32 188 WORD $0xaa0803ed // mov x13, x8 189 LBB0_14: 190 WORD $0x8b0d0150 // add x16, x10, x13 191 WORD $0xad401e10 // ldp q16, q7, [x16] 192 WORD $0xad411606 // ldp q6, q5, [x16, #32] 193 WORD $0x6e208e11 // cmeq.16b v17, v16, v0 194 WORD $0x4e211e31 // and.16b v17, v17, v1 195 WORD $0x4e020231 // tbl.16b v17, { v17 }, v2 196 WORD $0x4e71ba31 // addv.8h h17, v17 197 WORD $0x1e260230 // fmov w16, s17 198 WORD $0x6e208cf1 // cmeq.16b v17, v7, v0 199 WORD $0x4e211e31 // and.16b v17, v17, v1 200 WORD $0x4e020231 // tbl.16b v17, { v17 }, v2 201 WORD $0x4e71ba31 // addv.8h h17, v17 202 WORD $0x1e260231 // fmov w17, s17 203 WORD $0x6e208cd1 // cmeq.16b v17, v6, v0 204 WORD $0x4e211e31 // and.16b v17, v17, v1 205 WORD $0x4e020231 // tbl.16b v17, { v17 }, v2 206 WORD $0x4e71ba31 // addv.8h h17, v17 207 WORD $0x1e260223 // fmov w3, s17 208 WORD $0x6e208cb1 // cmeq.16b v17, v5, v0 209 WORD $0x4e211e31 // and.16b v17, v17, v1 210 WORD $0x4e020231 // tbl.16b v17, { v17 }, v2 211 WORD $0x4e71ba31 // addv.8h h17, v17 212 WORD $0x1e260224 // fmov w4, s17 213 WORD $0x6e238e11 // cmeq.16b v17, v16, v3 214 WORD $0x4e211e31 // and.16b v17, v17, v1 215 WORD $0x4e020231 // tbl.16b v17, { v17 }, v2 216 WORD $0x4e71ba31 // addv.8h h17, v17 217 WORD $0x1e260225 // fmov w5, s17 218 WORD $0x6e238cf1 // cmeq.16b v17, v7, v3 219 WORD $0x4e211e31 // and.16b v17, v17, v1 220 WORD $0x4e020231 // tbl.16b v17, { v17 }, v2 221 WORD $0x4e71ba31 // addv.8h h17, v17 222 WORD $0x1e260226 // fmov w6, s17 223 WORD $0x6e238cd1 // cmeq.16b v17, v6, v3 224 WORD $0x4e211e31 // and.16b v17, v17, v1 225 WORD $0x4e020231 // tbl.16b v17, { v17 }, v2 226 WORD $0x4e71ba31 // addv.8h h17, v17 227 WORD $0x1e260227 // fmov w7, s17 228 WORD $0x6e238cb1 // cmeq.16b v17, v5, v3 229 WORD $0x4e211e31 // and.16b v17, v17, v1 230 WORD $0x4e020231 // tbl.16b v17, { v17 }, v2 231 WORD $0x4e71ba31 // addv.8h h17, v17 232 WORD $0x1e260233 // fmov w19, s17 233 WORD $0xd3607c63 // lsl x3, x3, #32 234 WORD $0xaa04c063 // orr x3, x3, x4, lsl #48 235 WORD $0x53103e31 // lsl w17, w17, #16 236 WORD $0xaa110071 // orr x17, x3, x17 237 WORD $0xaa100230 // orr x16, x17, x16 238 WORD $0xd3607cf1 // lsl x17, x7, #32 239 WORD $0xaa13c231 // orr x17, x17, x19, lsl #48 240 WORD $0x53103cc3 // lsl w3, w6, #16 241 WORD $0xaa030231 // orr x17, x17, x3 242 WORD $0xaa050231 // orr x17, x17, x5 243 WORD $0xb5000451 // cbnz x17, LBB0_19 $136(%rip) 244 WORD $0xb50004cb // cbnz x11, LBB0_20 $152(%rip) 245 LBB0_16: 246 WORD $0x6e303490 // cmhi.16b v16, v4, v16 247 WORD $0x4e211e10 // and.16b v16, v16, v1 248 WORD $0x4e020210 // tbl.16b v16, { v16 }, v2 249 WORD $0x4e71ba10 // addv.8h h16, v16 250 WORD $0x1e260211 // fmov w17, s16 251 WORD $0x6e273487 // cmhi.16b v7, v4, v7 252 WORD $0x4e211ce7 // and.16b v7, v7, v1 253 WORD $0x4e0200e7 // tbl.16b v7, { v7 }, v2 254 WORD $0x4e71b8e7 // addv.8h h7, v7 255 WORD $0x1e2600e3 // fmov w3, s7 256 WORD $0x6e263486 // cmhi.16b v6, v4, v6 257 WORD $0x4e211cc6 // and.16b v6, v6, v1 258 WORD $0x4e0200c6 // tbl.16b v6, { v6 }, v2 259 WORD $0x4e71b8c6 // addv.8h h6, v6 260 WORD $0x1e2600c4 // fmov w4, s6 261 WORD $0x6e253485 // cmhi.16b v5, v4, v5 262 WORD $0x4e211ca5 // and.16b v5, v5, v1 263 WORD $0x4e0200a5 // tbl.16b v5, { v5 }, v2 264 WORD $0x4e71b8a5 // addv.8h h5, v5 265 WORD $0x1e2600a5 // fmov w5, s5 266 WORD $0xd3607c84 // lsl x4, x4, #32 267 WORD $0xaa05c084 // orr x4, x4, x5, lsl #48 268 WORD $0x53103c63 // lsl w3, w3, #16 269 WORD $0xaa030083 // orr x3, x4, x3 270 WORD $0xaa110071 // orr x17, x3, x17 271 WORD $0xb50002f0 // cbnz x16, LBB0_21 $92(%rip) 272 WORD $0xb5002011 // cbnz x17, LBB0_69 $1024(%rip) 273 WORD $0xd101018c // sub x12, x12, #64 274 WORD $0x910101ad // add x13, x13, #64 275 WORD $0xf100fd9f // cmp x12, #63 276 WORD $0x54fff568 // b.hi LBB0_14 $-340(%rip) 277 WORD $0x14000026 // b LBB0_25 $152(%rip) 278 LBB0_19: 279 WORD $0xb100053f // cmn x9, #1 280 WORD $0xdac00223 // rbit x3, x17 281 WORD $0xdac01063 // clz x3, x3 282 WORD $0x8b0d0063 // add x3, x3, x13 283 WORD $0x9a831129 // csel x9, x9, x3, ne 284 LBB0_20: 285 WORD $0x8a2b0223 // bic x3, x17, x11 286 WORD $0xaa030564 // orr x4, x11, x3, lsl #1 287 WORD $0x8a24022b // bic x11, x17, x4 288 WORD $0x9201f16b // and x11, x11, #0xaaaaaaaaaaaaaaaa 289 WORD $0xab030171 // adds x17, x11, x3 290 WORD $0x1a9f37eb // cset w11, hs 291 WORD $0xd37ffa31 // lsl x17, x17, #1 292 WORD $0xd200f231 // eor x17, x17, #0x5555555555555555 293 WORD $0x8a040231 // and x17, x17, x4 294 WORD $0x8a310210 // bic x16, x16, x17 295 WORD $0x17ffffd1 // b LBB0_16 $-188(%rip) 296 LBB0_21: 297 WORD $0xdac0020a // rbit x10, x16 298 WORD $0xdac0114a // clz x10, x10 299 WORD $0xdac0022b // rbit x11, x17 300 WORD $0xdac0116b // clz x11, x11 301 WORD $0xeb0a017f // cmp x11, x10 302 WORD $0x54001ca3 // b.lo LBB0_69 $916(%rip) 303 WORD $0x8b0d014a // add x10, x10, x13 304 WORD $0x9100054e // add x14, x10, #1 305 WORD $0xb7f81f6e // tbnz x14, #63, LBB0_76 $1004(%rip) 306 LBB0_23: 307 WORD $0xf900002e // str x14, [x1] 308 WORD $0x528000ea // mov w10, #7 309 WORD $0xf900004a // str x10, [x2] 310 WORD $0xeb0e013f // cmp x9, x14 311 WORD $0xda9fb129 // csinv x9, x9, xzr, lt 312 WORD $0xa9012448 // stp x8, x9, [x2, #16] 313 WORD $0xa941fbfd // ldp fp, lr, [sp, #24] 314 WORD $0xa940cff4 // ldp x20, x19, [sp, #8] 315 WORD $0x9100c3ff // add sp, sp, #48 316 WORD $0xd65f03c0 // ret 317 LBB0_24: 318 WORD $0x8b0d014d // add x13, x10, x13 319 WORD $0x14000006 // b LBB0_27 $24(%rip) 320 LBB0_25: 321 WORD $0x8b0d014d // add x13, x10, x13 322 WORD $0x1400002c // b LBB0_33 $176(%rip) 323 LBB0_26: 324 WORD $0xd280000c // mov x12, #0 325 WORD $0x8b08014d // add x13, x10, x8 326 WORD $0x92800009 // mov x9, #-1 327 LBB0_27: 328 WORD $0xf100816e // subs x14, x11, #32 329 WORD $0x54000e83 // b.lo LBB0_42 $464(%rip) 330 WORD $0xad4005a0 // ldp q0, q1, [x13] 331 WORD $0x4f01e442 // movi.16b v2, #34 332 WORD $0x6e228c03 // cmeq.16b v3, v0, v2 333 WORD $0x6e228c22 // cmeq.16b v2, v1, v2 334 WORD $0x4f02e784 // movi.16b v4, #92 335 WORD $0x6e248c00 // cmeq.16b v0, v0, v4 336 WORD $0x6e248c21 // cmeq.16b v1, v1, v4 337 Lloh4: 338 WORD $0x10ffdecb // adr x11, lCPI0_0 $-1064(%rip) 339 Lloh5: 340 WORD $0x3dc00164 // ldr q4, [x11, lCPI0_0@PAGEOFF] $0(%rip) 341 WORD $0x4e241c63 // and.16b v3, v3, v4 342 Lloh6: 343 WORD $0x10ffdeeb // adr x11, lCPI0_1 $-1060(%rip) 344 Lloh7: 345 WORD $0x3dc00165 // ldr q5, [x11, lCPI0_1@PAGEOFF] $0(%rip) 346 WORD $0x4e050063 // tbl.16b v3, { v3 }, v5 347 WORD $0x4e71b863 // addv.8h h3, v3 348 WORD $0x1e26006b // fmov w11, s3 349 WORD $0x4e241c42 // and.16b v2, v2, v4 350 WORD $0x4e050042 // tbl.16b v2, { v2 }, v5 351 WORD $0x4e71b842 // addv.8h h2, v2 352 WORD $0x1e260050 // fmov w16, s2 353 WORD $0x4e241c00 // and.16b v0, v0, v4 354 WORD $0x4e050000 // tbl.16b v0, { v0 }, v5 355 WORD $0x4e71b800 // addv.8h h0, v0 356 WORD $0x1e26000f // fmov w15, s0 357 WORD $0x4e241c20 // and.16b v0, v1, v4 358 WORD $0x4e050000 // tbl.16b v0, { v0 }, v5 359 WORD $0x4e71b800 // addv.8h h0, v0 360 WORD $0x1e260011 // fmov w17, s0 361 WORD $0x33103e0b // bfi w11, w16, #16, #16 362 WORD $0x33103e2f // bfi w15, w17, #16, #16 363 WORD $0x3500080f // cbnz w15, LBB0_39 $256(%rip) 364 WORD $0xb50008ac // cbnz x12, LBB0_40 $276(%rip) 365 WORD $0xb4000a4b // cbz x11, LBB0_41 $328(%rip) 366 LBB0_31: 367 WORD $0xdac0016b // rbit x11, x11 368 WORD $0xdac0116b // clz x11, x11 369 WORD $0x14000036 // b LBB0_38 $216(%rip) 370 LBB0_32: 371 WORD $0xd280000b // mov x11, #0 372 WORD $0x8b08014d // add x13, x10, x8 373 WORD $0x92800009 // mov x9, #-1 374 LBB0_33: 375 WORD $0xf1008190 // subs x16, x12, #32 376 WORD $0x54001103 // b.lo LBB0_59 $544(%rip) 377 WORD $0xad4005a0 // ldp q0, q1, [x13] 378 WORD $0x4f01e442 // movi.16b v2, #34 379 WORD $0x6e228c03 // cmeq.16b v3, v0, v2 380 WORD $0x3dc001e4 // ldr q4, [x15, lCPI0_0@PAGEOFF] $0(%rip) 381 WORD $0x4e241c63 // and.16b v3, v3, v4 382 WORD $0x3dc001c5 // ldr q5, [x14, lCPI0_1@PAGEOFF] $0(%rip) 383 WORD $0x4e050063 // tbl.16b v3, { v3 }, v5 384 WORD $0x4e71b863 // addv.8h h3, v3 385 WORD $0x1e26006c // fmov w12, s3 386 WORD $0x6e228c22 // cmeq.16b v2, v1, v2 387 WORD $0x4e241c42 // and.16b v2, v2, v4 388 WORD $0x4e050042 // tbl.16b v2, { v2 }, v5 389 WORD $0x4e71b842 // addv.8h h2, v2 390 WORD $0x1e260051 // fmov w17, s2 391 WORD $0x4f02e782 // movi.16b v2, #92 392 WORD $0x6e228c03 // cmeq.16b v3, v0, v2 393 WORD $0x4e241c63 // and.16b v3, v3, v4 394 WORD $0x4e050063 // tbl.16b v3, { v3 }, v5 395 WORD $0x4e71b863 // addv.8h h3, v3 396 WORD $0x1e26006f // fmov w15, s3 397 WORD $0x6e228c22 // cmeq.16b v2, v1, v2 398 WORD $0x4e241c42 // and.16b v2, v2, v4 399 WORD $0x4e050042 // tbl.16b v2, { v2 }, v5 400 WORD $0x4e71b842 // addv.8h h2, v2 401 WORD $0x1e260043 // fmov w3, s2 402 WORD $0x4f01e402 // movi.16b v2, #32 403 WORD $0x6e203440 // cmhi.16b v0, v2, v0 404 WORD $0x4e241c00 // and.16b v0, v0, v4 405 WORD $0x4e050000 // tbl.16b v0, { v0 }, v5 406 WORD $0x4e71b800 // addv.8h h0, v0 407 WORD $0x1e26000e // fmov w14, s0 408 WORD $0x6e213440 // cmhi.16b v0, v2, v1 409 WORD $0x4e241c00 // and.16b v0, v0, v4 410 WORD $0x4e050000 // tbl.16b v0, { v0 }, v5 411 WORD $0x4e71b800 // addv.8h h0, v0 412 WORD $0x1e260004 // fmov w4, s0 413 WORD $0x33103e2c // bfi w12, w17, #16, #16 414 WORD $0x33103c6f // bfi w15, w3, #16, #16 415 WORD $0x33103c8e // bfi w14, w4, #16, #16 416 WORD $0x3500092f // cbnz w15, LBB0_55 $292(%rip) 417 WORD $0xb50009cb // cbnz x11, LBB0_56 $312(%rip) 418 WORD $0xb4000b6c // cbz x12, LBB0_57 $364(%rip) 419 LBB0_37: 420 WORD $0xdac0018b // rbit x11, x12 421 WORD $0xdac0116b // clz x11, x11 422 WORD $0xdac001cc // rbit x12, x14 423 WORD $0xdac0118c // clz x12, x12 424 WORD $0xeb0b019f // cmp x12, x11 425 WORD $0x54000ee3 // b.lo LBB0_69 $476(%rip) 426 LBB0_38: 427 WORD $0xcb0a01aa // sub x10, x13, x10 428 WORD $0x8b0b014a // add x10, x10, x11 429 WORD $0x9100054e // add x14, x10, #1 430 WORD $0xb6fff24e // tbz x14, #63, LBB0_23 $-440(%rip) 431 WORD $0x1400008b // b LBB0_76 $556(%rip) 432 LBB0_39: 433 WORD $0xdac001f0 // rbit x16, x15 434 WORD $0xdac01210 // clz x16, x16 435 WORD $0xcb0a01b1 // sub x17, x13, x10 436 WORD $0x8b100230 // add x16, x17, x16 437 WORD $0xb100053f // cmn x9, #1 438 WORD $0x9a901129 // csel x9, x9, x16, ne 439 LBB0_40: 440 WORD $0x0a2c01f0 // bic w16, w15, w12 441 WORD $0x531f7a11 // lsl w17, w16, #1 442 WORD $0x331f7a0c // bfi w12, w16, #1, #31 443 WORD $0x0a3101ef // bic w15, w15, w17 444 WORD $0x1201f1ef // and w15, w15, #0xaaaaaaaa 445 WORD $0x2b1001ef // adds w15, w15, w16 446 WORD $0x3200f3f0 // mov w16, #1431655765 447 WORD $0x4a0f060f // eor w15, w16, w15, lsl #1 448 WORD $0x0a0c01ec // and w12, w15, w12 449 WORD $0x1a9f37ef // cset w15, hs 450 WORD $0x2a2c03ec // mvn w12, w12 451 WORD $0x8a0b018b // and x11, x12, x11 452 WORD $0xaa0f03ec // mov x12, x15 453 WORD $0xb5fff60b // cbnz x11, LBB0_31 $-320(%rip) 454 LBB0_41: 455 WORD $0x910081ad // add x13, x13, #32 456 WORD $0xaa0e03eb // mov x11, x14 457 LBB0_42: 458 WORD $0xb5000c4c // cbnz x12, LBB0_71 $392(%rip) 459 WORD $0xb40003ab // cbz x11, LBB0_52 $116(%rip) 460 LBB0_44: 461 WORD $0xcb0a03ec // neg x12, x10 462 LBB0_45: 463 WORD $0xd280000f // mov x15, #0 464 LBB0_46: 465 WORD $0x386f69ae // ldrb w14, [x13, x15] 466 WORD $0x710089df // cmp w14, #34 467 WORD $0x540002c0 // b.eq LBB0_51 $88(%rip) 468 WORD $0x710171df // cmp w14, #92 469 WORD $0x540000a0 // b.eq LBB0_49 $20(%rip) 470 WORD $0x910005ef // add x15, x15, #1 471 WORD $0xeb0f017f // cmp x11, x15 472 WORD $0x54ffff21 // b.ne LBB0_46 $-28(%rip) 473 WORD $0x14000015 // b LBB0_53 $84(%rip) 474 LBB0_49: 475 WORD $0xd100056e // sub x14, x11, #1 476 WORD $0xeb0f01df // cmp x14, x15 477 WORD $0x54000c80 // b.eq LBB0_75 $400(%rip) 478 WORD $0x8b0f01ad // add x13, x13, x15 479 WORD $0x8b0c01ae // add x14, x13, x12 480 WORD $0xb100053f // cmn x9, #1 481 WORD $0x9a8901c9 // csel x9, x14, x9, eq 482 WORD $0x910009ad // add x13, x13, #2 483 WORD $0xcb0f016e // sub x14, x11, x15 484 WORD $0xd1000970 // sub x16, x11, #2 485 WORD $0xd10009cb // sub x11, x14, #2 486 WORD $0x9280000e // mov x14, #-1 487 WORD $0xeb0f021f // cmp x16, x15 488 WORD $0x54fffd21 // b.ne LBB0_45 $-92(%rip) 489 WORD $0x14000059 // b LBB0_76 $356(%rip) 490 LBB0_51: 491 WORD $0x8b0f01ab // add x11, x13, x15 492 WORD $0x9100056d // add x13, x11, #1 493 LBB0_52: 494 WORD $0xcb0a01ae // sub x14, x13, x10 495 WORD $0xb6ffeb6e // tbz x14, #63, LBB0_23 $-660(%rip) 496 WORD $0x14000054 // b LBB0_76 $336(%rip) 497 LBB0_53: 498 WORD $0x710089df // cmp w14, #34 499 WORD $0x54000a21 // b.ne LBB0_75 $324(%rip) 500 WORD $0x8b0f01ad // add x13, x13, x15 501 WORD $0x17fffffa // b LBB0_52 $-24(%rip) 502 LBB0_55: 503 WORD $0xdac001f1 // rbit x17, x15 504 WORD $0xdac01231 // clz x17, x17 505 WORD $0xcb0a01a3 // sub x3, x13, x10 506 WORD $0x8b110071 // add x17, x3, x17 507 WORD $0xb100053f // cmn x9, #1 508 WORD $0x9a911129 // csel x9, x9, x17, ne 509 LBB0_56: 510 WORD $0x0a2b01f1 // bic w17, w15, w11 511 WORD $0x531f7a23 // lsl w3, w17, #1 512 WORD $0x331f7a2b // bfi w11, w17, #1, #31 513 WORD $0x0a2301ef // bic w15, w15, w3 514 WORD $0x1201f1ef // and w15, w15, #0xaaaaaaaa 515 WORD $0x2b1101ef // adds w15, w15, w17 516 WORD $0x3200f3f1 // mov w17, #1431655765 517 WORD $0x4a0f062f // eor w15, w17, w15, lsl #1 518 WORD $0x0a0b01eb // and w11, w15, w11 519 WORD $0x1a9f37ef // cset w15, hs 520 WORD $0x2a2b03eb // mvn w11, w11 521 WORD $0x8a0c016c // and x12, x11, x12 522 WORD $0xaa0f03eb // mov x11, x15 523 WORD $0xb5fff4ec // cbnz x12, LBB0_37 $-356(%rip) 524 LBB0_57: 525 WORD $0x3500044e // cbnz w14, LBB0_69 $136(%rip) 526 WORD $0x910081ad // add x13, x13, #32 527 WORD $0xaa1003ec // mov x12, x16 528 LBB0_59: 529 WORD $0xb50005eb // cbnz x11, LBB0_73 $188(%rip) 530 WORD $0xb40006cc // cbz x12, LBB0_75 $216(%rip) 531 LBB0_61: 532 WORD $0xcb0a03eb // neg x11, x10 533 LBB0_62: 534 WORD $0xd280000f // mov x15, #0 535 LBB0_63: 536 WORD $0x386f69ae // ldrb w14, [x13, x15] 537 WORD $0x710089df // cmp w14, #34 538 WORD $0x54000360 // b.eq LBB0_70 $108(%rip) 539 WORD $0x710171df // cmp w14, #92 540 WORD $0x54000100 // b.eq LBB0_67 $32(%rip) 541 WORD $0x710081df // cmp w14, #32 542 WORD $0x540002a3 // b.lo LBB0_69 $84(%rip) 543 WORD $0x910005ef // add x15, x15, #1 544 WORD $0x9280000e // mov x14, #-1 545 WORD $0xeb0f019f // cmp x12, x15 546 WORD $0x54fffec1 // b.ne LBB0_63 $-40(%rip) 547 WORD $0x14000029 // b LBB0_76 $164(%rip) 548 LBB0_67: 549 WORD $0xd100058e // sub x14, x12, #1 550 WORD $0xeb0f01df // cmp x14, x15 551 WORD $0x540004a0 // b.eq LBB0_75 $148(%rip) 552 WORD $0x8b0f01ad // add x13, x13, x15 553 WORD $0x8b0b01ae // add x14, x13, x11 554 WORD $0xb100053f // cmn x9, #1 555 WORD $0x9a8901c9 // csel x9, x14, x9, eq 556 WORD $0x910009ad // add x13, x13, #2 557 WORD $0xd1000990 // sub x16, x12, #2 558 WORD $0xcb0f018c // sub x12, x12, x15 559 WORD $0xd100098c // sub x12, x12, #2 560 WORD $0x9280000e // mov x14, #-1 561 WORD $0xeb0f021f // cmp x16, x15 562 WORD $0x54fffcc1 // b.ne LBB0_62 $-104(%rip) 563 WORD $0x1400001a // b LBB0_76 $104(%rip) 564 LBB0_69: 565 WORD $0x9280002e // mov x14, #-2 566 WORD $0x14000018 // b LBB0_76 $96(%rip) 567 LBB0_70: 568 WORD $0xcb0a01aa // sub x10, x13, x10 569 WORD $0x8b0f014a // add x10, x10, x15 570 WORD $0x9100054e // add x14, x10, #1 571 WORD $0xb6ffe34e // tbz x14, #63, LBB0_23 $-920(%rip) 572 WORD $0x14000013 // b LBB0_76 $76(%rip) 573 LBB0_71: 574 WORD $0xb400022b // cbz x11, LBB0_75 $68(%rip) 575 WORD $0xaa2a03ec // mvn x12, x10 576 WORD $0x8b0c01ac // add x12, x13, x12 577 WORD $0xb100053f // cmn x9, #1 578 WORD $0x9a890189 // csel x9, x12, x9, eq 579 WORD $0x910005ad // add x13, x13, #1 580 WORD $0xd100056b // sub x11, x11, #1 581 WORD $0xb5fff32b // cbnz x11, LBB0_44 $-412(%rip) 582 WORD $0x17ffffb4 // b LBB0_52 $-304(%rip) 583 LBB0_73: 584 WORD $0xb400010c // cbz x12, LBB0_75 $32(%rip) 585 WORD $0xaa2a03eb // mvn x11, x10 586 WORD $0x8b0b01ab // add x11, x13, x11 587 WORD $0xb100053f // cmn x9, #1 588 WORD $0x9a890169 // csel x9, x11, x9, eq 589 WORD $0x910005ad // add x13, x13, #1 590 WORD $0xd100058c // sub x12, x12, #1 591 WORD $0xb5fff98c // cbnz x12, LBB0_61 $-208(%rip) 592 LBB0_75: 593 WORD $0x9280000e // mov x14, #-1 594 LBB0_76: 595 WORD $0xf9400408 // ldr x8, [x0, #8] 596 WORD $0xf9000028 // str x8, [x1] 597 WORD $0xf900004e // str x14, [x2] 598 WORD $0xa941fbfd // ldp fp, lr, [sp, #24] 599 WORD $0xa940cff4 // ldp x20, x19, [sp, #8] 600 WORD $0x9100c3ff // add sp, sp, #48 601 WORD $0xd65f03c0 // ret 602 // .p2align 2, 0x00 603 _MASK_USE_NUMBER: 604 WORD $0x00000002 // .long 2 605 606 TEXT ·__vstring(SB), NOSPLIT, $0-32 607 NO_LOCAL_POINTERS 608 609 _entry: 610 MOVD 16(g), R16 611 SUB $112, RSP, R17 612 CMP R16, R17 613 BLS _stack_grow 614 615 _vstring: 616 MOVD s+0(FP), R0 617 MOVD p+8(FP), R1 618 MOVD v+16(FP), R2 619 MOVD flags+24(FP), R3 620 MOVD ·_subr__vstring(SB), R11 621 WORD $0x1000005e // adr x30, .+8 622 JMP (R11) 623 RET 624 625 _stack_grow: 626 MOVD R30, R3 627 CALL runtime·morestack_noctxt<>(SB) 628 JMP _entry