...

Text file src/runtime/preempt_loong64.s

Documentation: runtime

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

View as plain text