/home/travis/build/MoarVM/MoarVM/src/jit/x64/arch.h
Line | Count | Source |
1 | | |
2 | | #define MVM_JIT_ARCH_GPR(_) \ |
3 | | _(RAX) __COMMA__ \ |
4 | | _(RCX) __COMMA__ \ |
5 | | _(RDX) __COMMA__ \ |
6 | | _(RBX) __COMMA__ \ |
7 | | _(RSP) __COMMA__ \ |
8 | | _(RBP) __COMMA__ \ |
9 | | _(RSI) __COMMA__ \ |
10 | | _(RDI) __COMMA__ \ |
11 | | _(R8) __COMMA__ \ |
12 | | _(R9) __COMMA__ \ |
13 | | _(R10) __COMMA__ \ |
14 | | _(R11) __COMMA__ \ |
15 | | _(R12) __COMMA__ \ |
16 | | _(R13) __COMMA__ \ |
17 | | _(R14) __COMMA__ \ |
18 | | _(R15) |
19 | | |
20 | | |
21 | | #define MVM_JIT_ARCH_NUM(_) \ |
22 | | _(XMM0) __COMMA__ \ |
23 | | _(XMM1) __COMMA__ \ |
24 | | _(XMM2) __COMMA__ \ |
25 | | _(XMM3) __COMMA__ \ |
26 | | _(XMM4) __COMMA__ \ |
27 | | _(XMM5) __COMMA__ \ |
28 | | _(XMM6) __COMMA__ \ |
29 | | _(XMM7) |
30 | | |
31 | | |
32 | | #if MVM_JIT_PLATFORM == MVM_JIT_PLATFORM_POSIX |
33 | | /* Define the GPR set usable for general calculations. RAX is reserved for |
34 | | * internal use by tiles */ |
35 | | |
36 | | #define MVM_JIT_ARCH_AVAILABLE_GPR(_) \ |
37 | | _(RCX) __COMMA__ \ |
38 | | _(RDX) __COMMA__ \ |
39 | | _(RSI) __COMMA__ \ |
40 | | _(RDI) __COMMA__ \ |
41 | | _(R8) __COMMA__ \ |
42 | | _(R9) __COMMA__ \ |
43 | | _(R10) __COMMA__ \ |
44 | | _(R11) |
45 | | |
46 | | /* define set of non-volatile regsiters */ |
47 | | |
48 | | |
49 | | #define MVM_JIT_ARCH_NONVOLATILE_GPR(_) \ |
50 | | _(RBX) __COMMA__ \ |
51 | | _(RSP) __COMMA__ \ |
52 | | _(RBP) __COMMA__ \ |
53 | | _(R12) __COMMA__ \ |
54 | | _(R13) __COMMA__ \ |
55 | | _(R14) __COMMA__ \ |
56 | | _(R15) |
57 | | |
58 | | /* GPR used for arguments */ |
59 | | #define MVM_JIT_ARCH_ARG_GPR(_) \ |
60 | | _(RDI) __COMMA__ \ |
61 | | _(RSI) __COMMA__ \ |
62 | | _(RDX) __COMMA__ \ |
63 | | _(RCX) __COMMA__ \ |
64 | | _(R8) __COMMA__ \ |
65 | | _(R9) |
66 | | |
67 | | /* SSE used for arguments */ |
68 | | |
69 | | #define MVM_JIT_ARCH_ARG_NUM(_) \ |
70 | | MVM_JIT_ARCH_NUM(_) |
71 | | |
72 | | #else |
73 | | |
74 | | /* Microsoft why you give us so few registers :-( */ |
75 | | #define MVM_JIT_ARCH_AVAILABLE_GPR(_) \ |
76 | | _(RCX) __COMMA__ \ |
77 | | _(RDX) __COMMA__ \ |
78 | | _(R8) __COMMA__ \ |
79 | | _(R9) __COMMA__ \ |
80 | | _(R10) __COMMA__ \ |
81 | | _(R11) |
82 | | |
83 | | #define MVM_JIT_ARCH_NONVOLATILE_GPR(_) \ |
84 | | _(RBX) __COMMA__ \ |
85 | | _(RSP) __COMMA__ \ |
86 | | _(RBP) __COMMA__ \ |
87 | | _(RSI) __COMMA__ \ |
88 | | _(RDI) __COMMA__ \ |
89 | | _(R12) __COMMA__ \ |
90 | | _(R13) __COMMA__ \ |
91 | | _(R14) __COMMA__ \ |
92 | | _(R15) |
93 | | #define MVM_JIT_ARCH_ARG_GPR(_) \ |
94 | | _(RCX) __COMMA__ \ |
95 | | _(RDX) __COMMA__ \ |
96 | | _(R8) __COMMA__ \ |
97 | | _(R9) |
98 | | #define MVM_JIT_ARCH_ARG_NUM(_) \ |
99 | | _(XMM0) __COMMA__ \ |
100 | | _(XMM1) __COMMA__ \ |
101 | | _(XMM2) __COMMA__ \ |
102 | | _(XMM3) |
103 | | #endif |
104 | | |
105 | | /* Frame declarations */ |
106 | 546k | #define MVM_JIT_ARCH_NUM_GPR 16 |