skip_number_arm64.s raw

   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
 374