/src/capstonev5/arch/SystemZ/SystemZDisassembler.c
Line | Count | Source |
1 | | //===------ SystemZDisassembler.cpp - Disassembler for PowerPC ------*- C++ -*-===// |
2 | | // |
3 | | // The LLVM Compiler Infrastructure |
4 | | // |
5 | | // This file is distributed under the University of Illinois Open Source |
6 | | // License. See LICENSE.TXT for details. |
7 | | // |
8 | | //===----------------------------------------------------------------------===// |
9 | | |
10 | | /* Capstone Disassembly Engine */ |
11 | | /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */ |
12 | | |
13 | | #ifdef CAPSTONE_HAS_SYSZ |
14 | | |
15 | | #include <stdio.h> // DEBUG |
16 | | #include <stdlib.h> |
17 | | #include <string.h> |
18 | | |
19 | | #include "../../cs_priv.h" |
20 | | #include "../../utils.h" |
21 | | |
22 | | #include "SystemZDisassembler.h" |
23 | | |
24 | | #include "../../MCInst.h" |
25 | | #include "../../MCInstrDesc.h" |
26 | | #include "../../MCFixedLenDisassembler.h" |
27 | | #include "../../MCRegisterInfo.h" |
28 | | #include "../../MCDisassembler.h" |
29 | | #include "../../MathExtras.h" |
30 | | |
31 | | #include "SystemZMCTargetDesc.h" |
32 | | |
33 | | static uint64_t getFeatureBits(int mode) |
34 | 61.2k | { |
35 | | // support everything |
36 | 61.2k | return (uint64_t)-1; |
37 | 61.2k | } |
38 | | |
39 | | static DecodeStatus decodeRegisterClass(MCInst *Inst, uint64_t RegNo, const unsigned *Regs) |
40 | 109k | { |
41 | | //assert(RegNo < 16 && "Invalid register"); |
42 | 109k | RegNo = Regs[RegNo]; |
43 | 109k | if (RegNo == 0) |
44 | 111 | return MCDisassembler_Fail; |
45 | | |
46 | 109k | MCOperand_CreateReg0(Inst, (unsigned)RegNo); |
47 | 109k | return MCDisassembler_Success; |
48 | 109k | } |
49 | | |
50 | | static DecodeStatus DecodeGR32BitRegisterClass(MCInst *Inst, uint64_t RegNo, |
51 | | uint64_t Address, const void *Decoder) |
52 | 25.4k | { |
53 | 25.4k | return decodeRegisterClass(Inst, RegNo, SystemZMC_GR32Regs); |
54 | 25.4k | } |
55 | | |
56 | | static DecodeStatus DecodeGRH32BitRegisterClass(MCInst *Inst, uint64_t RegNo, |
57 | | uint64_t Address, const void *Decoder) |
58 | 3.79k | { |
59 | 3.79k | return decodeRegisterClass(Inst, RegNo, SystemZMC_GRH32Regs); |
60 | 3.79k | } |
61 | | |
62 | | static DecodeStatus DecodeGR64BitRegisterClass(MCInst *Inst, uint64_t RegNo, |
63 | | uint64_t Address, const void *Decoder) |
64 | 20.5k | { |
65 | 20.5k | return decodeRegisterClass(Inst, RegNo, SystemZMC_GR64Regs); |
66 | 20.5k | } |
67 | | |
68 | | static DecodeStatus DecodeGR128BitRegisterClass(MCInst *Inst, uint64_t RegNo, |
69 | | uint64_t Address, const void *Decoder) |
70 | 6.49k | { |
71 | 6.49k | return decodeRegisterClass(Inst, RegNo, SystemZMC_GR128Regs); |
72 | 6.49k | } |
73 | | |
74 | | static DecodeStatus DecodeADDR64BitRegisterClass(MCInst *Inst, uint64_t RegNo, |
75 | | uint64_t Address, const void *Decoder) |
76 | 2.32k | { |
77 | 2.32k | return decodeRegisterClass(Inst, RegNo, SystemZMC_GR64Regs); |
78 | 2.32k | } |
79 | | |
80 | | static DecodeStatus DecodeFP32BitRegisterClass(MCInst *Inst, uint64_t RegNo, |
81 | | uint64_t Address, const void *Decoder) |
82 | 15.3k | { |
83 | 15.3k | return decodeRegisterClass(Inst, RegNo, SystemZMC_FP32Regs); |
84 | 15.3k | } |
85 | | |
86 | | static DecodeStatus DecodeFP64BitRegisterClass(MCInst *Inst, uint64_t RegNo, |
87 | | uint64_t Address, const void *Decoder) |
88 | 18.3k | { |
89 | 18.3k | return decodeRegisterClass(Inst, RegNo, SystemZMC_FP64Regs); |
90 | 18.3k | } |
91 | | |
92 | | static DecodeStatus DecodeFP128BitRegisterClass(MCInst *Inst, uint64_t RegNo, |
93 | | uint64_t Address, const void *Decoder) |
94 | 2.21k | { |
95 | 2.21k | return decodeRegisterClass(Inst, RegNo, SystemZMC_FP128Regs); |
96 | 2.21k | } |
97 | | |
98 | | static DecodeStatus DecodeVR32BitRegisterClass(MCInst *Inst, uint64_t RegNo, |
99 | | uint64_t Address, const void *Decoder) |
100 | 714 | { |
101 | 714 | return decodeRegisterClass(Inst, RegNo, SystemZMC_VR32Regs); |
102 | 714 | } |
103 | | |
104 | | static DecodeStatus DecodeVR64BitRegisterClass(MCInst *Inst, uint64_t RegNo, |
105 | | uint64_t Address, const void *Decoder) |
106 | 1.15k | { |
107 | 1.15k | return decodeRegisterClass(Inst, RegNo, SystemZMC_VR64Regs); |
108 | 1.15k | } |
109 | | |
110 | | static DecodeStatus DecodeVR128BitRegisterClass(MCInst *Inst, uint64_t RegNo, |
111 | | uint64_t Address, const void *Decoder) |
112 | 10.7k | { |
113 | 10.7k | return decodeRegisterClass(Inst, RegNo, SystemZMC_VR128Regs); |
114 | 10.7k | } |
115 | | |
116 | | static DecodeStatus DecodeAR32BitRegisterClass(MCInst *Inst, uint64_t RegNo, |
117 | | uint64_t Address, const void *Decoder) |
118 | 1.53k | { |
119 | 1.53k | return decodeRegisterClass(Inst, RegNo, SystemZMC_AR32Regs); |
120 | 1.53k | } |
121 | | |
122 | | static DecodeStatus DecodeCR64BitRegisterClass(MCInst *Inst, uint64_t RegNo, |
123 | | uint64_t Address, const void *Decoder) |
124 | 574 | { |
125 | 574 | return decodeRegisterClass(Inst, RegNo, SystemZMC_CR64Regs); |
126 | 574 | } |
127 | | |
128 | | static DecodeStatus decodeUImmOperand(MCInst *Inst, uint64_t Imm) |
129 | 20.9k | { |
130 | | //assert(isUInt<N>(Imm) && "Invalid immediate"); |
131 | 20.9k | MCOperand_CreateImm0(Inst, Imm); |
132 | 20.9k | return MCDisassembler_Success; |
133 | 20.9k | } |
134 | | |
135 | | static DecodeStatus decodeSImmOperand(MCInst *Inst, uint64_t Imm, unsigned N) |
136 | 3.77k | { |
137 | | //assert(isUInt<N>(Imm) && "Invalid immediate"); |
138 | 3.77k | MCOperand_CreateImm0(Inst, SignExtend64(Imm, N)); |
139 | 3.77k | return MCDisassembler_Success; |
140 | 3.77k | } |
141 | | |
142 | | static DecodeStatus decodeU1ImmOperand(MCInst *Inst, uint64_t Imm, |
143 | | uint64_t Address, const void *Decoder) |
144 | 360 | { |
145 | 360 | return decodeUImmOperand(Inst, Imm); |
146 | 360 | } |
147 | | |
148 | | static DecodeStatus decodeU2ImmOperand(MCInst *Inst, uint64_t Imm, |
149 | | uint64_t Address, const void *Decoder) |
150 | 572 | { |
151 | 572 | return decodeUImmOperand(Inst, Imm); |
152 | 572 | } |
153 | | |
154 | | static DecodeStatus decodeU3ImmOperand(MCInst *Inst, uint64_t Imm, |
155 | | uint64_t Address, const void *Decoder) |
156 | 40 | { |
157 | 40 | return decodeUImmOperand(Inst, Imm); |
158 | 40 | } |
159 | | |
160 | | static DecodeStatus decodeU4ImmOperand(MCInst *Inst, uint64_t Imm, |
161 | | uint64_t Address, const void *Decoder) |
162 | 12.3k | { |
163 | 12.3k | return decodeUImmOperand(Inst, Imm); |
164 | 12.3k | } |
165 | | |
166 | | static DecodeStatus decodeU6ImmOperand(MCInst *Inst, uint64_t Imm, |
167 | | uint64_t Address, const void *Decoder) |
168 | 149 | { |
169 | 149 | return decodeUImmOperand(Inst, Imm); |
170 | 149 | } |
171 | | |
172 | | static DecodeStatus decodeU8ImmOperand(MCInst *Inst, uint64_t Imm, |
173 | | uint64_t Address, const void *Decoder) |
174 | 4.83k | { |
175 | 4.83k | return decodeUImmOperand(Inst, Imm); |
176 | 4.83k | } |
177 | | |
178 | | static DecodeStatus decodeU12ImmOperand(MCInst *Inst, uint64_t Imm, |
179 | | uint64_t Address, const void *Decoder) |
180 | 98 | { |
181 | 98 | return decodeUImmOperand(Inst, Imm); |
182 | 98 | } |
183 | | |
184 | | static DecodeStatus decodeU16ImmOperand(MCInst *Inst, uint64_t Imm, |
185 | | uint64_t Address, const void *Decoder) |
186 | 1.83k | { |
187 | 1.83k | return decodeUImmOperand(Inst, Imm); |
188 | 1.83k | } |
189 | | |
190 | | static DecodeStatus decodeU32ImmOperand(MCInst *Inst, uint64_t Imm, |
191 | | uint64_t Address, const void *Decoder) |
192 | 670 | { |
193 | 670 | return decodeUImmOperand(Inst, Imm); |
194 | 670 | } |
195 | | |
196 | | static DecodeStatus decodeS8ImmOperand(MCInst *Inst, uint64_t Imm, |
197 | | uint64_t Address, const void *Decoder) |
198 | 1.07k | { |
199 | 1.07k | return decodeSImmOperand(Inst, Imm, 8); |
200 | 1.07k | } |
201 | | |
202 | | static DecodeStatus decodeS16ImmOperand(MCInst *Inst, uint64_t Imm, |
203 | | uint64_t Address, const void *Decoder) |
204 | 1.84k | { |
205 | 1.84k | return decodeSImmOperand(Inst, Imm, 16); |
206 | 1.84k | } |
207 | | |
208 | | static DecodeStatus decodeS32ImmOperand(MCInst *Inst, uint64_t Imm, |
209 | | uint64_t Address, const void *Decoder) |
210 | 853 | { |
211 | 853 | return decodeSImmOperand(Inst, Imm, 32); |
212 | 853 | } |
213 | | |
214 | | static DecodeStatus decodePCDBLOperand(MCInst *Inst, uint64_t Imm, |
215 | | uint64_t Address, unsigned N) |
216 | 3.76k | { |
217 | | //assert(isUInt<N>(Imm) && "Invalid PC-relative offset"); |
218 | 3.76k | MCOperand_CreateImm0(Inst, SignExtend64(Imm, N) * 2 + Address); |
219 | 3.76k | return MCDisassembler_Success; |
220 | 3.76k | } |
221 | | |
222 | | static DecodeStatus decodePC12DBLBranchOperand(MCInst *Inst, uint64_t Imm, |
223 | | uint64_t Address, |
224 | | const void *Decoder) |
225 | 289 | { |
226 | 289 | return decodePCDBLOperand(Inst, Imm, Address, 12); |
227 | 289 | } |
228 | | |
229 | | static DecodeStatus decodePC16DBLBranchOperand(MCInst *Inst, uint64_t Imm, |
230 | | uint64_t Address, |
231 | | const void *Decoder) |
232 | 2.68k | { |
233 | 2.68k | return decodePCDBLOperand(Inst, Imm, Address, 16); |
234 | 2.68k | } |
235 | | |
236 | | static DecodeStatus decodePC24DBLBranchOperand(MCInst *Inst, uint64_t Imm, |
237 | | uint64_t Address, |
238 | | const void *Decoder) |
239 | 289 | { |
240 | 289 | return decodePCDBLOperand(Inst, Imm, Address, 24); |
241 | 289 | } |
242 | | |
243 | | static DecodeStatus decodePC32DBLBranchOperand(MCInst *Inst, uint64_t Imm, |
244 | | uint64_t Address, |
245 | | const void *Decoder) |
246 | 67 | { |
247 | 67 | return decodePCDBLOperand(Inst, Imm, Address, 32); |
248 | 67 | } |
249 | | |
250 | | static DecodeStatus decodePC32DBLOperand(MCInst *Inst, uint64_t Imm, |
251 | | uint64_t Address, |
252 | | const void *Decoder) |
253 | 438 | { |
254 | 438 | return decodePCDBLOperand(Inst, Imm, Address, 32); |
255 | 438 | } |
256 | | |
257 | | static DecodeStatus decodeBDAddr12Operand(MCInst *Inst, uint64_t Field, |
258 | | const unsigned *Regs) |
259 | 11.7k | { |
260 | 11.7k | uint64_t Base = Field >> 12; |
261 | 11.7k | uint64_t Disp = Field & 0xfff; |
262 | | //assert(Base < 16 && "Invalid BDAddr12"); |
263 | | |
264 | 11.7k | MCOperand_CreateReg0(Inst, Base == 0 ? 0 : Regs[Base]); |
265 | 11.7k | MCOperand_CreateImm0(Inst, Disp); |
266 | | |
267 | 11.7k | return MCDisassembler_Success; |
268 | 11.7k | } |
269 | | |
270 | | static DecodeStatus decodeBDAddr20Operand(MCInst *Inst, uint64_t Field, |
271 | | const unsigned *Regs) |
272 | 2.79k | { |
273 | 2.79k | uint64_t Base = Field >> 20; |
274 | 2.79k | uint64_t Disp = ((Field << 12) & 0xff000) | ((Field >> 8) & 0xfff); |
275 | | //assert(Base < 16 && "Invalid BDAddr20"); |
276 | | |
277 | 2.79k | MCOperand_CreateReg0(Inst, Base == 0 ? 0 : Regs[Base]); |
278 | 2.79k | MCOperand_CreateImm0(Inst, SignExtend64(Disp, 20)); |
279 | 2.79k | return MCDisassembler_Success; |
280 | 2.79k | } |
281 | | |
282 | | static DecodeStatus decodeBDXAddr12Operand(MCInst *Inst, uint64_t Field, |
283 | | const unsigned *Regs) |
284 | 9.68k | { |
285 | 9.68k | uint64_t Index = Field >> 16; |
286 | 9.68k | uint64_t Base = (Field >> 12) & 0xf; |
287 | 9.68k | uint64_t Disp = Field & 0xfff; |
288 | | |
289 | | //assert(Index < 16 && "Invalid BDXAddr12"); |
290 | 9.68k | MCOperand_CreateReg0(Inst, Base == 0 ? 0 : Regs[Base]); |
291 | 9.68k | MCOperand_CreateImm0(Inst, Disp); |
292 | 9.68k | MCOperand_CreateReg0(Inst, Index == 0 ? 0 : Regs[Index]); |
293 | | |
294 | 9.68k | return MCDisassembler_Success; |
295 | 9.68k | } |
296 | | |
297 | | static DecodeStatus decodeBDXAddr20Operand(MCInst *Inst, uint64_t Field, |
298 | | const unsigned *Regs) |
299 | 933 | { |
300 | 933 | uint64_t Index = Field >> 24; |
301 | 933 | uint64_t Base = (Field >> 20) & 0xf; |
302 | 933 | uint64_t Disp = ((Field & 0xfff00) >> 8) | ((Field & 0xff) << 12); |
303 | | |
304 | | //assert(Index < 16 && "Invalid BDXAddr20"); |
305 | 933 | MCOperand_CreateReg0(Inst, Base == 0 ? 0 : Regs[Base]); |
306 | 933 | MCOperand_CreateImm0(Inst, SignExtend64(Disp, 20)); |
307 | 933 | MCOperand_CreateReg0(Inst, Index == 0 ? 0 : Regs[Index]); |
308 | | |
309 | 933 | return MCDisassembler_Success; |
310 | 933 | } |
311 | | |
312 | | static DecodeStatus decodeBDLAddr12Len8Operand(MCInst *Inst, uint64_t Field, |
313 | | const unsigned *Regs) |
314 | 5.51k | { |
315 | 5.51k | uint64_t Length = Field >> 16; |
316 | 5.51k | uint64_t Base = (Field >> 12) & 0xf; |
317 | 5.51k | uint64_t Disp = Field & 0xfff; |
318 | | //assert(Length < 256 && "Invalid BDLAddr12Len8"); |
319 | | |
320 | 5.51k | MCOperand_CreateReg0(Inst, Base == 0 ? 0 : Regs[Base]); |
321 | 5.51k | MCOperand_CreateImm0(Inst, Disp); |
322 | 5.51k | MCOperand_CreateImm0(Inst, Length + 1); |
323 | | |
324 | 5.51k | return MCDisassembler_Success; |
325 | 5.51k | } |
326 | | |
327 | | static DecodeStatus decodeBDRAddr12Operand(MCInst *Inst, uint64_t Field, |
328 | | const unsigned *Regs) |
329 | 485 | { |
330 | 485 | uint64_t Length = Field >> 16; |
331 | 485 | uint64_t Base = (Field >> 12) & 0xf; |
332 | 485 | uint64_t Disp = Field & 0xfff; |
333 | | //assert(Length < 16 && "Invalid BDRAddr12"); |
334 | | |
335 | 485 | MCOperand_CreateReg0(Inst, Base == 0 ? 0 : Regs[Base]); |
336 | 485 | MCOperand_CreateImm0(Inst, Disp); |
337 | 485 | MCOperand_CreateReg0(Inst, Regs[Length]); |
338 | | |
339 | 485 | return MCDisassembler_Success; |
340 | 485 | } |
341 | | |
342 | | static DecodeStatus decodeBDVAddr12Operand(MCInst *Inst, uint64_t Field, |
343 | | const unsigned *Regs) |
344 | 753 | { |
345 | 753 | uint64_t Index = Field >> 16; |
346 | 753 | uint64_t Base = (Field >> 12) & 0xf; |
347 | 753 | uint64_t Disp = Field & 0xfff; |
348 | | //assert(Index < 32 && "Invalid BDVAddr12"); |
349 | | |
350 | 753 | MCOperand_CreateReg0(Inst, Base == 0 ? 0 : Regs[Base]); |
351 | 753 | MCOperand_CreateImm0(Inst, Disp); |
352 | 753 | MCOperand_CreateReg0(Inst, SystemZMC_VR128Regs[Index]); |
353 | | |
354 | 753 | return MCDisassembler_Success; |
355 | 753 | } |
356 | | |
357 | | static DecodeStatus decodeBDAddr32Disp12Operand(MCInst *Inst, uint64_t Field, |
358 | | uint64_t Address, const void *Decoder) |
359 | 1.33k | { |
360 | 1.33k | return decodeBDAddr12Operand(Inst, Field, SystemZMC_GR32Regs); |
361 | 1.33k | } |
362 | | |
363 | | static DecodeStatus decodeBDAddr32Disp20Operand(MCInst *Inst, uint64_t Field, |
364 | | uint64_t Address, const void *Decoder) |
365 | 723 | { |
366 | 723 | return decodeBDAddr20Operand(Inst, Field, SystemZMC_GR32Regs); |
367 | 723 | } |
368 | | |
369 | | static DecodeStatus decodeBDAddr64Disp12Operand(MCInst *Inst, uint64_t Field, |
370 | | uint64_t Address, const void *Decoder) |
371 | 10.4k | { |
372 | 10.4k | return decodeBDAddr12Operand(Inst, Field, SystemZMC_GR64Regs); |
373 | 10.4k | } |
374 | | |
375 | | static DecodeStatus decodeBDAddr64Disp20Operand(MCInst *Inst, uint64_t Field, |
376 | | uint64_t Address, const void *Decoder) |
377 | 2.07k | { |
378 | 2.07k | return decodeBDAddr20Operand(Inst, Field, SystemZMC_GR64Regs); |
379 | 2.07k | } |
380 | | |
381 | | static DecodeStatus decodeBDXAddr64Disp12Operand(MCInst *Inst, uint64_t Field, |
382 | | uint64_t Address, const void *Decoder) |
383 | 9.68k | { |
384 | 9.68k | return decodeBDXAddr12Operand(Inst, Field, SystemZMC_GR64Regs); |
385 | 9.68k | } |
386 | | |
387 | | static DecodeStatus decodeBDXAddr64Disp20Operand(MCInst *Inst, uint64_t Field, |
388 | | uint64_t Address, const void *Decoder) |
389 | 933 | { |
390 | 933 | return decodeBDXAddr20Operand(Inst, Field, SystemZMC_GR64Regs); |
391 | 933 | } |
392 | | |
393 | | static DecodeStatus decodeBDLAddr64Disp12Len4Operand(MCInst *Inst, uint64_t Field, |
394 | | uint64_t Address, const void *Decoder) |
395 | 2.91k | { |
396 | 2.91k | return decodeBDLAddr12Len8Operand(Inst, Field, SystemZMC_GR64Regs); |
397 | 2.91k | } |
398 | | |
399 | | static DecodeStatus decodeBDLAddr64Disp12Len8Operand(MCInst *Inst, uint64_t Field, |
400 | | uint64_t Address, const void *Decoder) |
401 | 2.60k | { |
402 | 2.60k | return decodeBDLAddr12Len8Operand(Inst, Field, SystemZMC_GR64Regs); |
403 | 2.60k | } |
404 | | |
405 | | static DecodeStatus decodeBDRAddr64Disp12Operand(MCInst *Inst, uint64_t Field, |
406 | | uint64_t Address, const void *Decoder) |
407 | 485 | { |
408 | 485 | return decodeBDRAddr12Operand(Inst, Field, SystemZMC_GR64Regs); |
409 | 485 | } |
410 | | |
411 | | static DecodeStatus decodeBDVAddr64Disp12Operand(MCInst *Inst, uint64_t Field, |
412 | | uint64_t Address, const void *Decoder) |
413 | 753 | { |
414 | 753 | return decodeBDVAddr12Operand(Inst, Field, SystemZMC_GR64Regs); |
415 | 753 | } |
416 | | |
417 | | |
418 | | #define GET_SUBTARGETINFO_ENUM |
419 | | #include "SystemZGenSubtargetInfo.inc" |
420 | | #include "SystemZGenDisassemblerTables.inc" |
421 | | bool SystemZ_getInstruction(csh ud, const uint8_t *code, size_t code_len, MCInst *MI, |
422 | | uint16_t *size, uint64_t address, void *info) |
423 | 61.8k | { |
424 | 61.8k | uint64_t Inst; |
425 | 61.8k | const uint8_t *Table; |
426 | 61.8k | uint16_t I; |
427 | | |
428 | | // The top 2 bits of the first byte specify the size. |
429 | 61.8k | if (*code < 0x40) { |
430 | 15.7k | *size = 2; |
431 | 15.7k | Table = DecoderTable16; |
432 | 46.0k | } else if (*code < 0xc0) { |
433 | 22.8k | *size = 4; |
434 | 22.8k | Table = DecoderTable32; |
435 | 23.1k | } else { |
436 | 23.1k | *size = 6; |
437 | 23.1k | Table = DecoderTable48; |
438 | 23.1k | } |
439 | | |
440 | 61.8k | if (code_len < *size) |
441 | | // short of input data |
442 | 607 | return false; |
443 | | |
444 | 61.2k | if (MI->flat_insn->detail) { |
445 | 61.2k | memset(MI->flat_insn->detail, 0, offsetof(cs_detail, sysz)+sizeof(cs_sysz)); |
446 | 61.2k | } |
447 | | |
448 | | // Construct the instruction. |
449 | 61.2k | Inst = 0; |
450 | 320k | for (I = 0; I < *size; ++I) |
451 | 259k | Inst = (Inst << 8) | code[I]; |
452 | | |
453 | 61.2k | return decodeInstruction(Table, MI, Inst, address, info, 0); |
454 | 61.8k | } |
455 | | |
456 | | #define GET_REGINFO_ENUM |
457 | | #define GET_REGINFO_MC_DESC |
458 | | #include "SystemZGenRegisterInfo.inc" |
459 | | void SystemZ_init(MCRegisterInfo *MRI) |
460 | 2.27k | { |
461 | | /* |
462 | | InitMCRegisterInfo(SystemZRegDesc, 98, RA, PC, |
463 | | SystemZMCRegisterClasses, 12, |
464 | | SystemZRegUnitRoots, |
465 | | 49, |
466 | | SystemZRegDiffLists, |
467 | | SystemZRegStrings, |
468 | | SystemZSubRegIdxLists, |
469 | | 7, |
470 | | SystemZSubRegIdxRanges, |
471 | | SystemZRegEncodingTable); |
472 | | */ |
473 | | |
474 | 2.27k | MCRegisterInfo_InitMCRegisterInfo(MRI, SystemZRegDesc, 194, |
475 | 2.27k | 0, 0, |
476 | 2.27k | SystemZMCRegisterClasses, 21, |
477 | 2.27k | 0, 0, |
478 | 2.27k | SystemZRegDiffLists, |
479 | 2.27k | 0, |
480 | 2.27k | SystemZSubRegIdxLists, 7, |
481 | 2.27k | 0); |
482 | 2.27k | } |
483 | | |
484 | | #endif |