/src/capstonev5/arch/SystemZ/SystemZMapping.c
Line  | Count  | Source  | 
1  |  | /* Capstone Disassembly Engine */  | 
2  |  | /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */  | 
3  |  |  | 
4  |  | #ifdef CAPSTONE_HAS_SYSZ  | 
5  |  |  | 
6  |  | #include <stdio.h>  // debug  | 
7  |  | #include <string.h>  | 
8  |  |  | 
9  |  | #include "../../utils.h"  | 
10  |  |  | 
11  |  | #include "SystemZMapping.h"  | 
12  |  |  | 
13  |  | #define GET_INSTRINFO_ENUM  | 
14  |  | #include "SystemZGenInstrInfo.inc"  | 
15  |  |  | 
16  |  | #ifndef CAPSTONE_DIET  | 
17  |  | static const name_map reg_name_maps[] = { | 
18  |  |   { SYSZ_REG_INVALID, NULL }, | 
19  |  |  | 
20  |  |   { SYSZ_REG_0, "0" }, | 
21  |  |   { SYSZ_REG_1, "1" }, | 
22  |  |   { SYSZ_REG_2, "2" }, | 
23  |  |   { SYSZ_REG_3, "3" }, | 
24  |  |   { SYSZ_REG_4, "4" }, | 
25  |  |   { SYSZ_REG_5, "5" }, | 
26  |  |   { SYSZ_REG_6, "6" }, | 
27  |  |   { SYSZ_REG_7, "7" }, | 
28  |  |   { SYSZ_REG_8, "8" }, | 
29  |  |   { SYSZ_REG_9, "9" }, | 
30  |  |   { SYSZ_REG_10, "10" }, | 
31  |  |   { SYSZ_REG_11, "11" }, | 
32  |  |   { SYSZ_REG_12, "12" }, | 
33  |  |   { SYSZ_REG_13, "13" }, | 
34  |  |   { SYSZ_REG_14, "14" }, | 
35  |  |   { SYSZ_REG_15, "15" }, | 
36  |  |   { SYSZ_REG_CC, "cc"}, | 
37  |  |   { SYSZ_REG_F0, "f0" }, | 
38  |  |   { SYSZ_REG_F1, "f1" }, | 
39  |  |   { SYSZ_REG_F2, "f2" }, | 
40  |  |   { SYSZ_REG_F3, "f3" }, | 
41  |  |   { SYSZ_REG_F4, "f4" }, | 
42  |  |   { SYSZ_REG_F5, "f5" }, | 
43  |  |   { SYSZ_REG_F6, "f6" }, | 
44  |  |   { SYSZ_REG_F7, "f7" }, | 
45  |  |   { SYSZ_REG_F8, "f8" }, | 
46  |  |   { SYSZ_REG_F9, "f9" }, | 
47  |  |   { SYSZ_REG_F10, "f10" }, | 
48  |  |   { SYSZ_REG_F11, "f11" }, | 
49  |  |   { SYSZ_REG_F12, "f12" }, | 
50  |  |   { SYSZ_REG_F13, "f13" }, | 
51  |  |   { SYSZ_REG_F14, "f14" }, | 
52  |  |   { SYSZ_REG_F15, "f15" }, | 
53  |  |   { SYSZ_REG_R0L, "r0l" }, | 
54  |  |   { SYSZ_REG_A0, "a0" }, | 
55  |  |   { SYSZ_REG_A1, "a1" }, | 
56  |  |   { SYSZ_REG_A2, "a2" }, | 
57  |  |   { SYSZ_REG_A3, "a3" }, | 
58  |  |   { SYSZ_REG_A4, "a4" }, | 
59  |  |   { SYSZ_REG_A5, "a5" }, | 
60  |  |   { SYSZ_REG_A6, "a6" }, | 
61  |  |   { SYSZ_REG_A7, "a7" }, | 
62  |  |   { SYSZ_REG_A8, "a8" }, | 
63  |  |   { SYSZ_REG_A9, "a9" }, | 
64  |  |   { SYSZ_REG_A10, "a10" }, | 
65  |  |   { SYSZ_REG_A11, "a11" }, | 
66  |  |   { SYSZ_REG_A12, "a12" }, | 
67  |  |   { SYSZ_REG_A13, "a13" }, | 
68  |  |   { SYSZ_REG_A14, "a14" }, | 
69  |  |   { SYSZ_REG_A15, "a15" }, | 
70  |  |   { SYSZ_REG_C0, "c0" }, | 
71  |  |   { SYSZ_REG_C1, "c1" }, | 
72  |  |   { SYSZ_REG_C2, "c2" }, | 
73  |  |   { SYSZ_REG_C3, "c3" }, | 
74  |  |   { SYSZ_REG_C4, "c4" }, | 
75  |  |   { SYSZ_REG_C5, "c5" }, | 
76  |  |   { SYSZ_REG_C6, "c6" }, | 
77  |  |   { SYSZ_REG_C7, "c7" }, | 
78  |  |   { SYSZ_REG_C8, "c8" }, | 
79  |  |   { SYSZ_REG_C9, "c9" }, | 
80  |  |   { SYSZ_REG_C10, "c10" }, | 
81  |  |   { SYSZ_REG_C11, "c11" }, | 
82  |  |   { SYSZ_REG_C12, "c12" }, | 
83  |  |   { SYSZ_REG_C13, "c13" }, | 
84  |  |   { SYSZ_REG_C14, "c14" }, | 
85  |  |   { SYSZ_REG_C15, "c15" }, | 
86  |  |   { SYSZ_REG_V0, "v0" }, | 
87  |  |   { SYSZ_REG_V1, "v1" }, | 
88  |  |   { SYSZ_REG_V2, "v2" }, | 
89  |  |   { SYSZ_REG_V3, "v3" }, | 
90  |  |   { SYSZ_REG_V4, "v4" }, | 
91  |  |   { SYSZ_REG_V5, "v5" }, | 
92  |  |   { SYSZ_REG_V6, "v6" }, | 
93  |  |   { SYSZ_REG_V7, "v7" }, | 
94  |  |   { SYSZ_REG_V8, "v8" }, | 
95  |  |   { SYSZ_REG_V9, "v9" }, | 
96  |  |   { SYSZ_REG_V10, "v10" }, | 
97  |  |   { SYSZ_REG_V11, "v11" }, | 
98  |  |   { SYSZ_REG_V12, "v12" }, | 
99  |  |   { SYSZ_REG_V13, "v13" }, | 
100  |  |   { SYSZ_REG_V14, "v14" }, | 
101  |  |   { SYSZ_REG_V15, "v15" }, | 
102  |  |   { SYSZ_REG_V16, "v16" }, | 
103  |  |   { SYSZ_REG_V17, "v17" }, | 
104  |  |   { SYSZ_REG_V18, "v18" }, | 
105  |  |   { SYSZ_REG_V19, "v19" }, | 
106  |  |   { SYSZ_REG_V20, "v20" }, | 
107  |  |   { SYSZ_REG_V21, "v21" }, | 
108  |  |   { SYSZ_REG_V22, "v22" }, | 
109  |  |   { SYSZ_REG_V23, "v23" }, | 
110  |  |   { SYSZ_REG_V24, "v24" }, | 
111  |  |   { SYSZ_REG_V25, "v25" }, | 
112  |  |   { SYSZ_REG_V26, "v26" }, | 
113  |  |   { SYSZ_REG_V27, "v27" }, | 
114  |  |   { SYSZ_REG_V28, "v28" }, | 
115  |  |   { SYSZ_REG_V29, "v29" }, | 
116  |  |   { SYSZ_REG_V30, "v30" }, | 
117  |  |   { SYSZ_REG_V31, "v31" }, | 
118  |  |   { SYSZ_REG_F16, "f16" }, | 
119  |  |   { SYSZ_REG_F17, "f17" }, | 
120  |  |   { SYSZ_REG_F18, "f18" }, | 
121  |  |   { SYSZ_REG_F19, "f19" }, | 
122  |  |   { SYSZ_REG_F20, "f20" }, | 
123  |  |   { SYSZ_REG_F21, "f21" }, | 
124  |  |   { SYSZ_REG_F22, "f22" }, | 
125  |  |   { SYSZ_REG_F23, "f23" }, | 
126  |  |   { SYSZ_REG_F24, "f24" }, | 
127  |  |   { SYSZ_REG_F25, "f25" }, | 
128  |  |   { SYSZ_REG_F26, "f26" }, | 
129  |  |   { SYSZ_REG_F27, "f27" }, | 
130  |  |   { SYSZ_REG_F28, "f28" }, | 
131  |  |   { SYSZ_REG_F29, "f29" }, | 
132  |  |   { SYSZ_REG_F30, "f30" }, | 
133  |  |   { SYSZ_REG_F31, "f31" }, | 
134  |  |   { SYSZ_REG_F0Q, "f0q" }, | 
135  |  |   { SYSZ_REG_F4Q, "f4q" }, | 
136  |  | };  | 
137  |  | #endif  | 
138  |  |  | 
139  |  | const char *SystemZ_reg_name(csh handle, unsigned int reg)  | 
140  | 53.6k  | { | 
141  | 53.6k  | #ifndef CAPSTONE_DIET  | 
142  | 53.6k  |   if (reg >= ARR_SIZE(reg_name_maps))  | 
143  | 0  |     return NULL;  | 
144  |  |  | 
145  | 53.6k  |   return reg_name_maps[reg].name;  | 
146  |  | #else  | 
147  |  |   return NULL;  | 
148  |  | #endif  | 
149  | 53.6k  | }  | 
150  |  |  | 
151  |  | static const insn_map insns[] = { | 
152  |  |   // dummy item  | 
153  |  |   { | 
154  |  |     0, 0,  | 
155  |  | #ifndef CAPSTONE_DIET  | 
156  |  |     { 0 }, { 0 }, { 0 }, 0, 0 | 
157  |  | #endif  | 
158  |  |   },  | 
159  |  |  | 
160  |  | #include "SystemZMappingInsn.inc"  | 
161  |  | };  | 
162  |  |  | 
163  |  | // given internal insn id, return public instruction info  | 
164  |  | void SystemZ_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id)  | 
165  | 97.3k  | { | 
166  | 97.3k  |   unsigned short i;  | 
167  |  |  | 
168  | 97.3k  |   i = insn_find(insns, ARR_SIZE(insns), id, &h->insn_cache);  | 
169  | 97.3k  |   if (i != 0) { | 
170  | 97.3k  |     insn->id = insns[i].mapid;  | 
171  |  |  | 
172  | 97.3k  |     if (h->detail) { | 
173  | 97.3k  | #ifndef CAPSTONE_DIET  | 
174  | 97.3k  |       memcpy(insn->detail->regs_read, insns[i].regs_use, sizeof(insns[i].regs_use));  | 
175  | 97.3k  |       insn->detail->regs_read_count = (uint8_t)count_positive(insns[i].regs_use);  | 
176  |  |  | 
177  | 97.3k  |       memcpy(insn->detail->regs_write, insns[i].regs_mod, sizeof(insns[i].regs_mod));  | 
178  | 97.3k  |       insn->detail->regs_write_count = (uint8_t)count_positive(insns[i].regs_mod);  | 
179  |  |  | 
180  | 97.3k  |       memcpy(insn->detail->groups, insns[i].groups, sizeof(insns[i].groups));  | 
181  | 97.3k  |       insn->detail->groups_count = (uint8_t)count_positive8(insns[i].groups);  | 
182  |  |  | 
183  | 97.3k  |       if (insns[i].branch || insns[i].indirect_branch) { | 
184  |  |         // this insn also belongs to JUMP group. add JUMP group  | 
185  | 9.19k  |         insn->detail->groups[insn->detail->groups_count] = SYSZ_GRP_JUMP;  | 
186  | 9.19k  |         insn->detail->groups_count++;  | 
187  | 9.19k  |       }  | 
188  | 97.3k  | #endif  | 
189  | 97.3k  |     }  | 
190  | 97.3k  |   }  | 
191  | 97.3k  | }  | 
192  |  |  | 
193  |  | #ifndef CAPSTONE_DIET  | 
194  |  | static const name_map insn_name_maps[] = { | 
195  |  |   { SYSZ_INS_INVALID, NULL }, | 
196  |  |  | 
197  |  | #include "SystemZGenInsnNameMaps.inc"  | 
198  |  | };  | 
199  |  |  | 
200  |  | // special alias insn  | 
201  |  | static const name_map alias_insn_names[] = { | 
202  |  |   { 0, NULL } | 
203  |  | };  | 
204  |  | #endif  | 
205  |  |  | 
206  |  | const char *SystemZ_insn_name(csh handle, unsigned int id)  | 
207  | 97.3k  | { | 
208  | 97.3k  | #ifndef CAPSTONE_DIET  | 
209  | 97.3k  |   unsigned int i;  | 
210  |  |  | 
211  | 97.3k  |   if (id >= SYSZ_INS_ENDING)  | 
212  | 0  |     return NULL;  | 
213  |  |  | 
214  |  |   // handle special alias first  | 
215  | 194k  |   for (i = 0; i < ARR_SIZE(alias_insn_names); i++) { | 
216  | 97.3k  |     if (alias_insn_names[i].id == id)  | 
217  | 0  |       return alias_insn_names[i].name;  | 
218  | 97.3k  |   }  | 
219  |  |  | 
220  | 97.3k  |   return insn_name_maps[id].name;  | 
221  |  | #else  | 
222  |  |   return NULL;  | 
223  |  | #endif  | 
224  | 97.3k  | }  | 
225  |  |  | 
226  |  | #ifndef CAPSTONE_DIET  | 
227  |  | static const name_map group_name_maps[] = { | 
228  |  |   // generic groups  | 
229  |  |   { SYSZ_GRP_INVALID, NULL }, | 
230  |  |   { SYSZ_GRP_JUMP, "jump" }, | 
231  |  |  | 
232  |  |   // architecture-specific groups  | 
233  |  |   { SYSZ_GRP_DFPPACKEDCONVERSION, "dfppackedconversion" }, | 
234  |  |   { SYSZ_GRP_DFPZONEDCONVERSION, "dfpzonedconversion" }, | 
235  |  |   { SYSZ_GRP_DISTINCTOPS, "distinctops" }, | 
236  |  |   { SYSZ_GRP_ENHANCEDDAT2, "enhanceddat2" }, | 
237  |  |   { SYSZ_GRP_EXECUTIONHINT, "executionhint" }, | 
238  |  |   { SYSZ_GRP_FPEXTENSION, "fpextension" }, | 
239  |  |   { SYSZ_GRP_GUARDEDSTORAGE, "guardedstorage" }, | 
240  |  |   { SYSZ_GRP_HIGHWORD, "highword" }, | 
241  |  |   { SYSZ_GRP_INSERTREFERENCEBITSMULTIPLE, "insertreferencebitsmultiple" }, | 
242  |  |   { SYSZ_GRP_INTERLOCKEDACCESS1, "interlockedaccess1" }, | 
243  |  |   { SYSZ_GRP_LOADANDTRAP, "loadandtrap" }, | 
244  |  |   { SYSZ_GRP_LOADANDZERORIGHTMOSTBYTE, "loadandzerorightmostbyte" }, | 
245  |  |   { SYSZ_GRP_LOADSTOREONCOND, "loadstoreoncond" }, | 
246  |  |   { SYSZ_GRP_LOADSTOREONCOND2, "loadstoreoncond2" }, | 
247  |  |   { SYSZ_GRP_MESSAGESECURITYASSIST3, "messagesecurityassist3" }, | 
248  |  |   { SYSZ_GRP_MESSAGESECURITYASSIST4, "messagesecurityassist4" }, | 
249  |  |   { SYSZ_GRP_MESSAGESECURITYASSIST5, "messagesecurityassist5" }, | 
250  |  |   { SYSZ_GRP_MESSAGESECURITYASSIST7, "messagesecurityassist7" }, | 
251  |  |   { SYSZ_GRP_MESSAGESECURITYASSIST8, "messagesecurityassist8" }, | 
252  |  |   { SYSZ_GRP_MISCELLANEOUSEXTENSIONS, "miscellaneousextensions" }, | 
253  |  |   { SYSZ_GRP_MISCELLANEOUSEXTENSIONS2, "miscellaneousextensions2" }, | 
254  |  |   { SYSZ_GRP_POPULATIONCOUNT, "populationcount" }, | 
255  |  |   { SYSZ_GRP_PROCESSORASSIST, "processorassist" }, | 
256  |  |   { SYSZ_GRP_RESETREFERENCEBITSMULTIPLE, "resetreferencebitsmultiple" }, | 
257  |  |   { SYSZ_GRP_TRANSACTIONALEXECUTION, "transactionalexecution" }, | 
258  |  |   { SYSZ_GRP_VECTOR, "vector" }, | 
259  |  |   { SYSZ_GRP_VECTORENHANCEMENTS1, "vectorenhancements1" }, | 
260  |  |   { SYSZ_GRP_VECTORPACKEDDECIMAL, "vectorpackeddecimal" }, | 
261  |  | };  | 
262  |  | #endif  | 
263  |  |  | 
264  |  | const char *SystemZ_group_name(csh handle, unsigned int id)  | 
265  | 99.3k  | { | 
266  | 99.3k  | #ifndef CAPSTONE_DIET  | 
267  | 99.3k  |   return id2name(group_name_maps, ARR_SIZE(group_name_maps), id);  | 
268  |  | #else  | 
269  |  |   return NULL;  | 
270  |  | #endif  | 
271  | 99.3k  | }  | 
272  |  |  | 
273  |  | // map internal raw register to 'public' register  | 
274  |  | sysz_reg SystemZ_map_register(unsigned int r)  | 
275  | 223k  | { | 
276  | 223k  |   static const unsigned int map[] = { 0, | 
277  | 223k  |     /* SystemZ_CC = 1 */ SYSZ_REG_CC,  | 
278  | 223k  |     /* SystemZ_A0 = 2 */ SYSZ_REG_A0,  | 
279  | 223k  |     /* SystemZ_A1 = 3 */ SYSZ_REG_A1,  | 
280  | 223k  |     /* SystemZ_A2 = 4 */ SYSZ_REG_A2,  | 
281  | 223k  |     /* SystemZ_A3 = 5 */ SYSZ_REG_A3,  | 
282  | 223k  |     /* SystemZ_A4 = 6 */ SYSZ_REG_A4,  | 
283  | 223k  |     /* SystemZ_A5 = 7 */ SYSZ_REG_A5,  | 
284  | 223k  |     /* SystemZ_A6 = 8 */ SYSZ_REG_A6,  | 
285  | 223k  |     /* SystemZ_A7 = 9 */ SYSZ_REG_A7,  | 
286  | 223k  |     /* SystemZ_A8 = 10 */ SYSZ_REG_A8,  | 
287  | 223k  |     /* SystemZ_A9 = 11 */ SYSZ_REG_A9,  | 
288  | 223k  |     /* SystemZ_A10 = 12 */ SYSZ_REG_A10,  | 
289  | 223k  |     /* SystemZ_A11 = 13 */ SYSZ_REG_A11,  | 
290  | 223k  |     /* SystemZ_A12 = 14 */ SYSZ_REG_A12,  | 
291  | 223k  |     /* SystemZ_A13 = 15 */ SYSZ_REG_A13,  | 
292  | 223k  |     /* SystemZ_A14 = 16 */ SYSZ_REG_A14,  | 
293  | 223k  |     /* SystemZ_A15 = 17 */ SYSZ_REG_A15,  | 
294  | 223k  |     /* SystemZ_C0 = 18 */ SYSZ_REG_C0,  | 
295  | 223k  |     /* SystemZ_C1 = 19 */ SYSZ_REG_C1,  | 
296  | 223k  |     /* SystemZ_C2 = 20 */ SYSZ_REG_C2,  | 
297  | 223k  |     /* SystemZ_C3 = 21 */ SYSZ_REG_C3,  | 
298  | 223k  |     /* SystemZ_C4 = 22 */ SYSZ_REG_C4,  | 
299  | 223k  |     /* SystemZ_C5 = 23 */ SYSZ_REG_C5,  | 
300  | 223k  |     /* SystemZ_C6 = 24 */ SYSZ_REG_C6,  | 
301  | 223k  |     /* SystemZ_C7 = 25 */ SYSZ_REG_C7,  | 
302  | 223k  |     /* SystemZ_C8 = 26 */ SYSZ_REG_C8,  | 
303  | 223k  |     /* SystemZ_C9 = 27 */ SYSZ_REG_C9,  | 
304  | 223k  |     /* SystemZ_C10 = 28 */ SYSZ_REG_C10,  | 
305  | 223k  |     /* SystemZ_C11 = 29 */ SYSZ_REG_C11,  | 
306  | 223k  |     /* SystemZ_C12 = 30 */ SYSZ_REG_C12,  | 
307  | 223k  |     /* SystemZ_C13 = 31 */ SYSZ_REG_C13,  | 
308  | 223k  |     /* SystemZ_C14 = 32 */ SYSZ_REG_C14,  | 
309  | 223k  |     /* SystemZ_C15 = 33 */ SYSZ_REG_C15,  | 
310  | 223k  |     /* SystemZ_V0 = 34 */ SYSZ_REG_V0,  | 
311  | 223k  |     /* SystemZ_V1 = 35 */ SYSZ_REG_V1,  | 
312  | 223k  |     /* SystemZ_V2 = 36 */ SYSZ_REG_V2,  | 
313  | 223k  |     /* SystemZ_V3 = 37 */ SYSZ_REG_V3,  | 
314  | 223k  |     /* SystemZ_V4 = 38 */ SYSZ_REG_V4,  | 
315  | 223k  |     /* SystemZ_V5 = 39 */ SYSZ_REG_V5,  | 
316  | 223k  |     /* SystemZ_V6 = 40 */ SYSZ_REG_V6,  | 
317  | 223k  |     /* SystemZ_V7 = 41 */ SYSZ_REG_V7,  | 
318  | 223k  |     /* SystemZ_V8 = 42 */ SYSZ_REG_V8,  | 
319  | 223k  |     /* SystemZ_V9 = 43 */ SYSZ_REG_V9,  | 
320  | 223k  |     /* SystemZ_V10 = 44 */ SYSZ_REG_V10,  | 
321  | 223k  |     /* SystemZ_V11 = 45 */ SYSZ_REG_V11,  | 
322  | 223k  |     /* SystemZ_V12 = 46 */ SYSZ_REG_V12,  | 
323  | 223k  |     /* SystemZ_V13 = 47 */ SYSZ_REG_V13,  | 
324  | 223k  |     /* SystemZ_V14 = 48 */ SYSZ_REG_V14,  | 
325  | 223k  |     /* SystemZ_V15 = 49 */ SYSZ_REG_V15,  | 
326  | 223k  |     /* SystemZ_V16 = 50 */ SYSZ_REG_V16,  | 
327  | 223k  |     /* SystemZ_V17 = 51 */ SYSZ_REG_V17,  | 
328  | 223k  |     /* SystemZ_V18 = 52 */ SYSZ_REG_V18,  | 
329  | 223k  |     /* SystemZ_V19 = 53 */ SYSZ_REG_V19,  | 
330  | 223k  |     /* SystemZ_V20 = 54 */ SYSZ_REG_V20,  | 
331  | 223k  |     /* SystemZ_V21 = 55 */ SYSZ_REG_V21,  | 
332  | 223k  |     /* SystemZ_V22 = 56 */ SYSZ_REG_V22,  | 
333  | 223k  |     /* SystemZ_V23 = 57 */ SYSZ_REG_V23,  | 
334  | 223k  |     /* SystemZ_V24 = 58 */ SYSZ_REG_V24,  | 
335  | 223k  |     /* SystemZ_V25 = 59 */ SYSZ_REG_V25,  | 
336  | 223k  |     /* SystemZ_V26 = 60 */ SYSZ_REG_V26,  | 
337  | 223k  |     /* SystemZ_V27 = 61 */ SYSZ_REG_V27,  | 
338  | 223k  |     /* SystemZ_V28 = 62 */ SYSZ_REG_V28,  | 
339  | 223k  |     /* SystemZ_V29 = 63 */ SYSZ_REG_V29,  | 
340  | 223k  |     /* SystemZ_V30 = 64 */ SYSZ_REG_V30,  | 
341  | 223k  |     /* SystemZ_V31 = 65 */ SYSZ_REG_V31,  | 
342  | 223k  |     /* SystemZ_F0D = 66 */ SYSZ_REG_F0,  | 
343  | 223k  |     /* SystemZ_F1D = 67 */ SYSZ_REG_F1,  | 
344  | 223k  |     /* SystemZ_F2D = 68 */ SYSZ_REG_F2,  | 
345  | 223k  |     /* SystemZ_F3D = 69 */ SYSZ_REG_F3,  | 
346  | 223k  |     /* SystemZ_F4D = 70 */ SYSZ_REG_F4,  | 
347  | 223k  |     /* SystemZ_F5D = 71 */ SYSZ_REG_F5,  | 
348  | 223k  |     /* SystemZ_F6D = 72 */ SYSZ_REG_F6,  | 
349  | 223k  |     /* SystemZ_F7D = 73 */ SYSZ_REG_F7,  | 
350  | 223k  |     /* SystemZ_F8D = 74 */ SYSZ_REG_F8,  | 
351  | 223k  |     /* SystemZ_F9D = 75 */ SYSZ_REG_F9,  | 
352  | 223k  |     /* SystemZ_F10D = 76 */ SYSZ_REG_F10,  | 
353  | 223k  |     /* SystemZ_F11D = 77 */ SYSZ_REG_F11,  | 
354  | 223k  |     /* SystemZ_F12D = 78 */ SYSZ_REG_F12,  | 
355  | 223k  |     /* SystemZ_F13D = 79 */ SYSZ_REG_F13,  | 
356  | 223k  |     /* SystemZ_F14D = 80 */ SYSZ_REG_F14,  | 
357  | 223k  |     /* SystemZ_F15D = 81 */ SYSZ_REG_F15,  | 
358  | 223k  |     /* SystemZ_F16D = 82 */ SYSZ_REG_F16,  | 
359  | 223k  |     /* SystemZ_F17D = 83 */ SYSZ_REG_F17,  | 
360  | 223k  |     /* SystemZ_F18D = 84 */ SYSZ_REG_F18,  | 
361  | 223k  |     /* SystemZ_F19D = 85 */ SYSZ_REG_F19,  | 
362  | 223k  |     /* SystemZ_F20D = 86 */ SYSZ_REG_F20,  | 
363  | 223k  |     /* SystemZ_F21D = 87 */ SYSZ_REG_F21,  | 
364  | 223k  |     /* SystemZ_F22D = 88 */ SYSZ_REG_F22,  | 
365  | 223k  |     /* SystemZ_F23D = 89 */ SYSZ_REG_F23,  | 
366  | 223k  |     /* SystemZ_F24D = 90 */ SYSZ_REG_F24,  | 
367  | 223k  |     /* SystemZ_F25D = 91 */ SYSZ_REG_F25,  | 
368  | 223k  |     /* SystemZ_F26D = 92 */ SYSZ_REG_F26,  | 
369  | 223k  |     /* SystemZ_F27D = 93 */ SYSZ_REG_F27,  | 
370  | 223k  |     /* SystemZ_F28D = 94 */ SYSZ_REG_F28,  | 
371  | 223k  |     /* SystemZ_F29D = 95 */ SYSZ_REG_F29,  | 
372  | 223k  |     /* SystemZ_F30D = 96 */ SYSZ_REG_F30,  | 
373  | 223k  |     /* SystemZ_F31D = 97 */ SYSZ_REG_F31,  | 
374  | 223k  |     /* SystemZ_F0Q = 98 */ SYSZ_REG_F0,  | 
375  | 223k  |     /* SystemZ_F1Q = 99 */ SYSZ_REG_F1,  | 
376  | 223k  |     /* SystemZ_F4Q = 100 */ SYSZ_REG_F4,  | 
377  | 223k  |     /* SystemZ_F5Q = 101 */ SYSZ_REG_F5,  | 
378  | 223k  |     /* SystemZ_F8Q = 102 */ SYSZ_REG_F8,  | 
379  | 223k  |     /* SystemZ_F9Q = 103 */ SYSZ_REG_F9,  | 
380  | 223k  |     /* SystemZ_F12Q = 104 */ SYSZ_REG_F12,  | 
381  | 223k  |     /* SystemZ_F13Q = 105 */ SYSZ_REG_F13,  | 
382  | 223k  |     /* SystemZ_F0S = 106 */ SYSZ_REG_F0,  | 
383  | 223k  |     /* SystemZ_F1S = 107 */ SYSZ_REG_F1,  | 
384  | 223k  |     /* SystemZ_F2S = 108 */ SYSZ_REG_F2,  | 
385  | 223k  |     /* SystemZ_F3S = 109 */ SYSZ_REG_F3,  | 
386  | 223k  |     /* SystemZ_F4S = 110 */ SYSZ_REG_F4,  | 
387  | 223k  |     /* SystemZ_F5S = 111 */ SYSZ_REG_F5,  | 
388  | 223k  |     /* SystemZ_F6S = 112 */ SYSZ_REG_F6,  | 
389  | 223k  |     /* SystemZ_F7S = 113 */ SYSZ_REG_F7,  | 
390  | 223k  |     /* SystemZ_F8S = 114 */ SYSZ_REG_F8,  | 
391  | 223k  |     /* SystemZ_F9S = 115 */ SYSZ_REG_F9,  | 
392  | 223k  |     /* SystemZ_F10S = 116 */ SYSZ_REG_F10,  | 
393  | 223k  |     /* SystemZ_F11S = 117 */ SYSZ_REG_F11,  | 
394  | 223k  |     /* SystemZ_F12S = 118 */ SYSZ_REG_F12,  | 
395  | 223k  |     /* SystemZ_F13S = 119 */ SYSZ_REG_F13,  | 
396  | 223k  |     /* SystemZ_F14S = 120 */ SYSZ_REG_F14,  | 
397  | 223k  |     /* SystemZ_F15S = 121 */ SYSZ_REG_F15,  | 
398  | 223k  |     /* SystemZ_F16S = 122 */ SYSZ_REG_F16,  | 
399  | 223k  |     /* SystemZ_F17S = 123 */ SYSZ_REG_F17,  | 
400  | 223k  |     /* SystemZ_F18S = 124 */ SYSZ_REG_F18,  | 
401  | 223k  |     /* SystemZ_F19S = 125 */ SYSZ_REG_F19,  | 
402  | 223k  |     /* SystemZ_F20S = 126 */ SYSZ_REG_F20,  | 
403  | 223k  |     /* SystemZ_F21S = 127 */ SYSZ_REG_F21,  | 
404  | 223k  |     /* SystemZ_F22S = 128 */ SYSZ_REG_F22,  | 
405  | 223k  |     /* SystemZ_F23S = 129 */ SYSZ_REG_F23,  | 
406  | 223k  |     /* SystemZ_F24S = 130 */ SYSZ_REG_F24,  | 
407  | 223k  |     /* SystemZ_F25S = 131 */ SYSZ_REG_F25,  | 
408  | 223k  |     /* SystemZ_F26S = 132 */ SYSZ_REG_F26,  | 
409  | 223k  |     /* SystemZ_F27S = 133 */ SYSZ_REG_F27,  | 
410  | 223k  |     /* SystemZ_F28S = 134 */ SYSZ_REG_F28,  | 
411  | 223k  |     /* SystemZ_F29S = 135 */ SYSZ_REG_F29,  | 
412  | 223k  |     /* SystemZ_F30S = 136 */ SYSZ_REG_F30,  | 
413  | 223k  |     /* SystemZ_F31S = 137 */ SYSZ_REG_F31,  | 
414  | 223k  |     /* SystemZ_R0D = 138 */ SYSZ_REG_0,  | 
415  | 223k  |     /* SystemZ_R1D = 139 */ SYSZ_REG_1,  | 
416  | 223k  |     /* SystemZ_R2D = 140 */ SYSZ_REG_2,  | 
417  | 223k  |     /* SystemZ_R3D = 141 */ SYSZ_REG_3,  | 
418  | 223k  |     /* SystemZ_R4D = 142 */ SYSZ_REG_4,  | 
419  | 223k  |     /* SystemZ_R5D = 143 */ SYSZ_REG_5,  | 
420  | 223k  |     /* SystemZ_R6D = 144 */ SYSZ_REG_6,  | 
421  | 223k  |     /* SystemZ_R7D = 145 */ SYSZ_REG_7,  | 
422  | 223k  |     /* SystemZ_R8D = 146 */ SYSZ_REG_8,  | 
423  | 223k  |     /* SystemZ_R9D = 147 */ SYSZ_REG_9,  | 
424  | 223k  |     /* SystemZ_R10D = 148 */ SYSZ_REG_10,  | 
425  | 223k  |     /* SystemZ_R11D = 149 */ SYSZ_REG_11,  | 
426  | 223k  |     /* SystemZ_R12D = 150 */ SYSZ_REG_12,  | 
427  | 223k  |     /* SystemZ_R13D = 151 */ SYSZ_REG_13,  | 
428  | 223k  |     /* SystemZ_R14D = 152 */ SYSZ_REG_14,  | 
429  | 223k  |     /* SystemZ_R15D = 153 */ SYSZ_REG_15,  | 
430  | 223k  |     /* SystemZ_R0H = 154 */ SYSZ_REG_0,  | 
431  | 223k  |     /* SystemZ_R1H = 155 */ SYSZ_REG_1,  | 
432  | 223k  |     /* SystemZ_R2H = 156 */ SYSZ_REG_2,  | 
433  | 223k  |     /* SystemZ_R3H = 157 */ SYSZ_REG_3,  | 
434  | 223k  |     /* SystemZ_R4H = 158 */ SYSZ_REG_4,  | 
435  | 223k  |     /* SystemZ_R5H = 159 */ SYSZ_REG_5,  | 
436  | 223k  |     /* SystemZ_R6H = 160 */ SYSZ_REG_6,  | 
437  | 223k  |     /* SystemZ_R7H = 161 */ SYSZ_REG_7,  | 
438  | 223k  |     /* SystemZ_R8H = 162 */ SYSZ_REG_8,  | 
439  | 223k  |     /* SystemZ_R9H = 163 */ SYSZ_REG_9,  | 
440  | 223k  |     /* SystemZ_R10H = 164 */ SYSZ_REG_10,  | 
441  | 223k  |     /* SystemZ_R11H = 165 */ SYSZ_REG_11,  | 
442  | 223k  |     /* SystemZ_R12H = 166 */ SYSZ_REG_12,  | 
443  | 223k  |     /* SystemZ_R13H = 167 */ SYSZ_REG_13,  | 
444  | 223k  |     /* SystemZ_R14H = 168 */ SYSZ_REG_14,  | 
445  | 223k  |     /* SystemZ_R15H = 169 */ SYSZ_REG_15,  | 
446  | 223k  |     /* SystemZ_R0L = 170 */ SYSZ_REG_0,  | 
447  | 223k  |     /* SystemZ_R1L = 171 */ SYSZ_REG_1,  | 
448  | 223k  |     /* SystemZ_R2L = 172 */ SYSZ_REG_2,  | 
449  | 223k  |     /* SystemZ_R3L = 173 */ SYSZ_REG_3,  | 
450  | 223k  |     /* SystemZ_R4L = 174 */ SYSZ_REG_4,  | 
451  | 223k  |     /* SystemZ_R5L = 175 */ SYSZ_REG_5,  | 
452  | 223k  |     /* SystemZ_R6L = 176 */ SYSZ_REG_6,  | 
453  | 223k  |     /* SystemZ_R7L = 177 */ SYSZ_REG_7,  | 
454  | 223k  |     /* SystemZ_R8L = 178 */ SYSZ_REG_8,  | 
455  | 223k  |     /* SystemZ_R9L = 179 */ SYSZ_REG_9,  | 
456  | 223k  |     /* SystemZ_R10L = 180 */ SYSZ_REG_10,  | 
457  | 223k  |     /* SystemZ_R11L = 181 */ SYSZ_REG_11,  | 
458  | 223k  |     /* SystemZ_R12L = 182 */ SYSZ_REG_12,  | 
459  | 223k  |     /* SystemZ_R13L = 183 */ SYSZ_REG_13,  | 
460  | 223k  |     /* SystemZ_R14L = 184 */ SYSZ_REG_14,  | 
461  | 223k  |     /* SystemZ_R15L = 185 */ SYSZ_REG_15,  | 
462  | 223k  |     /* SystemZ_R0Q = 186 */ SYSZ_REG_0,  | 
463  | 223k  |     /* SystemZ_R2Q = 187 */ SYSZ_REG_2,  | 
464  | 223k  |     /* SystemZ_R4Q = 188 */ SYSZ_REG_4,  | 
465  | 223k  |     /* SystemZ_R6Q = 189 */ SYSZ_REG_6,  | 
466  | 223k  |     /* SystemZ_R8Q = 190 */ SYSZ_REG_8,  | 
467  | 223k  |     /* SystemZ_R10Q = 191 */ SYSZ_REG_10,  | 
468  | 223k  |     /* SystemZ_R12Q = 192 */ SYSZ_REG_12,  | 
469  | 223k  |     /* SystemZ_R14Q = 193 */ SYSZ_REG_14,  | 
470  | 223k  |   };  | 
471  |  |  | 
472  | 223k  |   if (r < ARR_SIZE(map))  | 
473  | 223k  |     return map[r];  | 
474  |  |  | 
475  |  |   // cannot find this register  | 
476  | 0  |   return 0;  | 
477  | 223k  | }  | 
478  |  |  | 
479  |  | #endif  |