Merge pull request #718 from pcercuei/update-lightrec-20230224
[pcsx_rearmed.git] / deps / lightning / include / lightning / jit_aarch64.h
CommitLineData
4a71579b 1/*
79bfeef6 2 * Copyright (C) 2013-2023 Free Software Foundation, Inc.
4a71579b
PC
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
79bfeef6
PC
26#if __APPLE__
27# define PACKED_STACK 1
28#endif
29
4a71579b
PC
30/*
31 * Types
32 */
33#define JIT_FP _R29
34typedef enum {
35#define jit_r(i) (_R9 + (i))
36#define jit_r_num() 7
37#define jit_v(i) (_R19 + (i))
38#define jit_v_num() 10
39#define jit_f(i) (_V8 + (i))
40#define jit_f_num() 8
41#define JIT_R0 _R9
42#define JIT_R1 _R10
43#define JIT_R2 _R11
44#define JIT_R3 _R12
45#define JIT_R4 _R13
46#define JIT_R5 _R14
47#define JIT_R6 _R15
48 _R8, /* indirect result */
49 _R18, /* platform register */
50 _R17, /* IP1 */
51 _R16, /* IP0 */
52 _R9, _R10, _R11, _R12, /* temporaries */
53 _R13, _R14, _R15,
54#define JIT_V0 _R19
55#define JIT_V1 _R20
56#define JIT_V2 _R21
57#define JIT_V3 _R22
58#define JIT_V4 _R23
59#define JIT_V5 _R24
60#define JIT_V6 _R25
61#define JIT_V7 _R26
62#define JIT_V8 _R27
63#define JIT_V9 _R28
64 _R19, _R20, _R21, _R22, /* callee save */
65 _R23, _R24, _R25, _R26,
66 _R27, _R28,
67 _SP, /* stack pointer */
68 _R30, /* link register */
69 _R29, /* frame pointer */
70 _R7, _R6, _R5, _R4,
71 _R3, _R2, _R1, _R0,
72#define JIT_F0 _V8
73#define JIT_F1 _V9
74#define JIT_F2 _V10
75#define JIT_F3 _V11
76#define JIT_F4 _V12
77#define JIT_F5 _V13
78#define JIT_F6 _V14
79#define JIT_F7 _V15
80 _V31, _V30, _V29, _V28, /* temporaries */
81 _V27, _V26, _V25, _V24,
82 _V23, _V22, _V21, _V20,
83 _V19, _V18, _V17, _V16,
84 /* callee save */
85 _V8, _V9, _V10, _V11,
86 _V12, _V13, _V14, _V15,
87 _V7, _V6, _V5, _V4, /* arguments */
88 _V3, _V2, _V1, _V0,
89 _NOREG,
90#define JIT_NOREG _NOREG
91} jit_reg_t;
92
93#endif /* _jit_aarch64_h */