git subrepo pull --force deps/lightrec
[pcsx_rearmed.git] / deps / lightning / include / lightning / jit_ppc.h
1 /*
2  * Copyright (C) 2012-2023  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_ppc_h
21 #define _jit_ppc_h
22
23 #define JIT_HASH_CONSTS         1
24 #define JIT_NUM_OPERANDS        3
25 #if defined(_AIX) && !defined(_CALL_AIX) && !defined(_CALL_LINUX)
26 #  define _CALL_AIXDESC         1
27 #endif
28
29 /*
30  * Types
31  */
32 typedef enum {
33 #define jit_r(i)                (_R28 + (i))
34 #define jit_r_num()             3
35 #define jit_v(i)                (_R27 - (i))
36 #define jit_v_num()             14
37 #define jit_f(i)                (_F14 + (i))
38 #define jit_f_num()             8
39     _R0,
40 #define JIT_R0                  _R28
41 #define JIT_R1                  _R29
42 #define JIT_R2                  _R30
43     _R11,       _R12,   _R13,   _R2,
44 #define JIT_V0                  jit_v(0)
45 #define JIT_V1                  jit_v(1)
46 #define JIT_V2                  jit_v(2)
47 #define JIT_V3                  jit_v(3)
48 #define JIT_V4                  jit_v(4)
49 #define JIT_V5                  jit_v(5)
50 #define JIT_V6                  jit_v(6)
51 #define JIT_V7                  jit_v(7)
52 #define JIT_V8                  jit_v(8)
53 #define JIT_V9                  jit_v(9)
54 #define JIT_V10                 jit_v(10)
55 #define JIT_V11                 jit_v(11)
56 #define JIT_V12                 jit_v(12)
57 #define JIT_V13                 jit_v(13)
58     _R14,       _R15,   _R16,   _R17,   _R18,   _R19,   _R20,   _R21,
59     _R22,       _R23,   _R24,   _R25,   _R26,   _R27,   _R28,   _R29,
60     _R30,
61     _R1,
62 #define JIT_FP                  _R31
63     _R31,
64     _R10,       _R9,    _R8,    _R7,    _R6,    _R5,    _R4,    _R3,
65     _F0,
66     _F14,       _F15,   _F16,   _F17,   _F18,   _F19,   _F20,   _F21,
67 #define JIT_F0                  _F14
68 #define JIT_F1                  _F15
69 #define JIT_F2                  _F16
70 #define JIT_F3                  _F17
71 #define JIT_F4                  _F18
72 #define JIT_F5                  _F19
73 #define JIT_F6                  _F20
74 #define JIT_F7                  _F21
75     /* FIXME _F20-_F31 not (easily) accessible and only _F14-_F21
76      * saved/restored (if used) */
77     _F22,       _F23,   _F24,   _F25,   _F26,   _F27,   _F28,   _F29,
78     _F30,       _F31,
79     _F13,       _F12,   _F11,   _F10,   _F9,    _F8,    _F7,    _F6,
80     _F5,        _F4,    _F3,    _F2,    _F1,
81     _NOREG,
82 #define JIT_NOREG               _NOREG
83 } jit_reg_t;
84
85 #endif /* _jit_ppc_h */