Text file
src/runtime/preempt_loong64.s
1 // Code generated by mkpreempt.go; DO NOT EDIT.
2
3 #include "go_asm.h"
4 #include "textflag.h"
5
6 TEXT ·asyncPreempt(SB),NOSPLIT|NOFRAME,$0-0
7 MOVV R1, -224(R3)
8 SUBV $224, R3
9 // Save GPs
10 MOVV R4, 8(R3)
11 MOVV R5, 16(R3)
12 MOVV R6, 24(R3)
13 MOVV R7, 32(R3)
14 MOVV R8, 40(R3)
15 MOVV R9, 48(R3)
16 MOVV R10, 56(R3)
17 MOVV R11, 64(R3)
18 MOVV R12, 72(R3)
19 MOVV R13, 80(R3)
20 MOVV R14, 88(R3)
21 MOVV R15, 96(R3)
22 MOVV R16, 104(R3)
23 MOVV R17, 112(R3)
24 MOVV R18, 120(R3)
25 MOVV R19, 128(R3)
26 MOVV R20, 136(R3)
27 MOVV R21, 144(R3)
28 MOVV R23, 152(R3)
29 MOVV R24, 160(R3)
30 MOVV R25, 168(R3)
31 MOVV R26, 176(R3)
32 MOVV R27, 184(R3)
33 MOVV R28, 192(R3)
34 MOVV R29, 200(R3)
35 MOVV R31, 208(R3)
36 MOVV FCC0, R4
37 BSTRINSV $7, R4, $0, R5
38 MOVV FCC1, R4
39 BSTRINSV $15, R4, $8, R5
40 MOVV FCC2, R4
41 BSTRINSV $23, R4, $16, R5
42 MOVV FCC3, R4
43 BSTRINSV $31, R4, $24, R5
44 MOVV FCC4, R4
45 BSTRINSV $39, R4, $32, R5
46 MOVV FCC5, R4
47 BSTRINSV $47, R4, $40, R5
48 MOVV FCC6, R4
49 BSTRINSV $55, R4, $48, R5
50 MOVV FCC7, R4
51 BSTRINSV $63, R4, $56, R5
52 MOVV R5, 216(R3)
53 // Save extended register state to p.xRegs.scratch
54 MOVV g_m(g), R4
55 MOVV m_p(R4), R4
56 ADDV $(p_xRegs+xRegPerP_scratch), R4, R4
57 MOVBU internal∕cpu·Loong64+const_offsetLOONG64HasLASX(SB), R5
58 BNE R5, saveLASX
59 MOVBU internal∕cpu·Loong64+const_offsetLOONG64HasLSX(SB), R5
60 BNE R5, saveLSX
61 saveFP:
62 MOVD F0, 0(R4)
63 MOVD F1, 32(R4)
64 MOVD F2, 64(R4)
65 MOVD F3, 96(R4)
66 MOVD F4, 128(R4)
67 MOVD F5, 160(R4)
68 MOVD F6, 192(R4)
69 MOVD F7, 224(R4)
70 MOVD F8, 256(R4)
71 MOVD F9, 288(R4)
72 MOVD F10, 320(R4)
73 MOVD F11, 352(R4)
74 MOVD F12, 384(R4)
75 MOVD F13, 416(R4)
76 MOVD F14, 448(R4)
77 MOVD F15, 480(R4)
78 MOVD F16, 512(R4)
79 MOVD F17, 544(R4)
80 MOVD F18, 576(R4)
81 MOVD F19, 608(R4)
82 MOVD F20, 640(R4)
83 MOVD F21, 672(R4)
84 MOVD F22, 704(R4)
85 MOVD F23, 736(R4)
86 MOVD F24, 768(R4)
87 MOVD F25, 800(R4)
88 MOVD F26, 832(R4)
89 MOVD F27, 864(R4)
90 MOVD F28, 896(R4)
91 MOVD F29, 928(R4)
92 MOVD F30, 960(R4)
93 MOVD F31, 992(R4)
94 JMP preempt
95 saveLSX:
96 VMOVQ V0, 0(R4)
97 VMOVQ V1, 32(R4)
98 VMOVQ V2, 64(R4)
99 VMOVQ V3, 96(R4)
100 VMOVQ V4, 128(R4)
101 VMOVQ V5, 160(R4)
102 VMOVQ V6, 192(R4)
103 VMOVQ V7, 224(R4)
104 VMOVQ V8, 256(R4)
105 VMOVQ V9, 288(R4)
106 VMOVQ V10, 320(R4)
107 VMOVQ V11, 352(R4)
108 VMOVQ V12, 384(R4)
109 VMOVQ V13, 416(R4)
110 VMOVQ V14, 448(R4)
111 VMOVQ V15, 480(R4)
112 VMOVQ V16, 512(R4)
113 VMOVQ V17, 544(R4)
114 VMOVQ V18, 576(R4)
115 VMOVQ V19, 608(R4)
116 VMOVQ V20, 640(R4)
117 VMOVQ V21, 672(R4)
118 VMOVQ V22, 704(R4)
119 VMOVQ V23, 736(R4)
120 VMOVQ V24, 768(R4)
121 VMOVQ V25, 800(R4)
122 VMOVQ V26, 832(R4)
123 VMOVQ V27, 864(R4)
124 VMOVQ V28, 896(R4)
125 VMOVQ V29, 928(R4)
126 VMOVQ V30, 960(R4)
127 VMOVQ V31, 992(R4)
128 JMP preempt
129 saveLASX:
130 XVMOVQ X0, 0(R4)
131 XVMOVQ X1, 32(R4)
132 XVMOVQ X2, 64(R4)
133 XVMOVQ X3, 96(R4)
134 XVMOVQ X4, 128(R4)
135 XVMOVQ X5, 160(R4)
136 XVMOVQ X6, 192(R4)
137 XVMOVQ X7, 224(R4)
138 XVMOVQ X8, 256(R4)
139 XVMOVQ X9, 288(R4)
140 XVMOVQ X10, 320(R4)
141 XVMOVQ X11, 352(R4)
142 XVMOVQ X12, 384(R4)
143 XVMOVQ X13, 416(R4)
144 XVMOVQ X14, 448(R4)
145 XVMOVQ X15, 480(R4)
146 XVMOVQ X16, 512(R4)
147 XVMOVQ X17, 544(R4)
148 XVMOVQ X18, 576(R4)
149 XVMOVQ X19, 608(R4)
150 XVMOVQ X20, 640(R4)
151 XVMOVQ X21, 672(R4)
152 XVMOVQ X22, 704(R4)
153 XVMOVQ X23, 736(R4)
154 XVMOVQ X24, 768(R4)
155 XVMOVQ X25, 800(R4)
156 XVMOVQ X26, 832(R4)
157 XVMOVQ X27, 864(R4)
158 XVMOVQ X28, 896(R4)
159 XVMOVQ X29, 928(R4)
160 XVMOVQ X30, 960(R4)
161 XVMOVQ X31, 992(R4)
162 preempt:
163 CALL ·asyncPreempt2(SB)
164 // Restore non-GPs from *p.xRegs.cache
165 MOVV g_m(g), R4
166 MOVV m_p(R4), R4
167 MOVV (p_xRegs+xRegPerP_cache)(R4), R4
168 MOVBU internal∕cpu·Loong64+const_offsetLOONG64HasLASX(SB), R5
169 BNE R5, restoreLASX
170 MOVBU internal∕cpu·Loong64+const_offsetLOONG64HasLSX(SB), R5
171 BNE R5, restoreLSX
172 restoreFP:
173 MOVD 992(R4), F31
174 MOVD 960(R4), F30
175 MOVD 928(R4), F29
176 MOVD 896(R4), F28
177 MOVD 864(R4), F27
178 MOVD 832(R4), F26
179 MOVD 800(R4), F25
180 MOVD 768(R4), F24
181 MOVD 736(R4), F23
182 MOVD 704(R4), F22
183 MOVD 672(R4), F21
184 MOVD 640(R4), F20
185 MOVD 608(R4), F19
186 MOVD 576(R4), F18
187 MOVD 544(R4), F17
188 MOVD 512(R4), F16
189 MOVD 480(R4), F15
190 MOVD 448(R4), F14
191 MOVD 416(R4), F13
192 MOVD 384(R4), F12
193 MOVD 352(R4), F11
194 MOVD 320(R4), F10
195 MOVD 288(R4), F9
196 MOVD 256(R4), F8
197 MOVD 224(R4), F7
198 MOVD 192(R4), F6
199 MOVD 160(R4), F5
200 MOVD 128(R4), F4
201 MOVD 96(R4), F3
202 MOVD 64(R4), F2
203 MOVD 32(R4), F1
204 MOVD 0(R4), F0
205 JMP restoreGPs
206 restoreLSX:
207 VMOVQ 992(R4), V31
208 VMOVQ 960(R4), V30
209 VMOVQ 928(R4), V29
210 VMOVQ 896(R4), V28
211 VMOVQ 864(R4), V27
212 VMOVQ 832(R4), V26
213 VMOVQ 800(R4), V25
214 VMOVQ 768(R4), V24
215 VMOVQ 736(R4), V23
216 VMOVQ 704(R4), V22
217 VMOVQ 672(R4), V21
218 VMOVQ 640(R4), V20
219 VMOVQ 608(R4), V19
220 VMOVQ 576(R4), V18
221 VMOVQ 544(R4), V17
222 VMOVQ 512(R4), V16
223 VMOVQ 480(R4), V15
224 VMOVQ 448(R4), V14
225 VMOVQ 416(R4), V13
226 VMOVQ 384(R4), V12
227 VMOVQ 352(R4), V11
228 VMOVQ 320(R4), V10
229 VMOVQ 288(R4), V9
230 VMOVQ 256(R4), V8
231 VMOVQ 224(R4), V7
232 VMOVQ 192(R4), V6
233 VMOVQ 160(R4), V5
234 VMOVQ 128(R4), V4
235 VMOVQ 96(R4), V3
236 VMOVQ 64(R4), V2
237 VMOVQ 32(R4), V1
238 VMOVQ 0(R4), V0
239 JMP restoreGPs
240 restoreLASX:
241 XVMOVQ 992(R4), X31
242 XVMOVQ 960(R4), X30
243 XVMOVQ 928(R4), X29
244 XVMOVQ 896(R4), X28
245 XVMOVQ 864(R4), X27
246 XVMOVQ 832(R4), X26
247 XVMOVQ 800(R4), X25
248 XVMOVQ 768(R4), X24
249 XVMOVQ 736(R4), X23
250 XVMOVQ 704(R4), X22
251 XVMOVQ 672(R4), X21
252 XVMOVQ 640(R4), X20
253 XVMOVQ 608(R4), X19
254 XVMOVQ 576(R4), X18
255 XVMOVQ 544(R4), X17
256 XVMOVQ 512(R4), X16
257 XVMOVQ 480(R4), X15
258 XVMOVQ 448(R4), X14
259 XVMOVQ 416(R4), X13
260 XVMOVQ 384(R4), X12
261 XVMOVQ 352(R4), X11
262 XVMOVQ 320(R4), X10
263 XVMOVQ 288(R4), X9
264 XVMOVQ 256(R4), X8
265 XVMOVQ 224(R4), X7
266 XVMOVQ 192(R4), X6
267 XVMOVQ 160(R4), X5
268 XVMOVQ 128(R4), X4
269 XVMOVQ 96(R4), X3
270 XVMOVQ 64(R4), X2
271 XVMOVQ 32(R4), X1
272 XVMOVQ 0(R4), X0
273 // Restore GPs
274 restoreGPs:
275 MOVV 216(R3), R5
276 BSTRPICKV $7, R5, $0, R4
277 MOVV R4, FCC0
278 BSTRPICKV $15, R5, $8, R4
279 MOVV R4, FCC1
280 BSTRPICKV $23, R5, $16, R4
281 MOVV R4, FCC2
282 BSTRPICKV $31, R5, $24, R4
283 MOVV R4, FCC3
284 BSTRPICKV $39, R5, $32, R4
285 MOVV R4, FCC4
286 BSTRPICKV $47, R5, $40, R4
287 MOVV R4, FCC5
288 BSTRPICKV $55, R5, $48, R4
289 MOVV R4, FCC6
290 BSTRPICKV $63, R5, $56, R4
291 MOVV R4, FCC7
292 MOVV 208(R3), R31
293 MOVV 200(R3), R29
294 MOVV 192(R3), R28
295 MOVV 184(R3), R27
296 MOVV 176(R3), R26
297 MOVV 168(R3), R25
298 MOVV 160(R3), R24
299 MOVV 152(R3), R23
300 MOVV 144(R3), R21
301 MOVV 136(R3), R20
302 MOVV 128(R3), R19
303 MOVV 120(R3), R18
304 MOVV 112(R3), R17
305 MOVV 104(R3), R16
306 MOVV 96(R3), R15
307 MOVV 88(R3), R14
308 MOVV 80(R3), R13
309 MOVV 72(R3), R12
310 MOVV 64(R3), R11
311 MOVV 56(R3), R10
312 MOVV 48(R3), R9
313 MOVV 40(R3), R8
314 MOVV 32(R3), R7
315 MOVV 24(R3), R6
316 MOVV 16(R3), R5
317 MOVV 8(R3), R4
318 MOVV 224(R3), R1
319 MOVV (R3), R30
320 ADDV $232, R3
321 JMP (R30)
322
View as plain text