github.com/bytedance/sonic@v1.11.7-0.20240517092252-d2edb31b167b/internal/native/neon/vunsigned_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 ·__vunsigned_entry__(SB), NOSPLIT, $16
     9  	NO_LOCAL_POINTERS
    10  	WORD $0x100000a0 // adr x0, .+20
    11  	MOVD R0, ret(FP)
    12  	RET
    13  	  // .p2align 2, 0x00
    14  _vunsigned:
    15  	WORD $0xd10083ff  // sub	sp, sp, #32
    16  	WORD $0xa900fbfd  // stp	fp, lr, [sp, #8]
    17  	WORD $0xa93ffbfd  // stp	fp, lr, [sp, #-8]
    18  	WORD $0xd10023fd  // sub	fp, sp, #8
    19  	WORD $0xf9400028  // ldr	x8, [x1]
    20  	WORD $0xa940240a  // ldp	x10, x9, [x0]
    21  	WORD $0x5280012b  // mov	w11, #9
    22  	WORD $0xa900fc5f  // stp	xzr, xzr, [x2, #8]
    23  	WORD $0xf900004b  // str	x11, [x2]
    24  	WORD $0xf940002b  // ldr	x11, [x1]
    25  	WORD $0xf9000c4b  // str	x11, [x2, #24]
    26  	WORD $0xeb09011f  // cmp	x8, x9
    27  	WORD $0x54000162  // b.hs	LBB0_3 $44(%rip)
    28  	WORD $0x8b08014b  // add	x11, x10, x8
    29  	WORD $0x3940016c  // ldrb	w12, [x11]
    30  	WORD $0x7100b59f  // cmp	w12, #45
    31  	WORD $0x540001a1  // b.ne	LBB0_4 $52(%rip)
    32  LBB0_2:
    33  	WORD $0xf9000028  // str	x8, [x1]
    34  	WORD $0x928000a8  // mov	x8, #-6
    35  	WORD $0xf9000048  // str	x8, [x2]
    36  	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
    37  	WORD $0x910083ff  // add	sp, sp, #32
    38  	WORD $0xd65f03c0  // ret
    39  LBB0_3:
    40  	WORD $0xf9000029  // str	x9, [x1]
    41  	WORD $0x92800008  // mov	x8, #-1
    42  	WORD $0xf9000048  // str	x8, [x2]
    43  	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
    44  	WORD $0x910083ff  // add	sp, sp, #32
    45  	WORD $0xd65f03c0  // ret
    46  LBB0_4:
    47  	WORD $0x5100e98d  // sub	w13, w12, #58
    48  	WORD $0x31002dbf  // cmn	w13, #11
    49  	WORD $0x540000e8  // b.hi	LBB0_6 $28(%rip)
    50  	WORD $0xf9000028  // str	x8, [x1]
    51  	WORD $0x92800028  // mov	x8, #-2
    52  	WORD $0xf9000048  // str	x8, [x2]
    53  	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
    54  	WORD $0x910083ff  // add	sp, sp, #32
    55  	WORD $0xd65f03c0  // ret
    56  LBB0_6:
    57  	WORD $0x7100c19f  // cmp	w12, #48
    58  	WORD $0x54000161  // b.ne	LBB0_8 $44(%rip)
    59  	WORD $0x3940056b  // ldrb	w11, [x11, #1]
    60  	WORD $0x5100b96b  // sub	w11, w11, #46
    61  	WORD $0x7100dd7f  // cmp	w11, #55
    62  	WORD $0x5280002c  // mov	w12, #1
    63  	WORD $0x9acb218b  // lsl	x11, x12, x11
    64  	WORD $0xb20903ec  // mov	x12, #36028797027352576
    65  	WORD $0xf280002c  // movk	x12, #1
    66  	WORD $0x8a0c016b  // and	x11, x11, x12
    67  	WORD $0xfa409964  // ccmp	x11, #0, #4, ls
    68  	WORD $0x540005a0  // b.eq	LBB0_21 $180(%rip)
    69  LBB0_8:
    70  	WORD $0xd280000b  // mov	x11, #0
    71  	WORD $0xeb08013f  // cmp	x9, x8
    72  	WORD $0x9a88812c  // csel	x12, x9, x8, hi
    73  	WORD $0x5280014d  // mov	w13, #10
    74  LBB0_9:
    75  	WORD $0xeb08019f  // cmp	x12, x8
    76  	WORD $0x54000440  // b.eq	LBB0_20 $136(%rip)
    77  	WORD $0x3868694e  // ldrb	w14, [x10, x8]
    78  	WORD $0x5100c1ce  // sub	w14, w14, #48
    79  	WORD $0x710025df  // cmp	w14, #9
    80  	WORD $0x54000288  // b.hi	LBB0_15 $80(%rip)
    81  	WORD $0x9bcd7d6f  // umulh	x15, x11, x13
    82  	WORD $0xeb0f03ff  // cmp	xzr, x15
    83  	WORD $0x54000141  // b.ne	LBB0_14 $40(%rip)
    84  	WORD $0x8b0b096b  // add	x11, x11, x11, lsl #2
    85  	WORD $0xd37ff96b  // lsl	x11, x11, #1
    86  	WORD $0x91000508  // add	x8, x8, #1
    87  	WORD $0xab2e016b  // adds	x11, x11, w14, uxtb
    88  	WORD $0x1a9f37ef  // cset	w15, hs
    89  	WORD $0x934001ee  // sbfx	x14, x15, #0, #1
    90  	WORD $0xca0f01cf  // eor	x15, x14, x15
    91  	WORD $0xb500004f  // cbnz	x15, LBB0_14 $8(%rip)
    92  	WORD $0xb6fffdee  // tbz	x14, #63, LBB0_9 $-68(%rip)
    93  LBB0_14:
    94  	WORD $0xd1000508  // sub	x8, x8, #1
    95  	WORD $0xf9000028  // str	x8, [x1]
    96  	WORD $0x92800088  // mov	x8, #-5
    97  	WORD $0xf9000048  // str	x8, [x2]
    98  	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
    99  	WORD $0x910083ff  // add	sp, sp, #32
   100  	WORD $0xd65f03c0  // ret
   101  LBB0_15:
   102  	WORD $0xeb09011f  // cmp	x8, x9
   103  	WORD $0x54000102  // b.hs	LBB0_19 $32(%rip)
   104  	WORD $0x38686949  // ldrb	w9, [x10, x8]
   105  	WORD $0x7100b93f  // cmp	w9, #46
   106  	WORD $0x54fff7c0  // b.eq	LBB0_2 $-264(%rip)
   107  	WORD $0x7101153f  // cmp	w9, #69
   108  	WORD $0x54fff780  // b.eq	LBB0_2 $-272(%rip)
   109  	WORD $0x7101953f  // cmp	w9, #101
   110  	WORD $0x54fff740  // b.eq	LBB0_2 $-280(%rip)
   111  LBB0_19:
   112  	WORD $0xaa0803ec  // mov	x12, x8
   113  LBB0_20:
   114  	WORD $0xf900002c  // str	x12, [x1]
   115  	WORD $0xf900084b  // str	x11, [x2, #16]
   116  	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
   117  	WORD $0x910083ff  // add	sp, sp, #32
   118  	WORD $0xd65f03c0  // ret
   119  LBB0_21:
   120  	WORD $0x91000508  // add	x8, x8, #1
   121  	WORD $0xf9000028  // str	x8, [x1]
   122  	WORD $0xa940fbfd  // ldp	fp, lr, [sp, #8]
   123  	WORD $0x910083ff  // add	sp, sp, #32
   124  	WORD $0xd65f03c0  // ret
   125  	  // .p2align 2, 0x00
   126  _MASK_USE_NUMBER:
   127  	WORD $0x00000002  // .long 2
   128  
   129  TEXT ·__vunsigned(SB), NOSPLIT, $0-24
   130  	NO_LOCAL_POINTERS
   131  
   132  _entry:
   133  	MOVD 16(g), R16
   134  	SUB $96, RSP, R17
   135  	CMP  R16, R17
   136  	BLS  _stack_grow
   137  
   138  _vunsigned:
   139  	MOVD s+0(FP), R0
   140  	MOVD p+8(FP), R1
   141  	MOVD v+16(FP), R2
   142  	MOVD ·_subr__vunsigned(SB), R11
   143  	WORD $0x1000005e // adr x30, .+8
   144  	JMP (R11)
   145  	RET
   146  
   147  _stack_grow:
   148  	MOVD R30, R3
   149  	CALL runtime·morestack_noctxt<>(SB)
   150  	JMP  _entry