github.com/bytedance/sonic@v1.11.7-0.20240517092252-d2edb31b167b/internal/native/neon/u64toa_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 ·__u64toa_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 14 lCPI0_0: 15 WORD $0x147b20c5 16 WORD $0x80003334 17 // // .word 8389 18 // .word 5243 19 // .word 13108 20 // .word 32768 21 22 lCPI0_1: 23 WORD $0x08000080 24 WORD $0x80002000 25 // // .word 128 26 // .word 2048 27 // .word 8192 28 // .word 32768 29 30 lCPI0_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 52 lCPI0_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 _u64toa: 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 $0xd344fc28 // lsr x8, x1, #4 80 WORD $0xf109c11f // cmp x8, #624 81 WORD $0x540005e8 // b.hi LBB0_9 $188(%rip) 82 WORD $0x53023c28 // ubfx w8, w1, #2, #14 83 WORD $0x52828f69 // mov w9, #5243 84 WORD $0x1b097d08 // mul w8, w8, w9 85 WORD $0x53117d08 // lsr w8, w8, #17 86 WORD $0xd37f7d09 // ubfiz x9, x8, #1, #32 87 WORD $0x52800c8a // mov w10, #100 88 WORD $0x1b0a8508 // msub w8, w8, w10, w1 89 WORD $0x92403d08 // and x8, x8, #0xffff 90 WORD $0xd37ff908 // lsl x8, x8, #1 91 WORD $0x710fa03f // cmp w1, #1000 92 WORD $0x540000e3 // b.lo LBB0_3 $28(%rip) 93 Lloh0: 94 WORD $0x10002aaa // adr x10, _Digits $1364(%rip) 95 Lloh1: 96 WORD $0x9100014a // add x10, x10, _Digits@PAGEOFF $0(%rip) 97 WORD $0x3869694a // ldrb w10, [x10, x9] 98 WORD $0x3900000a // strb w10, [x0] 99 WORD $0x5280002a // mov w10, #1 100 WORD $0x14000004 // b LBB0_5 $16(%rip) 101 LBB0_3: 102 WORD $0x7101903f // cmp w1, #100 103 WORD $0x540002e3 // b.lo LBB0_8 $92(%rip) 104 WORD $0x5280000a // mov w10, #0 105 LBB0_5: 106 Lloh2: 107 WORD $0x1000298b // adr x11, _Digits $1328(%rip) 108 Lloh3: 109 WORD $0x9100016b // add x11, x11, _Digits@PAGEOFF $0(%rip) 110 WORD $0x8b294169 // add x9, x11, w9, uxtw 111 WORD $0x3940052b // ldrb w11, [x9, #1] 112 WORD $0x11000549 // add w9, w10, #1 113 WORD $0x382a480b // strb w11, [x0, w10, uxtw] 114 LBB0_6: 115 Lloh4: 116 WORD $0x100028ca // adr x10, _Digits $1304(%rip) 117 Lloh5: 118 WORD $0x9100014a // add x10, x10, _Digits@PAGEOFF $0(%rip) 119 WORD $0x3868694b // ldrb w11, [x10, x8] 120 WORD $0x1100052a // add w10, w9, #1 121 WORD $0x3829480b // strb w11, [x0, w9, uxtw] 122 LBB0_7: 123 Lloh6: 124 WORD $0x10002829 // adr x9, _Digits $1284(%rip) 125 Lloh7: 126 WORD $0x91000129 // add x9, x9, _Digits@PAGEOFF $0(%rip) 127 WORD $0x8b282128 // add x8, x9, w8, uxth 128 WORD $0x39400509 // ldrb w9, [x8, #1] 129 WORD $0x11000548 // add w8, w10, #1 130 WORD $0x382a4809 // strb w9, [x0, w10, uxtw] 131 WORD $0xaa0803e0 // mov x0, x8 132 WORD $0xa940fbfd // ldp fp, lr, [sp, #8] 133 WORD $0x910083ff // add sp, sp, #32 134 WORD $0xd65f03c0 // ret 135 LBB0_8: 136 WORD $0x52800009 // mov w9, #0 137 WORD $0x5280000a // mov w10, #0 138 WORD $0x7100283f // cmp w1, #10 139 WORD $0x54fffdc2 // b.hs LBB0_6 $-72(%rip) 140 WORD $0x17fffff2 // b LBB0_7 $-56(%rip) 141 LBB0_9: 142 WORD $0x529c2008 // mov w8, #57600 143 WORD $0x72a0bea8 // movk w8, #1525, lsl #16 144 WORD $0xeb08003f // cmp x1, x8 145 WORD $0x54000a02 // b.hs LBB0_18 $320(%rip) 146 WORD $0x5282eb28 // mov w8, #5977 147 WORD $0x72ba36e8 // movk w8, #53687, lsl #16 148 WORD $0x92407c29 // and x9, x1, #0xffffffff 149 WORD $0x9ba87d28 // umull x8, w9, w8 150 WORD $0xd36dfd08 // lsr x8, x8, #45 151 WORD $0x529bd06a // mov w10, #56963 152 WORD $0x72a8636a // movk w10, #17179, lsl #16 153 WORD $0x9baa7d29 // umull x9, w9, w10 154 WORD $0xd371fd29 // lsr x9, x9, #49 155 WORD $0x927f312a // and x10, x9, #0x3ffe 156 WORD $0x53023d09 // ubfx w9, w8, #2, #14 157 WORD $0x52828f6b // mov w11, #5243 158 WORD $0x1b0b7d29 // mul w9, w9, w11 159 WORD $0x53117d29 // lsr w9, w9, #17 160 WORD $0x52800c8b // mov w11, #100 161 WORD $0x1b0ba129 // msub w9, w9, w11, w8 162 WORD $0x92403d29 // and x9, x9, #0xffff 163 WORD $0xd37ff929 // lsl x9, x9, #1 164 WORD $0x5292d00b // mov w11, #38528 165 WORD $0x72a0130b // movk w11, #152, lsl #16 166 WORD $0x6b0b003f // cmp w1, w11 167 WORD $0x540000e3 // b.lo LBB0_12 $28(%rip) 168 Lloh8: 169 WORD $0x1000230b // adr x11, _Digits $1120(%rip) 170 Lloh9: 171 WORD $0x9100016b // add x11, x11, _Digits@PAGEOFF $0(%rip) 172 WORD $0x386a696b // ldrb w11, [x11, x10] 173 WORD $0x3900000b // strb w11, [x0] 174 WORD $0x5280002c // mov w12, #1 175 WORD $0x14000006 // b LBB0_14 $24(%rip) 176 LBB0_12: 177 WORD $0x5288480b // mov w11, #16960 178 WORD $0x72a001eb // movk w11, #15, lsl #16 179 WORD $0x6b0b003f // cmp w1, w11 180 WORD $0x54000543 // b.lo LBB0_17 $168(%rip) 181 WORD $0x5280000c // mov w12, #0 182 LBB0_14: 183 Lloh10: 184 WORD $0x100021ab // adr x11, _Digits $1076(%rip) 185 Lloh11: 186 WORD $0x9100016b // add x11, x11, _Digits@PAGEOFF $0(%rip) 187 WORD $0x8b2a416a // add x10, x11, w10, uxtw 188 WORD $0x3940054a // ldrb w10, [x10, #1] 189 WORD $0x1100058b // add w11, w12, #1 190 WORD $0x382c480a // strb w10, [x0, w12, uxtw] 191 LBB0_15: 192 Lloh12: 193 WORD $0x100020ea // adr x10, _Digits $1052(%rip) 194 Lloh13: 195 WORD $0x9100014a // add x10, x10, _Digits@PAGEOFF $0(%rip) 196 WORD $0x3869694c // ldrb w12, [x10, x9] 197 WORD $0x1100056a // add w10, w11, #1 198 WORD $0x382b480c // strb w12, [x0, w11, uxtw] 199 LBB0_16: 200 WORD $0x5284e20b // mov w11, #10000 201 WORD $0x1b0b8508 // msub w8, w8, w11, w1 202 WORD $0x53023d0b // ubfx w11, w8, #2, #14 203 WORD $0x52828f6c // mov w12, #5243 204 WORD $0x1b0c7d6b // mul w11, w11, w12 205 WORD $0x53117d6b // lsr w11, w11, #17 206 WORD $0x52800c8c // mov w12, #100 207 WORD $0x1b0ca168 // msub w8, w11, w12, w8 208 WORD $0x92403d08 // and x8, x8, #0xffff 209 WORD $0xd37ff908 // lsl x8, x8, #1 210 Lloh14: 211 WORD $0x10001f0c // adr x12, _Digits $992(%rip) 212 Lloh15: 213 WORD $0x9100018c // add x12, x12, _Digits@PAGEOFF $0(%rip) 214 WORD $0x8b292189 // add x9, x12, w9, uxth 215 WORD $0x39400529 // ldrb w9, [x9, #1] 216 WORD $0x8b2a400d // add x13, x0, w10, uxtw 217 WORD $0x390001a9 // strb w9, [x13] 218 WORD $0x786b5989 // ldrh w9, [x12, w11, uxtw #1] 219 WORD $0x780011a9 // sturh w9, [x13, #1] 220 WORD $0x38686989 // ldrb w9, [x12, x8] 221 WORD $0x39000da9 // strb w9, [x13, #3] 222 WORD $0x927f3908 // and x8, x8, #0xfffe 223 WORD $0x8b080188 // add x8, x12, x8 224 WORD $0x39400509 // ldrb w9, [x8, #1] 225 WORD $0x11001548 // add w8, w10, #5 226 WORD $0x390011a9 // strb w9, [x13, #4] 227 WORD $0xaa0803e0 // mov x0, x8 228 WORD $0xa940fbfd // ldp fp, lr, [sp, #8] 229 WORD $0x910083ff // add sp, sp, #32 230 WORD $0xd65f03c0 // ret 231 LBB0_17: 232 WORD $0x5280000b // mov w11, #0 233 WORD $0x5280000a // mov w10, #0 234 WORD $0x53057c2c // lsr w12, w1, #5 235 WORD $0x7130d59f // cmp w12, #3125 236 WORD $0x54fffb42 // b.hs LBB0_15 $-152(%rip) 237 WORD $0x17ffffde // b LBB0_16 $-136(%rip) 238 LBB0_18: 239 WORD $0xd2adf82a // mov x10, #1874919424 240 WORD $0xf2d0de4a // movk x10, #34546, lsl #32 241 WORD $0xf2e0046a // movk x10, #35, lsl #48 242 WORD $0xeb0a003f // cmp x1, x10 243 WORD $0x54000bc2 // b.hs LBB0_20 $376(%rip) 244 WORD $0xd299dfa9 // mov x9, #52989 245 WORD $0xf2b08c29 // movk x9, #33889, lsl #16 246 WORD $0xf2cee229 // movk x9, #30481, lsl #32 247 WORD $0xf2f57989 // movk x9, #43980, lsl #48 248 WORD $0x9bc97c29 // umulh x9, x1, x9 249 WORD $0xd35afd29 // lsr x9, x9, #26 250 WORD $0x1b088528 // msub w8, w9, w8, w1 251 WORD $0x6f00e400 // movi.2d v0, #0000000000000000 252 WORD $0x6f00e401 // movi.2d v1, #0000000000000000 253 WORD $0x4e041d21 // mov.s v1[0], w9 254 WORD $0x0ea12822 // xtn.2s v2, v1 255 WORD $0x5282eb29 // mov w9, #5977 256 WORD $0x72ba36e9 // movk w9, #53687, lsl #16 257 WORD $0x0e040d23 // dup.2s v3, w9 258 WORD $0x2ea3c042 // umull.2d v2, v2, v3 259 WORD $0x6f530442 // ushr.2d v2, v2, #45 260 WORD $0x0ea12844 // xtn.2s v4, v2 261 WORD $0x5284e209 // mov w9, #10000 262 WORD $0x0e040d25 // dup.2s v5, w9 263 WORD $0x2ea5c084 // umull.2d v4, v4, v5 264 WORD $0x6ea48421 // sub.4s v1, v1, v4 265 WORD $0x4e413841 // zip1.8h v1, v2, v1 266 WORD $0x4f425421 // shl.2d v1, v1, #2 267 WORD $0x4e413821 // zip1.8h v1, v1, v1 268 WORD $0x4e813821 // zip1.4s v1, v1, v1 269 Lloh16: 270 WORD $0x10ffe9c9 // adr x9, lCPI0_0 $-712(%rip) 271 Lloh17: 272 WORD $0xfd400122 // ldr d2, [x9, lCPI0_0@PAGEOFF] $0(%rip) 273 WORD $0x2e62c024 // umull.4s v4, v1, v2 274 WORD $0x6e014021 // ext.16b v1, v1, v1, #8 275 WORD $0x2e62c021 // umull.4s v1, v1, v2 276 WORD $0x4e415881 // uzp2.8h v1, v4, v1 277 Lloh18: 278 WORD $0x10ffe949 // adr x9, lCPI0_1 $-728(%rip) 279 Lloh19: 280 WORD $0xfd400124 // ldr d4, [x9, lCPI0_1@PAGEOFF] $0(%rip) 281 WORD $0x2e64c026 // umull.4s v6, v1, v4 282 WORD $0x6e014021 // ext.16b v1, v1, v1, #8 283 WORD $0x2e64c021 // umull.4s v1, v1, v4 284 WORD $0x4e4158c1 // uzp2.8h v1, v6, v1 285 WORD $0x4f008546 // movi.8h v6, #10 286 WORD $0x4e669c27 // mul.8h v7, v1, v6 287 WORD $0x4f5054e7 // shl.2d v7, v7, #16 288 WORD $0x6e678421 // sub.8h v1, v1, v7 289 WORD $0x4e041d00 // mov.s v0[0], w8 290 WORD $0x0ea12807 // xtn.2s v7, v0 291 WORD $0x2ea3c0e3 // umull.2d v3, v7, v3 292 WORD $0x6f530463 // ushr.2d v3, v3, #45 293 WORD $0x0ea12867 // xtn.2s v7, v3 294 WORD $0x2ea5c0e5 // umull.2d v5, v7, v5 295 WORD $0x6ea58400 // sub.4s v0, v0, v5 296 WORD $0x4e403860 // zip1.8h v0, v3, v0 297 WORD $0x4f425400 // shl.2d v0, v0, #2 298 WORD $0x4e403800 // zip1.8h v0, v0, v0 299 WORD $0x4e803800 // zip1.4s v0, v0, v0 300 WORD $0x2e62c003 // umull.4s v3, v0, v2 301 WORD $0x6e004000 // ext.16b v0, v0, v0, #8 302 WORD $0x2e62c000 // umull.4s v0, v0, v2 303 WORD $0x4e405860 // uzp2.8h v0, v3, v0 304 WORD $0x2e64c002 // umull.4s v2, v0, v4 305 WORD $0x6e004000 // ext.16b v0, v0, v0, #8 306 WORD $0x2e64c000 // umull.4s v0, v0, v4 307 WORD $0x4e405840 // uzp2.8h v0, v2, v0 308 WORD $0x4e669c02 // mul.8h v2, v0, v6 309 WORD $0x4f505442 // shl.2d v2, v2, #16 310 WORD $0x6e628400 // sub.8h v0, v0, v2 311 WORD $0x2e212821 // sqxtun.8b v1, v1 312 WORD $0x6e212801 // sqxtun2.16b v1, v0 313 WORD $0x4f01e600 // movi.16b v0, #48 314 WORD $0x4e208420 // add.16b v0, v1, v0 315 WORD $0x4e209821 // cmeq.16b v1, v1, #0 316 Lloh20: 317 WORD $0x10ffe4e8 // adr x8, lCPI0_2 $-868(%rip) 318 Lloh21: 319 WORD $0x3dc00102 // ldr q2, [x8, lCPI0_2@PAGEOFF] $0(%rip) 320 WORD $0x4e221c21 // and.16b v1, v1, v2 321 Lloh22: 322 WORD $0x10ffe508 // adr x8, lCPI0_3 $-864(%rip) 323 Lloh23: 324 WORD $0x3dc00102 // ldr q2, [x8, lCPI0_3@PAGEOFF] $0(%rip) 325 WORD $0x4e020021 // tbl.16b v1, { v1 }, v2 326 WORD $0x4e71b821 // addv.8h h1, v1 327 WORD $0x1e260028 // fmov w8, s1 328 WORD $0x2a2803e8 // mvn w8, w8 329 WORD $0x32114108 // orr w8, w8, #0xffff8000 330 WORD $0x5ac00108 // rbit w8, w8 331 WORD $0x5ac01108 // clz w8, w8 332 Lloh24: 333 WORD $0x100017e9 // adr x9, _VecShiftShuffles $764(%rip) 334 Lloh25: 335 WORD $0x91000129 // add x9, x9, _VecShiftShuffles@PAGEOFF $0(%rip) 336 WORD $0x3ce85921 // ldr q1, [x9, w8, uxtw #4] 337 WORD $0x4f04e5e2 // movi.16b v2, #143 338 WORD $0x4e221c21 // and.16b v1, v1, v2 339 WORD $0x4e010000 // tbl.16b v0, { v0 }, v1 340 WORD $0x3d800000 // str q0, [x0] 341 WORD $0x52800209 // mov w9, #16 342 WORD $0x4b080128 // sub w8, w9, w8 343 WORD $0xaa0803e0 // mov x0, x8 344 WORD $0xa940fbfd // ldp fp, lr, [sp, #8] 345 WORD $0x910083ff // add sp, sp, #32 346 WORD $0xd65f03c0 // ret 347 LBB0_20: 348 WORD $0xd28f0ae9 // mov x9, #30807 349 WORD $0xf2b62269 // movk x9, #45331, lsl #16 350 WORD $0xf2cca5e9 // movk x9, #25903, lsl #32 351 WORD $0xf2e734a9 // movk x9, #14757, lsl #48 352 WORD $0x9bc97c29 // umulh x9, x1, x9 353 WORD $0xd373fd2b // lsr x11, x9, #51 354 WORD $0x7100257f // cmp w11, #9 355 WORD $0x540000a8 // b.hi LBB0_22 $20(%rip) 356 WORD $0x1100c169 // add w9, w11, #48 357 WORD $0x39000009 // strb w9, [x0] 358 WORD $0x52800029 // mov w9, #1 359 WORD $0x14000028 // b LBB0_27 $160(%rip) 360 LBB0_22: 361 WORD $0x71018d7f // cmp w11, #99 362 WORD $0x540000e8 // b.hi LBB0_24 $28(%rip) 363 Lloh26: 364 WORD $0x10000de9 // adr x9, _Digits $444(%rip) 365 Lloh27: 366 WORD $0x91000129 // add x9, x9, _Digits@PAGEOFF $0(%rip) 367 WORD $0x786b5929 // ldrh w9, [x9, w11, uxtw #1] 368 WORD $0x79000009 // strh w9, [x0] 369 WORD $0x52800049 // mov w9, #2 370 WORD $0x14000020 // b LBB0_27 $128(%rip) 371 LBB0_24: 372 WORD $0x5280a3e9 // mov w9, #1311 373 WORD $0x1b097d69 // mul w9, w11, w9 374 WORD $0x53117d29 // lsr w9, w9, #17 375 WORD $0x710f9d7f // cmp w11, #999 376 WORD $0x54000188 // b.hi LBB0_26 $48(%rip) 377 WORD $0x1100c12c // add w12, w9, #48 378 WORD $0x3900000c // strb w12, [x0] 379 WORD $0x52800c8c // mov w12, #100 380 WORD $0x1b0cad29 // msub w9, w9, w12, w11 381 WORD $0x92403d29 // and x9, x9, #0xffff 382 Lloh28: 383 WORD $0x10000bec // adr x12, _Digits $380(%rip) 384 Lloh29: 385 WORD $0x9100018c // add x12, x12, _Digits@PAGEOFF $0(%rip) 386 WORD $0x78697989 // ldrh w9, [x12, x9, lsl #1] 387 WORD $0x78001009 // sturh w9, [x0, #1] 388 WORD $0x52800069 // mov w9, #3 389 WORD $0x14000010 // b LBB0_27 $64(%rip) 390 LBB0_26: 391 Lloh30: 392 WORD $0x10000b2c // adr x12, _Digits $356(%rip) 393 Lloh31: 394 WORD $0x9100018c // add x12, x12, _Digits@PAGEOFF $0(%rip) 395 WORD $0x7869598d // ldrh w13, [x12, w9, uxtw #1] 396 WORD $0x7900000d // strh w13, [x0] 397 WORD $0x52800c8d // mov w13, #100 398 WORD $0x1b0dad29 // msub w9, w9, w13, w11 399 WORD $0x92403d29 // and x9, x9, #0xffff 400 WORD $0xd37ff929 // lsl x9, x9, #1 401 WORD $0x3869698d // ldrb w13, [x12, x9] 402 WORD $0x3900080d // strb w13, [x0, #2] 403 WORD $0x927f3929 // and x9, x9, #0xfffe 404 WORD $0x8b090189 // add x9, x12, x9 405 WORD $0x39400529 // ldrb w9, [x9, #1] 406 WORD $0x39000c09 // strb w9, [x0, #3] 407 WORD $0x52800089 // mov w9, #4 408 LBB0_27: 409 WORD $0x9b0a856a // msub x10, x11, x10, x1 410 WORD $0xd299dfab // mov x11, #52989 411 WORD $0xf2b08c2b // movk x11, #33889, lsl #16 412 WORD $0xf2cee22b // movk x11, #30481, lsl #32 413 WORD $0xf2f5798b // movk x11, #43980, lsl #48 414 WORD $0x9bcb7d4b // umulh x11, x10, x11 415 WORD $0xd35afd6b // lsr x11, x11, #26 416 WORD $0x6f00e400 // movi.2d v0, #0000000000000000 417 WORD $0x6f00e401 // movi.2d v1, #0000000000000000 418 WORD $0x4e041d61 // mov.s v1[0], w11 419 WORD $0x5282eb2c // mov w12, #5977 420 WORD $0x72ba36ec // movk w12, #53687, lsl #16 421 WORD $0x0e040d82 // dup.2s v2, w12 422 WORD $0x0ea12823 // xtn.2s v3, v1 423 WORD $0x2ea2c063 // umull.2d v3, v3, v2 424 WORD $0x6f530463 // ushr.2d v3, v3, #45 425 WORD $0x5284e20c // mov w12, #10000 426 WORD $0x0e040d84 // dup.2s v4, w12 427 WORD $0x0ea12865 // xtn.2s v5, v3 428 WORD $0x2ea4c0a5 // umull.2d v5, v5, v4 429 WORD $0x6ea58421 // sub.4s v1, v1, v5 430 WORD $0x4e413861 // zip1.8h v1, v3, v1 431 WORD $0x4f425421 // shl.2d v1, v1, #2 432 WORD $0x4e413821 // zip1.8h v1, v1, v1 433 WORD $0x4e813821 // zip1.4s v1, v1, v1 434 Lloh32: 435 WORD $0x10ffd7cc // adr x12, lCPI0_0 $-1288(%rip) 436 Lloh33: 437 WORD $0xfd400183 // ldr d3, [x12, lCPI0_0@PAGEOFF] $0(%rip) 438 WORD $0x2e63c025 // umull.4s v5, v1, v3 439 WORD $0x6e014021 // ext.16b v1, v1, v1, #8 440 WORD $0x2e63c021 // umull.4s v1, v1, v3 441 WORD $0x4e4158a1 // uzp2.8h v1, v5, v1 442 Lloh34: 443 WORD $0x10ffd74c // adr x12, lCPI0_1 $-1304(%rip) 444 Lloh35: 445 WORD $0xfd400185 // ldr d5, [x12, lCPI0_1@PAGEOFF] $0(%rip) 446 WORD $0x2e65c026 // umull.4s v6, v1, v5 447 WORD $0x6e014021 // ext.16b v1, v1, v1, #8 448 WORD $0x2e65c021 // umull.4s v1, v1, v5 449 WORD $0x4e4158c1 // uzp2.8h v1, v6, v1 450 WORD $0x4f008546 // movi.8h v6, #10 451 WORD $0x4e669c27 // mul.8h v7, v1, v6 452 WORD $0x4f5054e7 // shl.2d v7, v7, #16 453 WORD $0x6e678421 // sub.8h v1, v1, v7 454 WORD $0x1b08a968 // msub w8, w11, w8, w10 455 WORD $0x4e041d00 // mov.s v0[0], w8 456 WORD $0x0ea12807 // xtn.2s v7, v0 457 WORD $0x2ea2c0e2 // umull.2d v2, v7, v2 458 WORD $0x6f530442 // ushr.2d v2, v2, #45 459 WORD $0x0ea12847 // xtn.2s v7, v2 460 WORD $0x2ea4c0e4 // umull.2d v4, v7, v4 461 WORD $0x6ea48400 // sub.4s v0, v0, v4 462 WORD $0x4e403840 // zip1.8h v0, v2, v0 463 WORD $0x4f425400 // shl.2d v0, v0, #2 464 WORD $0x4e403800 // zip1.8h v0, v0, v0 465 WORD $0x4e803800 // zip1.4s v0, v0, v0 466 WORD $0x2e63c002 // umull.4s v2, v0, v3 467 WORD $0x6e004000 // ext.16b v0, v0, v0, #8 468 WORD $0x2e63c000 // umull.4s v0, v0, v3 469 WORD $0x4e405840 // uzp2.8h v0, v2, v0 470 WORD $0x2e65c002 // umull.4s v2, v0, v5 471 WORD $0x6e004000 // ext.16b v0, v0, v0, #8 472 WORD $0x2e65c000 // umull.4s v0, v0, v5 473 WORD $0x4e405840 // uzp2.8h v0, v2, v0 474 WORD $0x4e669c02 // mul.8h v2, v0, v6 475 WORD $0x4f505442 // shl.2d v2, v2, #16 476 WORD $0x6e628400 // sub.8h v0, v0, v2 477 WORD $0x2e212821 // sqxtun.8b v1, v1 478 WORD $0x6e212801 // sqxtun2.16b v1, v0 479 WORD $0x4f01e600 // movi.16b v0, #48 480 WORD $0x4e208420 // add.16b v0, v1, v0 481 WORD $0x3ca94800 // str q0, [x0, w9, uxtw] 482 WORD $0x321c0128 // orr w8, w9, #0x10 483 WORD $0xaa0803e0 // mov x0, x8 484 WORD $0xa940fbfd // ldp fp, lr, [sp, #8] 485 WORD $0x910083ff // add sp, sp, #32 486 WORD $0xd65f03c0 // ret 487 _Digits: 488 WORD $0x31303030 // .ascii 4, '0001020304050607' 489 WORD $0x33303230 // .ascii 4, '0203040506070809' 490 WORD $0x35303430 // .ascii 4, '0405060708091011' 491 WORD $0x37303630 // .ascii 4, '0607080910111213' 492 WORD $0x39303830 // .ascii 4, '0809101112131415' 493 WORD $0x31313031 // .ascii 4, '1011121314151617' 494 WORD $0x33313231 // .ascii 4, '1213141516171819' 495 WORD $0x35313431 // .ascii 4, '1415161718192021' 496 WORD $0x37313631 // .ascii 4, '1617181920212223' 497 WORD $0x39313831 // .ascii 4, '1819202122232425' 498 WORD $0x31323032 // .ascii 4, '2021222324252627' 499 WORD $0x33323232 // .ascii 4, '2223242526272829' 500 WORD $0x35323432 // .ascii 4, '2425262728293031' 501 WORD $0x37323632 // .ascii 4, '2627282930313233' 502 WORD $0x39323832 // .ascii 4, '2829303132333435' 503 WORD $0x31333033 // .ascii 4, '3031323334353637' 504 WORD $0x33333233 // .ascii 4, '3233343536373839' 505 WORD $0x35333433 // .ascii 4, '3435363738394041' 506 WORD $0x37333633 // .ascii 4, '3637383940414243' 507 WORD $0x39333833 // .ascii 4, '3839404142434445' 508 WORD $0x31343034 // .ascii 4, '4041424344454647' 509 WORD $0x33343234 // .ascii 4, '4243444546474849' 510 WORD $0x35343434 // .ascii 4, '4445464748495051' 511 WORD $0x37343634 // .ascii 4, '4647484950515253' 512 WORD $0x39343834 // .ascii 4, '4849505152535455' 513 WORD $0x31353035 // .ascii 4, '5051525354555657' 514 WORD $0x33353235 // .ascii 4, '5253545556575859' 515 WORD $0x35353435 // .ascii 4, '5455565758596061' 516 WORD $0x37353635 // .ascii 4, '5657585960616263' 517 WORD $0x39353835 // .ascii 4, '5859606162636465' 518 WORD $0x31363036 // .ascii 4, '6061626364656667' 519 WORD $0x33363236 // .ascii 4, '6263646566676869' 520 WORD $0x35363436 // .ascii 4, '6465666768697071' 521 WORD $0x37363636 // .ascii 4, '6667686970717273' 522 WORD $0x39363836 // .ascii 4, '6869707172737475' 523 WORD $0x31373037 // .ascii 4, '7071727374757677' 524 WORD $0x33373237 // .ascii 4, '7273747576777879' 525 WORD $0x35373437 // .ascii 4, '7475767778798081' 526 WORD $0x37373637 // .ascii 4, '7677787980818283' 527 WORD $0x39373837 // .ascii 4, '7879808182838485' 528 WORD $0x31383038 // .ascii 4, '8081828384858687' 529 WORD $0x33383238 // .ascii 4, '8283848586878889' 530 WORD $0x35383438 // .ascii 4, '8485868788899091' 531 WORD $0x37383638 // .ascii 4, '8687888990919293' 532 WORD $0x39383838 // .ascii 4, '8889909192939495' 533 WORD $0x31393039 // .ascii 4, '9091929394959697' 534 WORD $0x33393239 // .ascii 4, '9293949596979899' 535 WORD $0x35393439 // .ascii 4, '949596979899' 536 WORD $0x37393639 // .ascii 4, '96979899' 537 WORD $0x39393839 // .ascii 4, '9899' 538 WORD $0x00000000; WORD $0x00000000; WORD $0x00000000 // .p2align 4, 0x00 539 _VecShiftShuffles: 540 WORD $0x03020100 // .ascii 4, '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f' 541 WORD $0x07060504 // .ascii 4, '\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x01\x02\x03\x04' 542 WORD $0x0b0a0908 // .ascii 4, '\x08\t\n\x0b\x0c\r\x0e\x0f\x01\x02\x03\x04\x05\x06\x07\x08' 543 WORD $0x0f0e0d0c // .ascii 4, '\x0c\r\x0e\x0f\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c' 544 WORD $0x04030201 // .ascii 4, '\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff' 545 WORD $0x08070605 // .ascii 4, '\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\x02\x03\x04\x05' 546 WORD $0x0c0b0a09 // .ascii 4, '\t\n\x0b\x0c\r\x0e\x0f\xff\x02\x03\x04\x05\x06\x07\x08\t' 547 WORD $0xff0f0e0d // .ascii 4, '\r\x0e\x0f\xff\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r' 548 WORD $0x05040302 // .ascii 4, '\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff' 549 WORD $0x09080706 // .ascii 4, '\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\x03\x04\x05\x06' 550 WORD $0x0d0c0b0a // .ascii 4, '\n\x0b\x0c\r\x0e\x0f\xff\xff\x03\x04\x05\x06\x07\x08\t\n' 551 WORD $0xffff0f0e // .ascii 4, '\x0e\x0f\xff\xff\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e' 552 WORD $0x06050403 // .ascii 4, '\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff' 553 WORD $0x0a090807 // .ascii 4, '\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\x04\x05\x06\x07' 554 WORD $0x0e0d0c0b // .ascii 4, '\x0b\x0c\r\x0e\x0f\xff\xff\xff\x04\x05\x06\x07\x08\t\n\x0b' 555 WORD $0xffffff0f // .ascii 4, '\x0f\xff\xff\xff\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f' 556 WORD $0x07060504 // .ascii 4, '\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff' 557 WORD $0x0b0a0908 // .ascii 4, '\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\x05\x06\x07\x08' 558 WORD $0x0f0e0d0c // .ascii 4, '\x0c\r\x0e\x0f\xff\xff\xff\xff\x05\x06\x07\x08\t\n\x0b\x0c' 559 WORD $0xffffffff // .ascii 4, '\xff\xff\xff\xff\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff' 560 WORD $0x08070605 // .ascii 4, '\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff' 561 WORD $0x0c0b0a09 // .ascii 4, '\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\x06\x07\x08\t' 562 WORD $0xff0f0e0d // .ascii 4, '\r\x0e\x0f\xff\xff\xff\xff\xff\x06\x07\x08\t\n\x0b\x0c\r' 563 WORD $0xffffffff // .ascii 4, '\xff\xff\xff\xff\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff' 564 WORD $0x09080706 // .ascii 4, '\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff' 565 WORD $0x0d0c0b0a // .ascii 4, '\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\x07\x08\t\n' 566 WORD $0xffff0f0e // .ascii 4, '\x0e\x0f\xff\xff\xff\xff\xff\xff\x07\x08\t\n\x0b\x0c\r\x0e' 567 WORD $0xffffffff // .ascii 4, '\xff\xff\xff\xff\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff' 568 WORD $0x0a090807 // .ascii 4, '\x07\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff' 569 WORD $0x0e0d0c0b // .ascii 4, '\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\x08\t\n\x0b' 570 WORD $0xffffff0f // .ascii 4, '\x0f\xff\xff\xff\xff\xff\xff\xff\x08\t\n\x0b\x0c\r\x0e\x0f' 571 WORD $0xffffffff // .ascii 4, '\xff\xff\xff\xff\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff' 572 WORD $0x0b0a0908 // .ascii 4, '\x08\t\n\x0b\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\xff' 573 WORD $0x0f0e0d0c // .ascii 4, '\x0c\r\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\xff' 574 WORD $0xffffffff // .ascii 4, '\xff\xff\xff\xff\xff\xff\xff\xff' 575 WORD $0xffffffff // .ascii 4, '\xff\xff\xff\xff' 576 577 TEXT ·__u64toa(SB), NOSPLIT, $0-24 578 NO_LOCAL_POINTERS 579 580 _entry: 581 MOVD 16(g), R16 582 SUB $96, RSP, R17 583 CMP R16, R17 584 BLS _stack_grow 585 586 _u64toa: 587 MOVD out+0(FP), R0 588 MOVD val+8(FP), R1 589 MOVD ·_subr__u64toa(SB), R11 590 WORD $0x1000005e // adr x30, .+8 591 JMP (R11) 592 MOVD R0, ret+16(FP) 593 RET 594 595 _stack_grow: 596 MOVD R30, R3 597 CALL runtime·morestack_noctxt<>(SB) 598 JMP _entry