...

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, -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
    61saveFP:
    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
    95saveLSX:
    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
   129saveLASX:
   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)
   162preempt:
   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
   172restoreFP:
   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
   206restoreLSX:
   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
   240restoreLASX:
   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
   274restoreGPs:
   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)

View as plain text