6a435f1a7745cfd338bb6c3bd45f46cbe33002f4
[pcsx_rearmed.git] / deps / lightning / include / lightning / jit_aarch64.h
1 /*
2  * Copyright (C) 2013-2022  Free Software Foundation, Inc.
3  *
4  * This file is part of GNU lightning.
5  *
6  * GNU lightning is free software; you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as published
8  * by the Free Software Foundation; either version 3, or (at your option)
9  * any later version.
10  *
11  * GNU lightning is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
14  * License for more details.
15  *
16  * Authors:
17  *      Paulo Cesar Pereira de Andrade
18  */
19
20 #ifndef _jit_aarch64_h
21 #define _jit_aarch64_h
22
23 #define JIT_HASH_CONSTS         0
24 #define JIT_NUM_OPERANDS        3
25
26 /*
27  * Types
28  */
29 #define JIT_FP                  _R29
30 typedef enum {
31 #define jit_r(i)                (_R9 + (i))
32 #define jit_r_num()             7
33 #define jit_v(i)                (_R19 + (i))
34 #define jit_v_num()             10
35 #define jit_f(i)                (_V8 + (i))
36 #define jit_f_num()             8
37 #define JIT_R0                  _R9
38 #define JIT_R1                  _R10
39 #define JIT_R2                  _R11
40 #define JIT_R3                  _R12
41 #define JIT_R4                  _R13
42 #define JIT_R5                  _R14
43 #define JIT_R6                  _R15
44     _R8,                                /* indirect result */
45     _R18,                               /* platform register */
46     _R17,                               /* IP1 */
47     _R16,                               /* IP0 */
48     _R9,        _R10,   _R11,   _R12,   /* temporaries */
49     _R13,       _R14,   _R15,
50 #define JIT_V0                  _R19
51 #define JIT_V1                  _R20
52 #define JIT_V2                  _R21
53 #define JIT_V3                  _R22
54 #define JIT_V4                  _R23
55 #define JIT_V5                  _R24
56 #define JIT_V6                  _R25
57 #define JIT_V7                  _R26
58 #define JIT_V8                  _R27
59 #define JIT_V9                  _R28
60     _R19,       _R20,   _R21,   _R22,   /* callee save */
61     _R23,       _R24,   _R25,   _R26,
62     _R27,       _R28,
63     _SP,                                /* stack pointer */
64     _R30,                               /* link register */
65     _R29,                               /* frame pointer */
66     _R7,        _R6,    _R5,    _R4,
67     _R3,        _R2,    _R1,    _R0,
68 #define JIT_F0                  _V8
69 #define JIT_F1                  _V9
70 #define JIT_F2                  _V10
71 #define JIT_F3                  _V11
72 #define JIT_F4                  _V12
73 #define JIT_F5                  _V13
74 #define JIT_F6                  _V14
75 #define JIT_F7                  _V15
76     _V31,       _V30,   _V29,   _V28,   /* temporaries */
77     _V27,       _V26,   _V25,   _V24,
78     _V23,       _V22,   _V21,   _V20,
79     _V19,       _V18,   _V17,   _V16,
80     /* callee save */
81     _V8,        _V9,    _V10,   _V11,
82     _V12,       _V13,   _V14,   _V15,
83     _V7,        _V6,    _V5,    _V4,    /* arguments */
84     _V3,        _V2,    _V1,    _V0,
85     _NOREG,
86 #define JIT_NOREG               _NOREG
87 } jit_reg_t;
88
89 #endif /* _jit_aarch64_h */