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
8TEXT ·__validate_utf8_fast_entry__(SB), NOSPLIT, $32
9 NO_LOCAL_POINTERS
10 WORD $0x100000a0 // adr x0, .+20
11 MOVD R0, ret(FP)
12 RET
13 // .p2align 2, 0x00
14_validate_utf8_fast:
15 WORD $0xd100c3ff // sub sp, sp, #48
16 WORD $0xa901fbfd // stp fp, lr, [sp, #24]
17 WORD $0xa93ffbfd // stp fp, lr, [sp, #-8]
18 WORD $0xd10023fd // sub fp, sp, #8
19 WORD $0xa9402408 // ldp x8, x9, [x0]
20 WORD $0x8b090109 // add x9, x8, x9
21 WORD $0xd1000d2b // sub x11, x9, #3
22 WORD $0xeb0b011f // cmp x8, x11
23 WORD $0x54000622 // b.hs LBB0_13 $196(%rip)
24 WORD $0x52981e0c // mov w12, #49392
25 WORD $0x72a0180c // movk w12, #192, lsl #16
26 WORD $0x52901c0d // mov w13, #32992
27 WORD $0x72a0100d // movk w13, #128, lsl #16
28 WORD $0x528401ee // mov w14, #8207
29 WORD $0x528401af // mov w15, #8205
30 WORD $0x52981c10 // mov w16, #49376
31 WORD $0x52901811 // mov w17, #32960
32 WORD $0x52981f00 // mov w0, #49400
33 WORD $0x72b81800 // movk w0, #49344, lsl #16
34 WORD $0x528600e1 // mov w1, #12295
35 WORD $0x52901e02 // mov w2, #33008
36 WORD $0x72b01002 // movk w2, #32896, lsl #16
37 WORD $0x52860063 // mov w3, #12291
38 WORD $0xaa0803ea // mov x10, x8
39 WORD $0x14000005 // b LBB0_4 $20(%rip)
40LBB0_2:
41 WORD $0x52800025 // mov w5, #1
42LBB0_3:
43 WORD $0x8b05014a // add x10, x10, x5
44 WORD $0xeb0b015f // cmp x10, x11
45 WORD $0x540003c2 // b.hs LBB0_14 $120(%rip)
46LBB0_4:
47 WORD $0x39c00144 // ldrsb w4, [x10]
48 WORD $0x36ffff64 // tbz w4, #31, LBB0_2 $-20(%rip)
49 WORD $0xb9400144 // ldr w4, [x10]
50 WORD $0x0a0c0085 // and w5, w4, w12
51 WORD $0x6b0d00bf // cmp w5, w13
52 WORD $0x0a0e0085 // and w5, w4, w14
53 WORD $0x7a4f00a4 // ccmp w5, w15, #4, eq
54 WORD $0x7a4018a4 // ccmp w5, #0, #4, ne
55 WORD $0x54000241 // b.ne LBB0_12 $72(%rip)
56 WORD $0x0a100085 // and w5, w4, w16
57 WORD $0x121f0c86 // and w6, w4, #0x1e
58 WORD $0x6b1100bf // cmp w5, w17
59 WORD $0x7a4008c4 // ccmp w6, #0, #4, eq
60 WORD $0x54000161 // b.ne LBB0_11 $44(%rip)
61 WORD $0x0a000085 // and w5, w4, w0
62 WORD $0x6b0200bf // cmp w5, w2
63 WORD $0x54000981 // b.ne LBB0_30 $304(%rip)
64 WORD $0x0a010085 // and w5, w4, w1
65 WORD $0x34000945 // cbz w5, LBB0_30 $296(%rip)
66 WORD $0x52800085 // mov w5, #4
67 WORD $0x3617fd24 // tbz w4, #2, LBB0_3 $-92(%rip)
68 WORD $0x0a030084 // and w4, w4, w3
69 WORD $0x34fffce4 // cbz w4, LBB0_3 $-100(%rip)
70 WORD $0x14000045 // b LBB0_30 $276(%rip)
71LBB0_11:
72 WORD $0x52800045 // mov w5, #2
73 WORD $0x17ffffe4 // b LBB0_3 $-112(%rip)
74LBB0_12:
75 WORD $0x52800065 // mov w5, #3
76 WORD $0x17ffffe2 // b LBB0_3 $-120(%rip)
77LBB0_13:
78 WORD $0xaa0803ea // mov x10, x8
79LBB0_14:
80 WORD $0xeb09015f // cmp x10, x9
81 WORD $0x54000742 // b.hs LBB0_29 $232(%rip)
82 WORD $0x52981e0b // mov w11, #49392
83 WORD $0x72a0180b // movk w11, #192, lsl #16
84 WORD $0x52901c0c // mov w12, #32992
85 WORD $0x72a0100c // movk w12, #128, lsl #16
86 WORD $0x528401ed // mov w13, #8207
87 WORD $0x528401ae // mov w14, #8205
88 WORD $0x52981c0f // mov w15, #49376
89 WORD $0x52901810 // mov w16, #32960
90 WORD $0x14000004 // b LBB0_18 $16(%rip)
91LBB0_16:
92 WORD $0x9100054a // add x10, x10, #1
93LBB0_17:
94 WORD $0xeb09015f // cmp x10, x9
95 WORD $0x540005c2 // b.hs LBB0_29 $184(%rip)
96LBB0_18:
97 WORD $0x39c00151 // ldrsb w17, [x10]
98 WORD $0x36ffff91 // tbz w17, #31, LBB0_16 $-16(%rip)
99 WORD $0x390053ff // strb wzr, [sp, #20]
100 WORD $0x39004bff // strb wzr, [sp, #18]
101 WORD $0xcb0a0122 // sub x2, x9, x10
102 WORD $0xf1000844 // subs x4, x2, #2
103 WORD $0x540001a3 // b.lo LBB0_22 $52(%rip)
104 WORD $0x39400151 // ldrb w17, [x10]
105 WORD $0x39400540 // ldrb w0, [x10, #1]
106 WORD $0x390053f1 // strb w17, [sp, #20]
107 WORD $0x91000943 // add x3, x10, #2
108 WORD $0x91004be1 // add x1, sp, #18
109 WORD $0xaa0403e2 // mov x2, x4
110 WORD $0xb4000164 // cbz x4, LBB0_23 $44(%rip)
111LBB0_21:
112 WORD $0x39400071 // ldrb w17, [x3]
113 WORD $0x39000031 // strb w17, [x1]
114 WORD $0x394053f1 // ldrb w17, [sp, #20]
115 WORD $0x39404be1 // ldrb w1, [sp, #18]
116 WORD $0x14000007 // b LBB0_24 $28(%rip)
117LBB0_22:
118 WORD $0x52800011 // mov w17, #0
119 WORD $0x52800000 // mov w0, #0
120 WORD $0x910053e1 // add x1, sp, #20
121 WORD $0xaa0a03e3 // mov x3, x10
122 WORD $0xb5fffee2 // cbnz x2, LBB0_21 $-36(%rip)
123LBB0_23:
124 WORD $0x52800001 // mov w1, #0
125LBB0_24:
126 WORD $0x53185c00 // lsl w0, w0, #8
127 WORD $0x2a014000 // orr w0, w0, w1, lsl #16
128 WORD $0x2a110000 // orr w0, w0, w17
129 WORD $0x0a0b0001 // and w1, w0, w11
130 WORD $0x6b0c003f // cmp w1, w12
131 WORD $0x0a0d0001 // and w1, w0, w13
132 WORD $0x7a4e0024 // ccmp w1, w14, #4, eq
133 WORD $0x7a401824 // ccmp w1, #0, #4, ne
134 WORD $0x54000121 // b.ne LBB0_28 $36(%rip)
135 WORD $0x721f0e3f // tst w17, #0x1e
136 WORD $0x540001c0 // b.eq LBB0_30 $56(%rip)
137 WORD $0x0a0f0011 // and w17, w0, w15
138 WORD $0x6b10023f // cmp w17, w16
139 WORD $0x54000161 // b.ne LBB0_30 $44(%rip)
140 WORD $0x52800051 // mov w17, #2
141 WORD $0x8b11014a // add x10, x10, x17
142 WORD $0x17ffffd5 // b LBB0_17 $-172(%rip)
143LBB0_28:
144 WORD $0x52800071 // mov w17, #3
145 WORD $0x8b11014a // add x10, x10, x17
146 WORD $0x17ffffd2 // b LBB0_17 $-184(%rip)
147LBB0_29:
148 WORD $0xd2800000 // mov x0, #0
149 WORD $0xa941fbfd // ldp fp, lr, [sp, #24]
150 WORD $0x9100c3ff // add sp, sp, #48
151 WORD $0xd65f03c0 // ret
152LBB0_30:
153 WORD $0xaa2a03e9 // mvn x9, x10
154 WORD $0x8b080120 // add x0, x9, x8
155 WORD $0xa941fbfd // ldp fp, lr, [sp, #24]
156 WORD $0x9100c3ff // add sp, sp, #48
157 WORD $0xd65f03c0 // ret
158 // .p2align 2, 0x00
159_MASK_USE_NUMBER:
160 WORD $0x00000002 // .long 2
161
162TEXT ·__validate_utf8_fast(SB), NOSPLIT, $0-16
163 NO_LOCAL_POINTERS
164
165_entry:
166 MOVD 16(g), R16
167 SUB $112, RSP, R17
168 CMP R16, R17
169 BLS _stack_grow
170
171_validate_utf8_fast:
172 MOVD s+0(FP), R0
173 MOVD ·_subr__validate_utf8_fast(SB), R11
174 WORD $0x1000005e // adr x30, .+8
175 JMP (R11)
176 MOVD R0, ret+8(FP)
177 RET
178
179_stack_grow:
180 MOVD R30, R3
181 CALL runtime·morestack_noctxt<>(SB)
182 JMP _entry
View as plain text