1 | /* This file was generated by: gen-reg-macros.py. |
2 | |
3 | Copyright (C) 2022-2023 Free Software Foundation, Inc. |
4 | This file is part of the GNU C Library. |
5 | |
6 | The GNU C Library is free software; you can redistribute it and/or |
7 | modify it under the terms of the GNU Lesser General Public |
8 | License as published by the Free Software Foundation; either |
9 | version 2.1 of the License, or (at your option) any later version. |
10 | |
11 | The GNU C Library is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 | Lesser General Public License for more details. |
15 | |
16 | You should have received a copy of the GNU Lesser General Public |
17 | License along with the GNU C Library; if not, see |
18 | <https://www.gnu.org/licenses/>. */ |
19 | |
20 | #ifndef _REG_MACROS_H |
21 | #define _REG_MACROS_H 1 |
22 | |
23 | #define rax_8 al |
24 | #define rax_16 ax |
25 | #define rax_32 eax |
26 | #define rax_64 rax |
27 | #define rbx_8 bl |
28 | #define rbx_16 bx |
29 | #define rbx_32 ebx |
30 | #define rbx_64 rbx |
31 | #define rcx_8 cl |
32 | #define rcx_16 cx |
33 | #define rcx_32 ecx |
34 | #define rcx_64 rcx |
35 | #define rdx_8 dl |
36 | #define rdx_16 dx |
37 | #define rdx_32 edx |
38 | #define rdx_64 rdx |
39 | #define rbp_8 bpl |
40 | #define rbp_16 bp |
41 | #define rbp_32 ebp |
42 | #define rbp_64 rbp |
43 | #define rsp_8 spl |
44 | #define rsp_16 sp |
45 | #define rsp_32 esp |
46 | #define rsp_64 rsp |
47 | #define rsi_8 sil |
48 | #define rsi_16 si |
49 | #define rsi_32 esi |
50 | #define rsi_64 rsi |
51 | #define rdi_8 dil |
52 | #define rdi_16 di |
53 | #define rdi_32 edi |
54 | #define rdi_64 rdi |
55 | #define r8_8 r8b |
56 | #define r8_16 r8w |
57 | #define r8_32 r8d |
58 | #define r8_64 r8 |
59 | #define r9_8 r9b |
60 | #define r9_16 r9w |
61 | #define r9_32 r9d |
62 | #define r9_64 r9 |
63 | #define r10_8 r10b |
64 | #define r10_16 r10w |
65 | #define r10_32 r10d |
66 | #define r10_64 r10 |
67 | #define r11_8 r11b |
68 | #define r11_16 r11w |
69 | #define r11_32 r11d |
70 | #define r11_64 r11 |
71 | #define r12_8 r12b |
72 | #define r12_16 r12w |
73 | #define r12_32 r12d |
74 | #define r12_64 r12 |
75 | #define r13_8 r13b |
76 | #define r13_16 r13w |
77 | #define r13_32 r13d |
78 | #define r13_64 r13 |
79 | #define r14_8 r14b |
80 | #define r14_16 r14w |
81 | #define r14_32 r14d |
82 | #define r14_64 r14 |
83 | #define r15_8 r15b |
84 | #define r15_16 r15w |
85 | #define r15_32 r15d |
86 | #define r15_64 r15 |
87 | |
88 | #define kmov_8 kmovb |
89 | #define kmov_16 kmovw |
90 | #define kmov_32 kmovd |
91 | #define kmov_64 kmovq |
92 | #define kortest_8 kortestb |
93 | #define kortest_16 kortestw |
94 | #define kortest_32 kortestd |
95 | #define kortest_64 kortestq |
96 | #define kor_8 korb |
97 | #define kor_16 korw |
98 | #define kor_32 kord |
99 | #define kor_64 korq |
100 | #define ktest_8 ktestb |
101 | #define ktest_16 ktestw |
102 | #define ktest_32 ktestd |
103 | #define ktest_64 ktestq |
104 | #define kand_8 kandb |
105 | #define kand_16 kandw |
106 | #define kand_32 kandd |
107 | #define kand_64 kandq |
108 | #define kxor_8 kxorb |
109 | #define kxor_16 kxorw |
110 | #define kxor_32 kxord |
111 | #define kxor_64 kxorq |
112 | #define knot_8 knotb |
113 | #define knot_16 knotw |
114 | #define knot_32 knotd |
115 | #define knot_64 knotq |
116 | #define kxnor_8 kxnorb |
117 | #define kxnor_16 kxnorw |
118 | #define kxnor_32 kxnord |
119 | #define kxnor_64 kxnorq |
120 | #define kunpack_8 kunpackbw |
121 | #define kunpack_16 kunpackwd |
122 | #define kunpack_32 kunpackdq |
123 | |
124 | /* Common API for accessing proper width GPR is V{upcase_GPR_name}. */ |
125 | #define VRAX VGPR(rax) |
126 | #define VRBX VGPR(rbx) |
127 | #define VRCX VGPR(rcx) |
128 | #define VRDX VGPR(rdx) |
129 | #define VRBP VGPR(rbp) |
130 | #define VRSP VGPR(rsp) |
131 | #define VRSI VGPR(rsi) |
132 | #define VRDI VGPR(rdi) |
133 | #define VR8 VGPR(r8) |
134 | #define VR9 VGPR(r9) |
135 | #define VR10 VGPR(r10) |
136 | #define VR11 VGPR(r11) |
137 | #define VR12 VGPR(r12) |
138 | #define VR13 VGPR(r13) |
139 | #define VR14 VGPR(r14) |
140 | #define VR15 VGPR(r15) |
141 | |
142 | /* Common API for accessing proper width mask insn is {upcase_mask_insn}. */ |
143 | #define KMOV VKINSN(kmov) |
144 | #define KORTEST VKINSN(kortest) |
145 | #define KOR VKINSN(kor) |
146 | #define KTEST VKINSN(ktest) |
147 | #define KAND VKINSN(kand) |
148 | #define KXOR VKINSN(kxor) |
149 | #define KNOT VKINSN(knot) |
150 | #define KXNOR VKINSN(kxnor) |
151 | #define KUNPACK VKINSN(kunpack) |
152 | |
153 | #ifdef USE_WIDE_CHAR |
154 | # define REG_WIDTH 32 |
155 | #else |
156 | # define REG_WIDTH VEC_SIZE |
157 | #endif |
158 | |
159 | #define VPASTER(x, y) x##_##y |
160 | #define VEVALUATOR(x, y) VPASTER(x, y) |
161 | |
162 | #define VGPR_SZ(reg_name, reg_size) VEVALUATOR(reg_name, reg_size) |
163 | #define VKINSN_SZ(insn, reg_size) VEVALUATOR(insn, reg_size) |
164 | |
165 | #define VGPR(reg_name) VGPR_SZ(reg_name, REG_WIDTH) |
166 | #define VKINSN(mask_insn) VKINSN_SZ(mask_insn, REG_WIDTH) |
167 | |
168 | #endif |
169 | |