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