1 /* Capstone Disassembly Engine */
2 /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2014 */
3
4 #ifdef CAPSTONE_HAS_SPARC
5
6 #include <stdio.h> // debug
7 #include <string.h>
8
9 #include "../../utils.h"
10
11 #include "SparcMapping.h"
12
13 #define GET_INSTRINFO_ENUM
14 #include "SparcGenInstrInfo.inc"
15
16 #ifndef CAPSTONE_DIET
17 static name_map reg_name_maps[] = {
18 { SPARC_REG_INVALID, NULL },
19
20 { SPARC_REG_F0, "f0"},
21 { SPARC_REG_F1, "f1"},
22 { SPARC_REG_F2, "f2"},
23 { SPARC_REG_F3, "f3"},
24 { SPARC_REG_F4, "f4"},
25 { SPARC_REG_F5, "f5"},
26 { SPARC_REG_F6, "f6"},
27 { SPARC_REG_F7, "f7"},
28 { SPARC_REG_F8, "f8"},
29 { SPARC_REG_F9, "f9"},
30 { SPARC_REG_F10, "f10"},
31 { SPARC_REG_F11, "f11"},
32 { SPARC_REG_F12, "f12"},
33 { SPARC_REG_F13, "f13"},
34 { SPARC_REG_F14, "f14"},
35 { SPARC_REG_F15, "f15"},
36 { SPARC_REG_F16, "f16"},
37 { SPARC_REG_F17, "f17"},
38 { SPARC_REG_F18, "f18"},
39 { SPARC_REG_F19, "f19"},
40 { SPARC_REG_F20, "f20"},
41 { SPARC_REG_F21, "f21"},
42 { SPARC_REG_F22, "f22"},
43 { SPARC_REG_F23, "f23"},
44 { SPARC_REG_F24, "f24"},
45 { SPARC_REG_F25, "f25"},
46 { SPARC_REG_F26, "f26"},
47 { SPARC_REG_F27, "f27"},
48 { SPARC_REG_F28, "f28"},
49 { SPARC_REG_F29, "f29"},
50 { SPARC_REG_F30, "f30"},
51 { SPARC_REG_F31, "f31"},
52 { SPARC_REG_F32, "f32"},
53 { SPARC_REG_F34, "f34"},
54 { SPARC_REG_F36, "f36"},
55 { SPARC_REG_F38, "f38"},
56 { SPARC_REG_F40, "f40"},
57 { SPARC_REG_F42, "f42"},
58 { SPARC_REG_F44, "f44"},
59 { SPARC_REG_F46, "f46"},
60 { SPARC_REG_F48, "f48"},
61 { SPARC_REG_F50, "f50"},
62 { SPARC_REG_F52, "f52"},
63 { SPARC_REG_F54, "f54"},
64 { SPARC_REG_F56, "f56"},
65 { SPARC_REG_F58, "f58"},
66 { SPARC_REG_F60, "f60"},
67 { SPARC_REG_F62, "f62"},
68 { SPARC_REG_FCC0, "fcc0"},
69 { SPARC_REG_FCC1, "fcc1"},
70 { SPARC_REG_FCC2, "fcc2"},
71 { SPARC_REG_FCC3, "fcc3"},
72 { SPARC_REG_FP, "fp"},
73 { SPARC_REG_G0, "g0"},
74 { SPARC_REG_G1, "g1"},
75 { SPARC_REG_G2, "g2"},
76 { SPARC_REG_G3, "g3"},
77 { SPARC_REG_G4, "g4"},
78 { SPARC_REG_G5, "g5"},
79 { SPARC_REG_G6, "g6"},
80 { SPARC_REG_G7, "g7"},
81 { SPARC_REG_I0, "i0"},
82 { SPARC_REG_I1, "i1"},
83 { SPARC_REG_I2, "i2"},
84 { SPARC_REG_I3, "i3"},
85 { SPARC_REG_I4, "i4"},
86 { SPARC_REG_I5, "i5"},
87 { SPARC_REG_I7, "i7"},
88 { SPARC_REG_ICC, "icc"},
89 { SPARC_REG_L0, "l0"},
90 { SPARC_REG_L1, "l1"},
91 { SPARC_REG_L2, "l2"},
92 { SPARC_REG_L3, "l3"},
93 { SPARC_REG_L4, "l4"},
94 { SPARC_REG_L5, "l5"},
95 { SPARC_REG_L6, "l6"},
96 { SPARC_REG_L7, "l7"},
97 { SPARC_REG_O0, "o0"},
98 { SPARC_REG_O1, "o1"},
99 { SPARC_REG_O2, "o2"},
100 { SPARC_REG_O3, "o3"},
101 { SPARC_REG_O4, "o4"},
102 { SPARC_REG_O5, "o5"},
103 { SPARC_REG_O7, "o7"},
104 { SPARC_REG_SP, "sp"},
105 { SPARC_REG_Y, "y"},
106
107 // special registers
108 { SPARC_REG_XCC, "xcc"},
109 };
110 #endif
111
Sparc_reg_name(csh handle,unsigned int reg)112 const char *Sparc_reg_name(csh handle, unsigned int reg)
113 {
114 #ifndef CAPSTONE_DIET
115 if (reg >= SPARC_REG_ENDING)
116 return NULL;
117
118 return reg_name_maps[reg].name;
119 #else
120 return NULL;
121 #endif
122 }
123
124 static insn_map insns[] = {
125 // dummy item
126 {
127 0, 0,
128 #ifndef CAPSTONE_DIET
129 { 0 }, { 0 }, { 0 }, 0, 0
130 #endif
131 },
132
133 {
134 SP_ADDCCri, SPARC_INS_ADDCC,
135 #ifndef CAPSTONE_DIET
136 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
137 #endif
138 },
139 {
140 SP_ADDCCrr, SPARC_INS_ADDCC,
141 #ifndef CAPSTONE_DIET
142 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
143 #endif
144 },
145 {
146 SP_ADDCri, SPARC_INS_ADDX,
147 #ifndef CAPSTONE_DIET
148 { SPARC_REG_ICC, 0 }, { 0 }, { 0 }, 0, 0
149 #endif
150 },
151 {
152 SP_ADDCrr, SPARC_INS_ADDX,
153 #ifndef CAPSTONE_DIET
154 { SPARC_REG_ICC, 0 }, { 0 }, { 0 }, 0, 0
155 #endif
156 },
157 {
158 SP_ADDEri, SPARC_INS_ADDXCC,
159 #ifndef CAPSTONE_DIET
160 { SPARC_REG_ICC, 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
161 #endif
162 },
163 {
164 SP_ADDErr, SPARC_INS_ADDXCC,
165 #ifndef CAPSTONE_DIET
166 { SPARC_REG_ICC, 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
167 #endif
168 },
169 {
170 SP_ADDXC, SPARC_INS_ADDXC,
171 #ifndef CAPSTONE_DIET
172 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
173 #endif
174 },
175 {
176 SP_ADDXCCC, SPARC_INS_ADDXCCC,
177 #ifndef CAPSTONE_DIET
178 { SPARC_REG_ICC, 0 }, { SPARC_REG_ICC, 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
179 #endif
180 },
181 {
182 SP_ADDXri, SPARC_INS_ADD,
183 #ifndef CAPSTONE_DIET
184 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
185 #endif
186 },
187 {
188 SP_ADDXrr, SPARC_INS_ADD,
189 #ifndef CAPSTONE_DIET
190 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
191 #endif
192 },
193 {
194 SP_ADDri, SPARC_INS_ADD,
195 #ifndef CAPSTONE_DIET
196 { 0 }, { 0 }, { 0 }, 0, 0
197 #endif
198 },
199 {
200 SP_ADDrr, SPARC_INS_ADD,
201 #ifndef CAPSTONE_DIET
202 { 0 }, { 0 }, { 0 }, 0, 0
203 #endif
204 },
205 {
206 SP_ALIGNADDR, SPARC_INS_ALIGNADDR,
207 #ifndef CAPSTONE_DIET
208 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
209 #endif
210 },
211 {
212 SP_ALIGNADDRL, SPARC_INS_ALIGNADDRL,
213 #ifndef CAPSTONE_DIET
214 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
215 #endif
216 },
217 {
218 SP_ANDCCri, SPARC_INS_ANDCC,
219 #ifndef CAPSTONE_DIET
220 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
221 #endif
222 },
223 {
224 SP_ANDCCrr, SPARC_INS_ANDCC,
225 #ifndef CAPSTONE_DIET
226 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
227 #endif
228 },
229 {
230 SP_ANDNCCri, SPARC_INS_ANDNCC,
231 #ifndef CAPSTONE_DIET
232 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
233 #endif
234 },
235 {
236 SP_ANDNCCrr, SPARC_INS_ANDNCC,
237 #ifndef CAPSTONE_DIET
238 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
239 #endif
240 },
241 {
242 SP_ANDNri, SPARC_INS_ANDN,
243 #ifndef CAPSTONE_DIET
244 { 0 }, { 0 }, { 0 }, 0, 0
245 #endif
246 },
247 {
248 SP_ANDNrr, SPARC_INS_ANDN,
249 #ifndef CAPSTONE_DIET
250 { 0 }, { 0 }, { 0 }, 0, 0
251 #endif
252 },
253 {
254 SP_ANDXNrr, SPARC_INS_ANDN,
255 #ifndef CAPSTONE_DIET
256 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
257 #endif
258 },
259 {
260 SP_ANDXri, SPARC_INS_AND,
261 #ifndef CAPSTONE_DIET
262 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
263 #endif
264 },
265 {
266 SP_ANDXrr, SPARC_INS_AND,
267 #ifndef CAPSTONE_DIET
268 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
269 #endif
270 },
271 {
272 SP_ANDri, SPARC_INS_AND,
273 #ifndef CAPSTONE_DIET
274 { 0 }, { 0 }, { 0 }, 0, 0
275 #endif
276 },
277 {
278 SP_ANDrr, SPARC_INS_AND,
279 #ifndef CAPSTONE_DIET
280 { 0 }, { 0 }, { 0 }, 0, 0
281 #endif
282 },
283 {
284 SP_ARRAY16, SPARC_INS_ARRAY16,
285 #ifndef CAPSTONE_DIET
286 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
287 #endif
288 },
289 {
290 SP_ARRAY32, SPARC_INS_ARRAY32,
291 #ifndef CAPSTONE_DIET
292 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
293 #endif
294 },
295 {
296 SP_ARRAY8, SPARC_INS_ARRAY8,
297 #ifndef CAPSTONE_DIET
298 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
299 #endif
300 },
301 {
302 SP_BA, SPARC_INS_B,
303 #ifndef CAPSTONE_DIET
304 { 0 }, { 0 }, { 0 }, 1, 0
305 #endif
306 },
307 {
308 SP_BCOND, SPARC_INS_B,
309 #ifndef CAPSTONE_DIET
310 { SPARC_REG_ICC, 0 }, { 0 }, { 0 }, 1, 0
311 #endif
312 },
313 {
314 SP_BCONDA, SPARC_INS_B,
315 #ifndef CAPSTONE_DIET
316 { SPARC_REG_ICC, 0 }, { 0 }, { 0 }, 1, 0
317 #endif
318 },
319 {
320 SP_BINDri, SPARC_INS_JMP,
321 #ifndef CAPSTONE_DIET
322 { 0 }, { 0 }, { 0 }, 1, 1
323 #endif
324 },
325 {
326 SP_BINDrr, SPARC_INS_JMP,
327 #ifndef CAPSTONE_DIET
328 { 0 }, { 0 }, { 0 }, 1, 1
329 #endif
330 },
331 {
332 SP_BMASK, SPARC_INS_BMASK,
333 #ifndef CAPSTONE_DIET
334 { 0 }, { 0 }, { SPARC_GRP_VIS2, 0 }, 0, 0
335 #endif
336 },
337 {
338 SP_BPFCC, SPARC_INS_FB,
339 #ifndef CAPSTONE_DIET
340 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 1, 0
341 #endif
342 },
343 {
344 SP_BPFCCA, SPARC_INS_FB,
345 #ifndef CAPSTONE_DIET
346 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 1, 0
347 #endif
348 },
349 {
350 SP_BPFCCANT, SPARC_INS_FB,
351 #ifndef CAPSTONE_DIET
352 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 1, 0
353 #endif
354 },
355 {
356 SP_BPFCCNT, SPARC_INS_FB,
357 #ifndef CAPSTONE_DIET
358 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 1, 0
359 #endif
360 },
361 {
362 SP_BPGEZapn, SPARC_INS_BRGEZ,
363 #ifndef CAPSTONE_DIET
364 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
365 #endif
366 },
367 {
368 SP_BPGEZapt, SPARC_INS_BRGEZ,
369 #ifndef CAPSTONE_DIET
370 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
371 #endif
372 },
373 {
374 SP_BPGEZnapn, SPARC_INS_BRGEZ,
375 #ifndef CAPSTONE_DIET
376 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
377 #endif
378 },
379 {
380 SP_BPGEZnapt, SPARC_INS_BRGEZ,
381 #ifndef CAPSTONE_DIET
382 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
383 #endif
384 },
385 {
386 SP_BPGZapn, SPARC_INS_BRGZ,
387 #ifndef CAPSTONE_DIET
388 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
389 #endif
390 },
391 {
392 SP_BPGZapt, SPARC_INS_BRGZ,
393 #ifndef CAPSTONE_DIET
394 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
395 #endif
396 },
397 {
398 SP_BPGZnapn, SPARC_INS_BRGZ,
399 #ifndef CAPSTONE_DIET
400 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
401 #endif
402 },
403 {
404 SP_BPGZnapt, SPARC_INS_BRGZ,
405 #ifndef CAPSTONE_DIET
406 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
407 #endif
408 },
409 {
410 SP_BPICC, SPARC_INS_B,
411 #ifndef CAPSTONE_DIET
412 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 1, 0
413 #endif
414 },
415 {
416 SP_BPICCA, SPARC_INS_B,
417 #ifndef CAPSTONE_DIET
418 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 1, 0
419 #endif
420 },
421 {
422 SP_BPICCANT, SPARC_INS_B,
423 #ifndef CAPSTONE_DIET
424 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 1, 0
425 #endif
426 },
427 {
428 SP_BPICCNT, SPARC_INS_B,
429 #ifndef CAPSTONE_DIET
430 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 1, 0
431 #endif
432 },
433 {
434 SP_BPLEZapn, SPARC_INS_BRLEZ,
435 #ifndef CAPSTONE_DIET
436 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
437 #endif
438 },
439 {
440 SP_BPLEZapt, SPARC_INS_BRLEZ,
441 #ifndef CAPSTONE_DIET
442 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
443 #endif
444 },
445 {
446 SP_BPLEZnapn, SPARC_INS_BRLEZ,
447 #ifndef CAPSTONE_DIET
448 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
449 #endif
450 },
451 {
452 SP_BPLEZnapt, SPARC_INS_BRLEZ,
453 #ifndef CAPSTONE_DIET
454 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
455 #endif
456 },
457 {
458 SP_BPLZapn, SPARC_INS_BRLZ,
459 #ifndef CAPSTONE_DIET
460 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
461 #endif
462 },
463 {
464 SP_BPLZapt, SPARC_INS_BRLZ,
465 #ifndef CAPSTONE_DIET
466 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
467 #endif
468 },
469 {
470 SP_BPLZnapn, SPARC_INS_BRLZ,
471 #ifndef CAPSTONE_DIET
472 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
473 #endif
474 },
475 {
476 SP_BPLZnapt, SPARC_INS_BRLZ,
477 #ifndef CAPSTONE_DIET
478 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
479 #endif
480 },
481 {
482 SP_BPNZapn, SPARC_INS_BRNZ,
483 #ifndef CAPSTONE_DIET
484 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
485 #endif
486 },
487 {
488 SP_BPNZapt, SPARC_INS_BRNZ,
489 #ifndef CAPSTONE_DIET
490 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
491 #endif
492 },
493 {
494 SP_BPNZnapn, SPARC_INS_BRNZ,
495 #ifndef CAPSTONE_DIET
496 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
497 #endif
498 },
499 {
500 SP_BPNZnapt, SPARC_INS_BRNZ,
501 #ifndef CAPSTONE_DIET
502 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
503 #endif
504 },
505 {
506 SP_BPXCC, SPARC_INS_B,
507 #ifndef CAPSTONE_DIET
508 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
509 #endif
510 },
511 {
512 SP_BPXCCA, SPARC_INS_B,
513 #ifndef CAPSTONE_DIET
514 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
515 #endif
516 },
517 {
518 SP_BPXCCANT, SPARC_INS_B,
519 #ifndef CAPSTONE_DIET
520 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
521 #endif
522 },
523 {
524 SP_BPXCCNT, SPARC_INS_B,
525 #ifndef CAPSTONE_DIET
526 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
527 #endif
528 },
529 {
530 SP_BPZapn, SPARC_INS_BRZ,
531 #ifndef CAPSTONE_DIET
532 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
533 #endif
534 },
535 {
536 SP_BPZapt, SPARC_INS_BRZ,
537 #ifndef CAPSTONE_DIET
538 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
539 #endif
540 },
541 {
542 SP_BPZnapn, SPARC_INS_BRZ,
543 #ifndef CAPSTONE_DIET
544 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
545 #endif
546 },
547 {
548 SP_BPZnapt, SPARC_INS_BRZ,
549 #ifndef CAPSTONE_DIET
550 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 1, 0
551 #endif
552 },
553 {
554 SP_BSHUFFLE, SPARC_INS_BSHUFFLE,
555 #ifndef CAPSTONE_DIET
556 { 0 }, { 0 }, { SPARC_GRP_VIS2, 0 }, 0, 0
557 #endif
558 },
559 {
560 SP_CALL, SPARC_INS_CALL,
561 #ifndef CAPSTONE_DIET
562 { SPARC_REG_O6, 0 }, { 0 }, { 0 }, 0, 0
563 #endif
564 },
565 {
566 SP_CALLri, SPARC_INS_CALL,
567 #ifndef CAPSTONE_DIET
568 { SPARC_REG_O6, 0 }, { 0 }, { 0 }, 0, 0
569 #endif
570 },
571 {
572 SP_CALLrr, SPARC_INS_CALL,
573 #ifndef CAPSTONE_DIET
574 { SPARC_REG_O6, 0 }, { 0 }, { 0 }, 0, 0
575 #endif
576 },
577 {
578 SP_CASXrr, SPARC_INS_CASX,
579 #ifndef CAPSTONE_DIET
580 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
581 #endif
582 },
583 {
584 SP_CASrr, SPARC_INS_CAS,
585 #ifndef CAPSTONE_DIET
586 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
587 #endif
588 },
589 {
590 SP_CMASK16, SPARC_INS_CMASK16,
591 #ifndef CAPSTONE_DIET
592 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
593 #endif
594 },
595 {
596 SP_CMASK32, SPARC_INS_CMASK32,
597 #ifndef CAPSTONE_DIET
598 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
599 #endif
600 },
601 {
602 SP_CMASK8, SPARC_INS_CMASK8,
603 #ifndef CAPSTONE_DIET
604 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
605 #endif
606 },
607 {
608 SP_CMPri, SPARC_INS_CMP,
609 #ifndef CAPSTONE_DIET
610 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
611 #endif
612 },
613 {
614 SP_CMPrr, SPARC_INS_CMP,
615 #ifndef CAPSTONE_DIET
616 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
617 #endif
618 },
619 {
620 SP_EDGE16, SPARC_INS_EDGE16,
621 #ifndef CAPSTONE_DIET
622 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
623 #endif
624 },
625 {
626 SP_EDGE16L, SPARC_INS_EDGE16L,
627 #ifndef CAPSTONE_DIET
628 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
629 #endif
630 },
631 {
632 SP_EDGE16LN, SPARC_INS_EDGE16LN,
633 #ifndef CAPSTONE_DIET
634 { 0 }, { 0 }, { SPARC_GRP_VIS2, 0 }, 0, 0
635 #endif
636 },
637 {
638 SP_EDGE16N, SPARC_INS_EDGE16N,
639 #ifndef CAPSTONE_DIET
640 { 0 }, { 0 }, { SPARC_GRP_VIS2, 0 }, 0, 0
641 #endif
642 },
643 {
644 SP_EDGE32, SPARC_INS_EDGE32,
645 #ifndef CAPSTONE_DIET
646 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
647 #endif
648 },
649 {
650 SP_EDGE32L, SPARC_INS_EDGE32L,
651 #ifndef CAPSTONE_DIET
652 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
653 #endif
654 },
655 {
656 SP_EDGE32LN, SPARC_INS_EDGE32LN,
657 #ifndef CAPSTONE_DIET
658 { 0 }, { 0 }, { SPARC_GRP_VIS2, 0 }, 0, 0
659 #endif
660 },
661 {
662 SP_EDGE32N, SPARC_INS_EDGE32N,
663 #ifndef CAPSTONE_DIET
664 { 0 }, { 0 }, { SPARC_GRP_VIS2, 0 }, 0, 0
665 #endif
666 },
667 {
668 SP_EDGE8, SPARC_INS_EDGE8,
669 #ifndef CAPSTONE_DIET
670 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
671 #endif
672 },
673 {
674 SP_EDGE8L, SPARC_INS_EDGE8L,
675 #ifndef CAPSTONE_DIET
676 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
677 #endif
678 },
679 {
680 SP_EDGE8LN, SPARC_INS_EDGE8LN,
681 #ifndef CAPSTONE_DIET
682 { 0 }, { 0 }, { SPARC_GRP_VIS2, 0 }, 0, 0
683 #endif
684 },
685 {
686 SP_EDGE8N, SPARC_INS_EDGE8N,
687 #ifndef CAPSTONE_DIET
688 { 0 }, { 0 }, { SPARC_GRP_VIS2, 0 }, 0, 0
689 #endif
690 },
691 {
692 SP_FABSD, SPARC_INS_FABSD,
693 #ifndef CAPSTONE_DIET
694 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
695 #endif
696 },
697 {
698 SP_FABSQ, SPARC_INS_FABSQ,
699 #ifndef CAPSTONE_DIET
700 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
701 #endif
702 },
703 {
704 SP_FABSS, SPARC_INS_FABSS,
705 #ifndef CAPSTONE_DIET
706 { 0 }, { 0 }, { 0 }, 0, 0
707 #endif
708 },
709 {
710 SP_FADDD, SPARC_INS_FADDD,
711 #ifndef CAPSTONE_DIET
712 { 0 }, { 0 }, { 0 }, 0, 0
713 #endif
714 },
715 {
716 SP_FADDQ, SPARC_INS_FADDQ,
717 #ifndef CAPSTONE_DIET
718 { 0 }, { 0 }, { SPARC_GRP_HARDQUAD, 0 }, 0, 0
719 #endif
720 },
721 {
722 SP_FADDS, SPARC_INS_FADDS,
723 #ifndef CAPSTONE_DIET
724 { 0 }, { 0 }, { 0 }, 0, 0
725 #endif
726 },
727 {
728 SP_FALIGNADATA, SPARC_INS_FALIGNDATA,
729 #ifndef CAPSTONE_DIET
730 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
731 #endif
732 },
733 {
734 SP_FAND, SPARC_INS_FAND,
735 #ifndef CAPSTONE_DIET
736 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
737 #endif
738 },
739 {
740 SP_FANDNOT1, SPARC_INS_FANDNOT1,
741 #ifndef CAPSTONE_DIET
742 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
743 #endif
744 },
745 {
746 SP_FANDNOT1S, SPARC_INS_FANDNOT1S,
747 #ifndef CAPSTONE_DIET
748 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
749 #endif
750 },
751 {
752 SP_FANDNOT2, SPARC_INS_FANDNOT2,
753 #ifndef CAPSTONE_DIET
754 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
755 #endif
756 },
757 {
758 SP_FANDNOT2S, SPARC_INS_FANDNOT2S,
759 #ifndef CAPSTONE_DIET
760 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
761 #endif
762 },
763 {
764 SP_FANDS, SPARC_INS_FANDS,
765 #ifndef CAPSTONE_DIET
766 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
767 #endif
768 },
769 {
770 SP_FBCOND, SPARC_INS_FB,
771 #ifndef CAPSTONE_DIET
772 { SPARC_REG_FCC0, 0 }, { 0 }, { 0 }, 1, 0
773 #endif
774 },
775 {
776 SP_FBCONDA, SPARC_INS_FB,
777 #ifndef CAPSTONE_DIET
778 { SPARC_REG_FCC0, 0 }, { 0 }, { 0 }, 1, 0
779 #endif
780 },
781 {
782 SP_FCHKSM16, SPARC_INS_FCHKSM16,
783 #ifndef CAPSTONE_DIET
784 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
785 #endif
786 },
787 {
788 SP_FCMPD, SPARC_INS_FCMPD,
789 #ifndef CAPSTONE_DIET
790 { 0 }, { SPARC_REG_FCC0, 0 }, { 0 }, 0, 0
791 #endif
792 },
793 {
794 SP_FCMPEQ16, SPARC_INS_FCMPEQ16,
795 #ifndef CAPSTONE_DIET
796 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
797 #endif
798 },
799 {
800 SP_FCMPEQ32, SPARC_INS_FCMPEQ32,
801 #ifndef CAPSTONE_DIET
802 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
803 #endif
804 },
805 {
806 SP_FCMPGT16, SPARC_INS_FCMPGT16,
807 #ifndef CAPSTONE_DIET
808 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
809 #endif
810 },
811 {
812 SP_FCMPGT32, SPARC_INS_FCMPGT32,
813 #ifndef CAPSTONE_DIET
814 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
815 #endif
816 },
817 {
818 SP_FCMPLE16, SPARC_INS_FCMPLE16,
819 #ifndef CAPSTONE_DIET
820 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
821 #endif
822 },
823 {
824 SP_FCMPLE32, SPARC_INS_FCMPLE32,
825 #ifndef CAPSTONE_DIET
826 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
827 #endif
828 },
829 {
830 SP_FCMPNE16, SPARC_INS_FCMPNE16,
831 #ifndef CAPSTONE_DIET
832 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
833 #endif
834 },
835 {
836 SP_FCMPNE32, SPARC_INS_FCMPNE32,
837 #ifndef CAPSTONE_DIET
838 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
839 #endif
840 },
841 {
842 SP_FCMPQ, SPARC_INS_FCMPQ,
843 #ifndef CAPSTONE_DIET
844 { 0 }, { SPARC_REG_FCC0, 0 }, { SPARC_GRP_HARDQUAD, 0 }, 0, 0
845 #endif
846 },
847 {
848 SP_FCMPS, SPARC_INS_FCMPS,
849 #ifndef CAPSTONE_DIET
850 { 0 }, { SPARC_REG_FCC0, 0 }, { 0 }, 0, 0
851 #endif
852 },
853 {
854 SP_FDIVD, SPARC_INS_FDIVD,
855 #ifndef CAPSTONE_DIET
856 { 0 }, { 0 }, { 0 }, 0, 0
857 #endif
858 },
859 {
860 SP_FDIVQ, SPARC_INS_FDIVQ,
861 #ifndef CAPSTONE_DIET
862 { 0 }, { 0 }, { SPARC_GRP_HARDQUAD, 0 }, 0, 0
863 #endif
864 },
865 {
866 SP_FDIVS, SPARC_INS_FDIVS,
867 #ifndef CAPSTONE_DIET
868 { 0 }, { 0 }, { 0 }, 0, 0
869 #endif
870 },
871 {
872 SP_FDMULQ, SPARC_INS_FDMULQ,
873 #ifndef CAPSTONE_DIET
874 { 0 }, { 0 }, { SPARC_GRP_HARDQUAD, 0 }, 0, 0
875 #endif
876 },
877 {
878 SP_FDTOI, SPARC_INS_FDTOI,
879 #ifndef CAPSTONE_DIET
880 { 0 }, { 0 }, { 0 }, 0, 0
881 #endif
882 },
883 {
884 SP_FDTOQ, SPARC_INS_FDTOQ,
885 #ifndef CAPSTONE_DIET
886 { 0 }, { 0 }, { SPARC_GRP_HARDQUAD, 0 }, 0, 0
887 #endif
888 },
889 {
890 SP_FDTOS, SPARC_INS_FDTOS,
891 #ifndef CAPSTONE_DIET
892 { 0 }, { 0 }, { 0 }, 0, 0
893 #endif
894 },
895 {
896 SP_FDTOX, SPARC_INS_FDTOX,
897 #ifndef CAPSTONE_DIET
898 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
899 #endif
900 },
901 {
902 SP_FEXPAND, SPARC_INS_FEXPAND,
903 #ifndef CAPSTONE_DIET
904 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
905 #endif
906 },
907 {
908 SP_FHADDD, SPARC_INS_FHADDD,
909 #ifndef CAPSTONE_DIET
910 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
911 #endif
912 },
913 {
914 SP_FHADDS, SPARC_INS_FHADDS,
915 #ifndef CAPSTONE_DIET
916 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
917 #endif
918 },
919 {
920 SP_FHSUBD, SPARC_INS_FHSUBD,
921 #ifndef CAPSTONE_DIET
922 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
923 #endif
924 },
925 {
926 SP_FHSUBS, SPARC_INS_FHSUBS,
927 #ifndef CAPSTONE_DIET
928 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
929 #endif
930 },
931 {
932 SP_FITOD, SPARC_INS_FITOD,
933 #ifndef CAPSTONE_DIET
934 { 0 }, { 0 }, { 0 }, 0, 0
935 #endif
936 },
937 {
938 SP_FITOQ, SPARC_INS_FITOQ,
939 #ifndef CAPSTONE_DIET
940 { 0 }, { 0 }, { SPARC_GRP_HARDQUAD, 0 }, 0, 0
941 #endif
942 },
943 {
944 SP_FITOS, SPARC_INS_FITOS,
945 #ifndef CAPSTONE_DIET
946 { 0 }, { 0 }, { 0 }, 0, 0
947 #endif
948 },
949 {
950 SP_FLCMPD, SPARC_INS_FLCMPD,
951 #ifndef CAPSTONE_DIET
952 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
953 #endif
954 },
955 {
956 SP_FLCMPS, SPARC_INS_FLCMPS,
957 #ifndef CAPSTONE_DIET
958 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
959 #endif
960 },
961 {
962 SP_FLUSHW, SPARC_INS_FLUSHW,
963 #ifndef CAPSTONE_DIET
964 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
965 #endif
966 },
967 {
968 SP_FMEAN16, SPARC_INS_FMEAN16,
969 #ifndef CAPSTONE_DIET
970 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
971 #endif
972 },
973 {
974 SP_FMOVD, SPARC_INS_FMOVD,
975 #ifndef CAPSTONE_DIET
976 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
977 #endif
978 },
979 {
980 SP_FMOVD_FCC, SPARC_INS_FMOVD,
981 #ifndef CAPSTONE_DIET
982 { SPARC_REG_FCC0, 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
983 #endif
984 },
985 {
986 SP_FMOVD_ICC, SPARC_INS_FMOVD,
987 #ifndef CAPSTONE_DIET
988 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
989 #endif
990 },
991 {
992 SP_FMOVD_XCC, SPARC_INS_FMOVD,
993 #ifndef CAPSTONE_DIET
994 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
995 #endif
996 },
997 {
998 SP_FMOVQ, SPARC_INS_FMOVQ,
999 #ifndef CAPSTONE_DIET
1000 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1001 #endif
1002 },
1003 {
1004 SP_FMOVQ_FCC, SPARC_INS_FMOVQ,
1005 #ifndef CAPSTONE_DIET
1006 { SPARC_REG_FCC0, 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1007 #endif
1008 },
1009 {
1010 SP_FMOVQ_ICC, SPARC_INS_FMOVQ,
1011 #ifndef CAPSTONE_DIET
1012 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1013 #endif
1014 },
1015 {
1016 SP_FMOVQ_XCC, SPARC_INS_FMOVQ,
1017 #ifndef CAPSTONE_DIET
1018 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1019 #endif
1020 },
1021 {
1022 SP_FMOVRGEZD, SPARC_INS_FMOVRDGEZ,
1023 #ifndef CAPSTONE_DIET
1024 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1025 #endif
1026 },
1027 {
1028 SP_FMOVRGEZQ, SPARC_INS_FMOVRQGEZ,
1029 #ifndef CAPSTONE_DIET
1030 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1031 #endif
1032 },
1033 {
1034 SP_FMOVRGEZS, SPARC_INS_FMOVRSGEZ,
1035 #ifndef CAPSTONE_DIET
1036 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1037 #endif
1038 },
1039 {
1040 SP_FMOVRGZD, SPARC_INS_FMOVRDGZ,
1041 #ifndef CAPSTONE_DIET
1042 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1043 #endif
1044 },
1045 {
1046 SP_FMOVRGZQ, SPARC_INS_FMOVRQGZ,
1047 #ifndef CAPSTONE_DIET
1048 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1049 #endif
1050 },
1051 {
1052 SP_FMOVRGZS, SPARC_INS_FMOVRSGZ,
1053 #ifndef CAPSTONE_DIET
1054 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1055 #endif
1056 },
1057 {
1058 SP_FMOVRLEZD, SPARC_INS_FMOVRDLEZ,
1059 #ifndef CAPSTONE_DIET
1060 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1061 #endif
1062 },
1063 {
1064 SP_FMOVRLEZQ, SPARC_INS_FMOVRQLEZ,
1065 #ifndef CAPSTONE_DIET
1066 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1067 #endif
1068 },
1069 {
1070 SP_FMOVRLEZS, SPARC_INS_FMOVRSLEZ,
1071 #ifndef CAPSTONE_DIET
1072 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1073 #endif
1074 },
1075 {
1076 SP_FMOVRLZD, SPARC_INS_FMOVRDLZ,
1077 #ifndef CAPSTONE_DIET
1078 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1079 #endif
1080 },
1081 {
1082 SP_FMOVRLZQ, SPARC_INS_FMOVRQLZ,
1083 #ifndef CAPSTONE_DIET
1084 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1085 #endif
1086 },
1087 {
1088 SP_FMOVRLZS, SPARC_INS_FMOVRSLZ,
1089 #ifndef CAPSTONE_DIET
1090 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1091 #endif
1092 },
1093 {
1094 SP_FMOVRNZD, SPARC_INS_FMOVRDNZ,
1095 #ifndef CAPSTONE_DIET
1096 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1097 #endif
1098 },
1099 {
1100 SP_FMOVRNZQ, SPARC_INS_FMOVRQNZ,
1101 #ifndef CAPSTONE_DIET
1102 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1103 #endif
1104 },
1105 {
1106 SP_FMOVRNZS, SPARC_INS_FMOVRSNZ,
1107 #ifndef CAPSTONE_DIET
1108 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1109 #endif
1110 },
1111 {
1112 SP_FMOVRZD, SPARC_INS_FMOVRDZ,
1113 #ifndef CAPSTONE_DIET
1114 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1115 #endif
1116 },
1117 {
1118 SP_FMOVRZQ, SPARC_INS_FMOVRQZ,
1119 #ifndef CAPSTONE_DIET
1120 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1121 #endif
1122 },
1123 {
1124 SP_FMOVRZS, SPARC_INS_FMOVRSZ,
1125 #ifndef CAPSTONE_DIET
1126 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1127 #endif
1128 },
1129 {
1130 SP_FMOVS, SPARC_INS_FMOVS,
1131 #ifndef CAPSTONE_DIET
1132 { 0 }, { 0 }, { 0 }, 0, 0
1133 #endif
1134 },
1135 {
1136 SP_FMOVS_FCC, SPARC_INS_FMOVS,
1137 #ifndef CAPSTONE_DIET
1138 { SPARC_REG_FCC0, 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1139 #endif
1140 },
1141 {
1142 SP_FMOVS_ICC, SPARC_INS_FMOVS,
1143 #ifndef CAPSTONE_DIET
1144 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1145 #endif
1146 },
1147 {
1148 SP_FMOVS_XCC, SPARC_INS_FMOVS,
1149 #ifndef CAPSTONE_DIET
1150 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1151 #endif
1152 },
1153 {
1154 SP_FMUL8SUX16, SPARC_INS_FMUL8SUX16,
1155 #ifndef CAPSTONE_DIET
1156 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1157 #endif
1158 },
1159 {
1160 SP_FMUL8ULX16, SPARC_INS_FMUL8ULX16,
1161 #ifndef CAPSTONE_DIET
1162 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1163 #endif
1164 },
1165 {
1166 SP_FMUL8X16, SPARC_INS_FMUL8X16,
1167 #ifndef CAPSTONE_DIET
1168 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1169 #endif
1170 },
1171 {
1172 SP_FMUL8X16AL, SPARC_INS_FMUL8X16AL,
1173 #ifndef CAPSTONE_DIET
1174 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1175 #endif
1176 },
1177 {
1178 SP_FMUL8X16AU, SPARC_INS_FMUL8X16AU,
1179 #ifndef CAPSTONE_DIET
1180 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1181 #endif
1182 },
1183 {
1184 SP_FMULD, SPARC_INS_FMULD,
1185 #ifndef CAPSTONE_DIET
1186 { 0 }, { 0 }, { 0 }, 0, 0
1187 #endif
1188 },
1189 {
1190 SP_FMULD8SUX16, SPARC_INS_FMULD8SUX16,
1191 #ifndef CAPSTONE_DIET
1192 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1193 #endif
1194 },
1195 {
1196 SP_FMULD8ULX16, SPARC_INS_FMULD8ULX16,
1197 #ifndef CAPSTONE_DIET
1198 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1199 #endif
1200 },
1201 {
1202 SP_FMULQ, SPARC_INS_FMULQ,
1203 #ifndef CAPSTONE_DIET
1204 { 0 }, { 0 }, { SPARC_GRP_HARDQUAD, 0 }, 0, 0
1205 #endif
1206 },
1207 {
1208 SP_FMULS, SPARC_INS_FMULS,
1209 #ifndef CAPSTONE_DIET
1210 { 0 }, { 0 }, { 0 }, 0, 0
1211 #endif
1212 },
1213 {
1214 SP_FNADDD, SPARC_INS_FNADDD,
1215 #ifndef CAPSTONE_DIET
1216 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1217 #endif
1218 },
1219 {
1220 SP_FNADDS, SPARC_INS_FNADDS,
1221 #ifndef CAPSTONE_DIET
1222 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1223 #endif
1224 },
1225 {
1226 SP_FNAND, SPARC_INS_FNAND,
1227 #ifndef CAPSTONE_DIET
1228 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1229 #endif
1230 },
1231 {
1232 SP_FNANDS, SPARC_INS_FNANDS,
1233 #ifndef CAPSTONE_DIET
1234 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1235 #endif
1236 },
1237 {
1238 SP_FNEGD, SPARC_INS_FNEGD,
1239 #ifndef CAPSTONE_DIET
1240 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1241 #endif
1242 },
1243 {
1244 SP_FNEGQ, SPARC_INS_FNEGQ,
1245 #ifndef CAPSTONE_DIET
1246 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1247 #endif
1248 },
1249 {
1250 SP_FNEGS, SPARC_INS_FNEGS,
1251 #ifndef CAPSTONE_DIET
1252 { 0 }, { 0 }, { 0 }, 0, 0
1253 #endif
1254 },
1255 {
1256 SP_FNHADDD, SPARC_INS_FNHADDD,
1257 #ifndef CAPSTONE_DIET
1258 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1259 #endif
1260 },
1261 {
1262 SP_FNHADDS, SPARC_INS_FNHADDS,
1263 #ifndef CAPSTONE_DIET
1264 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1265 #endif
1266 },
1267 {
1268 SP_FNMULD, SPARC_INS_FNHADDD,
1269 #ifndef CAPSTONE_DIET
1270 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1271 #endif
1272 },
1273 {
1274 SP_FNMULS, SPARC_INS_FNHADDS,
1275 #ifndef CAPSTONE_DIET
1276 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1277 #endif
1278 },
1279 {
1280 SP_FNOR, SPARC_INS_FNOR,
1281 #ifndef CAPSTONE_DIET
1282 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1283 #endif
1284 },
1285 {
1286 SP_FNORS, SPARC_INS_FNORS,
1287 #ifndef CAPSTONE_DIET
1288 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1289 #endif
1290 },
1291 {
1292 SP_FNOT1, SPARC_INS_FNOT1,
1293 #ifndef CAPSTONE_DIET
1294 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1295 #endif
1296 },
1297 {
1298 SP_FNOT1S, SPARC_INS_FNOT1S,
1299 #ifndef CAPSTONE_DIET
1300 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1301 #endif
1302 },
1303 {
1304 SP_FNOT2, SPARC_INS_FNOT2,
1305 #ifndef CAPSTONE_DIET
1306 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1307 #endif
1308 },
1309 {
1310 SP_FNOT2S, SPARC_INS_FNOT2S,
1311 #ifndef CAPSTONE_DIET
1312 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1313 #endif
1314 },
1315 {
1316 SP_FNSMULD, SPARC_INS_FNHADDS,
1317 #ifndef CAPSTONE_DIET
1318 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1319 #endif
1320 },
1321 {
1322 SP_FONE, SPARC_INS_FONE,
1323 #ifndef CAPSTONE_DIET
1324 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1325 #endif
1326 },
1327 {
1328 SP_FONES, SPARC_INS_FONES,
1329 #ifndef CAPSTONE_DIET
1330 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1331 #endif
1332 },
1333 {
1334 SP_FOR, SPARC_INS_FOR,
1335 #ifndef CAPSTONE_DIET
1336 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1337 #endif
1338 },
1339 {
1340 SP_FORNOT1, SPARC_INS_FORNOT1,
1341 #ifndef CAPSTONE_DIET
1342 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1343 #endif
1344 },
1345 {
1346 SP_FORNOT1S, SPARC_INS_FORNOT1S,
1347 #ifndef CAPSTONE_DIET
1348 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1349 #endif
1350 },
1351 {
1352 SP_FORNOT2, SPARC_INS_FORNOT2,
1353 #ifndef CAPSTONE_DIET
1354 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1355 #endif
1356 },
1357 {
1358 SP_FORNOT2S, SPARC_INS_FORNOT2S,
1359 #ifndef CAPSTONE_DIET
1360 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1361 #endif
1362 },
1363 {
1364 SP_FORS, SPARC_INS_FORS,
1365 #ifndef CAPSTONE_DIET
1366 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1367 #endif
1368 },
1369 {
1370 SP_FPACK16, SPARC_INS_FPACK16,
1371 #ifndef CAPSTONE_DIET
1372 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1373 #endif
1374 },
1375 {
1376 SP_FPACK32, SPARC_INS_FPACK32,
1377 #ifndef CAPSTONE_DIET
1378 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1379 #endif
1380 },
1381 {
1382 SP_FPACKFIX, SPARC_INS_FPACKFIX,
1383 #ifndef CAPSTONE_DIET
1384 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1385 #endif
1386 },
1387 {
1388 SP_FPADD16, SPARC_INS_FPADD16,
1389 #ifndef CAPSTONE_DIET
1390 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1391 #endif
1392 },
1393 {
1394 SP_FPADD16S, SPARC_INS_FPADD16S,
1395 #ifndef CAPSTONE_DIET
1396 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1397 #endif
1398 },
1399 {
1400 SP_FPADD32, SPARC_INS_FPADD32,
1401 #ifndef CAPSTONE_DIET
1402 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1403 #endif
1404 },
1405 {
1406 SP_FPADD32S, SPARC_INS_FPADD32S,
1407 #ifndef CAPSTONE_DIET
1408 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1409 #endif
1410 },
1411 {
1412 SP_FPADD64, SPARC_INS_FPADD64,
1413 #ifndef CAPSTONE_DIET
1414 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1415 #endif
1416 },
1417 {
1418 SP_FPMERGE, SPARC_INS_FPMERGE,
1419 #ifndef CAPSTONE_DIET
1420 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1421 #endif
1422 },
1423 {
1424 SP_FPSUB16, SPARC_INS_FPSUB16,
1425 #ifndef CAPSTONE_DIET
1426 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1427 #endif
1428 },
1429 {
1430 SP_FPSUB16S, SPARC_INS_FPSUB16S,
1431 #ifndef CAPSTONE_DIET
1432 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1433 #endif
1434 },
1435 {
1436 SP_FPSUB32, SPARC_INS_FPSUB32,
1437 #ifndef CAPSTONE_DIET
1438 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1439 #endif
1440 },
1441 {
1442 SP_FPSUB32S, SPARC_INS_FPSUB32S,
1443 #ifndef CAPSTONE_DIET
1444 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1445 #endif
1446 },
1447 {
1448 SP_FQTOD, SPARC_INS_FQTOD,
1449 #ifndef CAPSTONE_DIET
1450 { 0 }, { 0 }, { SPARC_GRP_HARDQUAD, 0 }, 0, 0
1451 #endif
1452 },
1453 {
1454 SP_FQTOI, SPARC_INS_FQTOI,
1455 #ifndef CAPSTONE_DIET
1456 { 0 }, { 0 }, { SPARC_GRP_HARDQUAD, 0 }, 0, 0
1457 #endif
1458 },
1459 {
1460 SP_FQTOS, SPARC_INS_FQTOS,
1461 #ifndef CAPSTONE_DIET
1462 { 0 }, { 0 }, { SPARC_GRP_HARDQUAD, 0 }, 0, 0
1463 #endif
1464 },
1465 {
1466 SP_FQTOX, SPARC_INS_FQTOX,
1467 #ifndef CAPSTONE_DIET
1468 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1469 #endif
1470 },
1471 {
1472 SP_FSLAS16, SPARC_INS_FSLAS16,
1473 #ifndef CAPSTONE_DIET
1474 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1475 #endif
1476 },
1477 {
1478 SP_FSLAS32, SPARC_INS_FSLAS32,
1479 #ifndef CAPSTONE_DIET
1480 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1481 #endif
1482 },
1483 {
1484 SP_FSLL16, SPARC_INS_FSLL16,
1485 #ifndef CAPSTONE_DIET
1486 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1487 #endif
1488 },
1489 {
1490 SP_FSLL32, SPARC_INS_FSLL32,
1491 #ifndef CAPSTONE_DIET
1492 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1493 #endif
1494 },
1495 {
1496 SP_FSMULD, SPARC_INS_FSMULD,
1497 #ifndef CAPSTONE_DIET
1498 { 0 }, { 0 }, { 0 }, 0, 0
1499 #endif
1500 },
1501 {
1502 SP_FSQRTD, SPARC_INS_FSQRTD,
1503 #ifndef CAPSTONE_DIET
1504 { 0 }, { 0 }, { 0 }, 0, 0
1505 #endif
1506 },
1507 {
1508 SP_FSQRTQ, SPARC_INS_FSQRTQ,
1509 #ifndef CAPSTONE_DIET
1510 { 0 }, { 0 }, { SPARC_GRP_HARDQUAD, 0 }, 0, 0
1511 #endif
1512 },
1513 {
1514 SP_FSQRTS, SPARC_INS_FSQRTS,
1515 #ifndef CAPSTONE_DIET
1516 { 0 }, { 0 }, { 0 }, 0, 0
1517 #endif
1518 },
1519 {
1520 SP_FSRA16, SPARC_INS_FSRA16,
1521 #ifndef CAPSTONE_DIET
1522 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1523 #endif
1524 },
1525 {
1526 SP_FSRA32, SPARC_INS_FSRA32,
1527 #ifndef CAPSTONE_DIET
1528 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1529 #endif
1530 },
1531 {
1532 SP_FSRC1, SPARC_INS_FSRC1,
1533 #ifndef CAPSTONE_DIET
1534 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1535 #endif
1536 },
1537 {
1538 SP_FSRC1S, SPARC_INS_FSRC1S,
1539 #ifndef CAPSTONE_DIET
1540 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1541 #endif
1542 },
1543 {
1544 SP_FSRC2, SPARC_INS_FSRC2,
1545 #ifndef CAPSTONE_DIET
1546 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1547 #endif
1548 },
1549 {
1550 SP_FSRC2S, SPARC_INS_FSRC2S,
1551 #ifndef CAPSTONE_DIET
1552 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1553 #endif
1554 },
1555 {
1556 SP_FSRL16, SPARC_INS_FSRL16,
1557 #ifndef CAPSTONE_DIET
1558 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1559 #endif
1560 },
1561 {
1562 SP_FSRL32, SPARC_INS_FSRL32,
1563 #ifndef CAPSTONE_DIET
1564 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1565 #endif
1566 },
1567 {
1568 SP_FSTOD, SPARC_INS_FSTOD,
1569 #ifndef CAPSTONE_DIET
1570 { 0 }, { 0 }, { 0 }, 0, 0
1571 #endif
1572 },
1573 {
1574 SP_FSTOI, SPARC_INS_FSTOI,
1575 #ifndef CAPSTONE_DIET
1576 { 0 }, { 0 }, { 0 }, 0, 0
1577 #endif
1578 },
1579 {
1580 SP_FSTOQ, SPARC_INS_FSTOQ,
1581 #ifndef CAPSTONE_DIET
1582 { 0 }, { 0 }, { SPARC_GRP_HARDQUAD, 0 }, 0, 0
1583 #endif
1584 },
1585 {
1586 SP_FSTOX, SPARC_INS_FSTOX,
1587 #ifndef CAPSTONE_DIET
1588 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1589 #endif
1590 },
1591 {
1592 SP_FSUBD, SPARC_INS_FSUBD,
1593 #ifndef CAPSTONE_DIET
1594 { 0 }, { 0 }, { 0 }, 0, 0
1595 #endif
1596 },
1597 {
1598 SP_FSUBQ, SPARC_INS_FSUBQ,
1599 #ifndef CAPSTONE_DIET
1600 { 0 }, { 0 }, { SPARC_GRP_HARDQUAD, 0 }, 0, 0
1601 #endif
1602 },
1603 {
1604 SP_FSUBS, SPARC_INS_FSUBS,
1605 #ifndef CAPSTONE_DIET
1606 { 0 }, { 0 }, { 0 }, 0, 0
1607 #endif
1608 },
1609 {
1610 SP_FXNOR, SPARC_INS_FXNOR,
1611 #ifndef CAPSTONE_DIET
1612 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1613 #endif
1614 },
1615 {
1616 SP_FXNORS, SPARC_INS_FXNORS,
1617 #ifndef CAPSTONE_DIET
1618 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1619 #endif
1620 },
1621 {
1622 SP_FXOR, SPARC_INS_FXOR,
1623 #ifndef CAPSTONE_DIET
1624 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1625 #endif
1626 },
1627 {
1628 SP_FXORS, SPARC_INS_FXORS,
1629 #ifndef CAPSTONE_DIET
1630 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1631 #endif
1632 },
1633 {
1634 SP_FXTOD, SPARC_INS_FXTOD,
1635 #ifndef CAPSTONE_DIET
1636 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1637 #endif
1638 },
1639 {
1640 SP_FXTOQ, SPARC_INS_FXTOQ,
1641 #ifndef CAPSTONE_DIET
1642 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1643 #endif
1644 },
1645 {
1646 SP_FXTOS, SPARC_INS_FXTOS,
1647 #ifndef CAPSTONE_DIET
1648 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1649 #endif
1650 },
1651 {
1652 SP_FZERO, SPARC_INS_FZERO,
1653 #ifndef CAPSTONE_DIET
1654 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1655 #endif
1656 },
1657 {
1658 SP_FZEROS, SPARC_INS_FZEROS,
1659 #ifndef CAPSTONE_DIET
1660 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
1661 #endif
1662 },
1663 {
1664 SP_JMPLri, SPARC_INS_JMPL,
1665 #ifndef CAPSTONE_DIET
1666 { 0 }, { 0 }, { 0 }, 0, 0
1667 #endif
1668 },
1669 {
1670 SP_JMPLrr, SPARC_INS_JMPL,
1671 #ifndef CAPSTONE_DIET
1672 { 0 }, { 0 }, { 0 }, 0, 0
1673 #endif
1674 },
1675 {
1676 SP_LDDFri, SPARC_INS_LDD,
1677 #ifndef CAPSTONE_DIET
1678 { 0 }, { 0 }, { 0 }, 0, 0
1679 #endif
1680 },
1681 {
1682 SP_LDDFrr, SPARC_INS_LDD,
1683 #ifndef CAPSTONE_DIET
1684 { 0 }, { 0 }, { 0 }, 0, 0
1685 #endif
1686 },
1687 {
1688 SP_LDFri, SPARC_INS_LD,
1689 #ifndef CAPSTONE_DIET
1690 { 0 }, { 0 }, { 0 }, 0, 0
1691 #endif
1692 },
1693 {
1694 SP_LDFrr, SPARC_INS_LD,
1695 #ifndef CAPSTONE_DIET
1696 { 0 }, { 0 }, { 0 }, 0, 0
1697 #endif
1698 },
1699 {
1700 SP_LDQFri, SPARC_INS_LDQ,
1701 #ifndef CAPSTONE_DIET
1702 { 0 }, { 0 }, { SPARC_GRP_V9, SPARC_GRP_HARDQUAD, 0 }, 0, 0
1703 #endif
1704 },
1705 {
1706 SP_LDQFrr, SPARC_INS_LDQ,
1707 #ifndef CAPSTONE_DIET
1708 { 0 }, { 0 }, { SPARC_GRP_V9, SPARC_GRP_HARDQUAD, 0 }, 0, 0
1709 #endif
1710 },
1711 {
1712 SP_LDSBri, SPARC_INS_LDSB,
1713 #ifndef CAPSTONE_DIET
1714 { 0 }, { 0 }, { 0 }, 0, 0
1715 #endif
1716 },
1717 {
1718 SP_LDSBrr, SPARC_INS_LDSB,
1719 #ifndef CAPSTONE_DIET
1720 { 0 }, { 0 }, { 0 }, 0, 0
1721 #endif
1722 },
1723 {
1724 SP_LDSHri, SPARC_INS_LDSH,
1725 #ifndef CAPSTONE_DIET
1726 { 0 }, { 0 }, { 0 }, 0, 0
1727 #endif
1728 },
1729 {
1730 SP_LDSHrr, SPARC_INS_LDSH,
1731 #ifndef CAPSTONE_DIET
1732 { 0 }, { 0 }, { 0 }, 0, 0
1733 #endif
1734 },
1735 {
1736 SP_LDSWri, SPARC_INS_LDSW,
1737 #ifndef CAPSTONE_DIET
1738 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1739 #endif
1740 },
1741 {
1742 SP_LDSWrr, SPARC_INS_LDSW,
1743 #ifndef CAPSTONE_DIET
1744 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1745 #endif
1746 },
1747 {
1748 SP_LDUBri, SPARC_INS_LDUB,
1749 #ifndef CAPSTONE_DIET
1750 { 0 }, { 0 }, { 0 }, 0, 0
1751 #endif
1752 },
1753 {
1754 SP_LDUBrr, SPARC_INS_LDUB,
1755 #ifndef CAPSTONE_DIET
1756 { 0 }, { 0 }, { 0 }, 0, 0
1757 #endif
1758 },
1759 {
1760 SP_LDUHri, SPARC_INS_LDUH,
1761 #ifndef CAPSTONE_DIET
1762 { 0 }, { 0 }, { 0 }, 0, 0
1763 #endif
1764 },
1765 {
1766 SP_LDUHrr, SPARC_INS_LDUH,
1767 #ifndef CAPSTONE_DIET
1768 { 0 }, { 0 }, { 0 }, 0, 0
1769 #endif
1770 },
1771 {
1772 SP_LDXri, SPARC_INS_LDX,
1773 #ifndef CAPSTONE_DIET
1774 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1775 #endif
1776 },
1777 {
1778 SP_LDXrr, SPARC_INS_LDX,
1779 #ifndef CAPSTONE_DIET
1780 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1781 #endif
1782 },
1783 {
1784 SP_LDri, SPARC_INS_LD,
1785 #ifndef CAPSTONE_DIET
1786 { 0 }, { 0 }, { 0 }, 0, 0
1787 #endif
1788 },
1789 {
1790 SP_LDrr, SPARC_INS_LD,
1791 #ifndef CAPSTONE_DIET
1792 { 0 }, { 0 }, { 0 }, 0, 0
1793 #endif
1794 },
1795 {
1796 SP_LEAX_ADDri, SPARC_INS_ADD,
1797 #ifndef CAPSTONE_DIET
1798 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1799 #endif
1800 },
1801 {
1802 SP_LEA_ADDri, SPARC_INS_ADD,
1803 #ifndef CAPSTONE_DIET
1804 { 0 }, { 0 }, { SPARC_GRP_32BIT, 0 }, 0, 0
1805 #endif
1806 },
1807 {
1808 SP_LZCNT, SPARC_INS_LZCNT,
1809 #ifndef CAPSTONE_DIET
1810 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1811 #endif
1812 },
1813 {
1814 SP_MEMBARi, SPARC_INS_MEMBAR,
1815 #ifndef CAPSTONE_DIET
1816 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1817 #endif
1818 },
1819 {
1820 SP_MOVDTOX, SPARC_INS_MOVDTOX,
1821 #ifndef CAPSTONE_DIET
1822 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1823 #endif
1824 },
1825 {
1826 SP_MOVFCCri, SPARC_INS_MOV,
1827 #ifndef CAPSTONE_DIET
1828 { SPARC_REG_FCC0, 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1829 #endif
1830 },
1831 {
1832 SP_MOVFCCrr, SPARC_INS_MOV,
1833 #ifndef CAPSTONE_DIET
1834 { SPARC_REG_FCC0, 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1835 #endif
1836 },
1837 {
1838 SP_MOVICCri, SPARC_INS_MOV,
1839 #ifndef CAPSTONE_DIET
1840 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1841 #endif
1842 },
1843 {
1844 SP_MOVICCrr, SPARC_INS_MOV,
1845 #ifndef CAPSTONE_DIET
1846 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
1847 #endif
1848 },
1849 {
1850 SP_MOVRGEZri, SPARC_INS_MOVRGEZ,
1851 #ifndef CAPSTONE_DIET
1852 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1853 #endif
1854 },
1855 {
1856 SP_MOVRGEZrr, SPARC_INS_MOVRGEZ,
1857 #ifndef CAPSTONE_DIET
1858 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1859 #endif
1860 },
1861 {
1862 SP_MOVRGZri, SPARC_INS_MOVRGZ,
1863 #ifndef CAPSTONE_DIET
1864 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1865 #endif
1866 },
1867 {
1868 SP_MOVRGZrr, SPARC_INS_MOVRGZ,
1869 #ifndef CAPSTONE_DIET
1870 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1871 #endif
1872 },
1873 {
1874 SP_MOVRLEZri, SPARC_INS_MOVRLEZ,
1875 #ifndef CAPSTONE_DIET
1876 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1877 #endif
1878 },
1879 {
1880 SP_MOVRLEZrr, SPARC_INS_MOVRLEZ,
1881 #ifndef CAPSTONE_DIET
1882 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1883 #endif
1884 },
1885 {
1886 SP_MOVRLZri, SPARC_INS_MOVRLZ,
1887 #ifndef CAPSTONE_DIET
1888 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1889 #endif
1890 },
1891 {
1892 SP_MOVRLZrr, SPARC_INS_MOVRLZ,
1893 #ifndef CAPSTONE_DIET
1894 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1895 #endif
1896 },
1897 {
1898 SP_MOVRNZri, SPARC_INS_MOVRNZ,
1899 #ifndef CAPSTONE_DIET
1900 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1901 #endif
1902 },
1903 {
1904 SP_MOVRNZrr, SPARC_INS_MOVRNZ,
1905 #ifndef CAPSTONE_DIET
1906 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1907 #endif
1908 },
1909 {
1910 SP_MOVRRZri, SPARC_INS_MOVRZ,
1911 #ifndef CAPSTONE_DIET
1912 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1913 #endif
1914 },
1915 {
1916 SP_MOVRRZrr, SPARC_INS_MOVRZ,
1917 #ifndef CAPSTONE_DIET
1918 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1919 #endif
1920 },
1921 {
1922 SP_MOVSTOSW, SPARC_INS_MOVSTOSW,
1923 #ifndef CAPSTONE_DIET
1924 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1925 #endif
1926 },
1927 {
1928 SP_MOVSTOUW, SPARC_INS_MOVSTOUW,
1929 #ifndef CAPSTONE_DIET
1930 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1931 #endif
1932 },
1933 {
1934 SP_MOVWTOS, SPARC_INS_MOVDTOX,
1935 #ifndef CAPSTONE_DIET
1936 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1937 #endif
1938 },
1939 {
1940 SP_MOVXCCri, SPARC_INS_MOV,
1941 #ifndef CAPSTONE_DIET
1942 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1943 #endif
1944 },
1945 {
1946 SP_MOVXCCrr, SPARC_INS_MOV,
1947 #ifndef CAPSTONE_DIET
1948 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1949 #endif
1950 },
1951 {
1952 SP_MOVXTOD, SPARC_INS_MOVDTOX,
1953 #ifndef CAPSTONE_DIET
1954 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
1955 #endif
1956 },
1957 {
1958 SP_MULXri, SPARC_INS_MULX,
1959 #ifndef CAPSTONE_DIET
1960 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1961 #endif
1962 },
1963 {
1964 SP_MULXrr, SPARC_INS_MULX,
1965 #ifndef CAPSTONE_DIET
1966 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
1967 #endif
1968 },
1969 {
1970 SP_NOP, SPARC_INS_NOP,
1971 #ifndef CAPSTONE_DIET
1972 { 0 }, { 0 }, { 0 }, 0, 0
1973 #endif
1974 },
1975 {
1976 SP_ORCCri, SPARC_INS_ORCC,
1977 #ifndef CAPSTONE_DIET
1978 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
1979 #endif
1980 },
1981 {
1982 SP_ORCCrr, SPARC_INS_ORCC,
1983 #ifndef CAPSTONE_DIET
1984 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
1985 #endif
1986 },
1987 {
1988 SP_ORNCCri, SPARC_INS_ORNCC,
1989 #ifndef CAPSTONE_DIET
1990 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
1991 #endif
1992 },
1993 {
1994 SP_ORNCCrr, SPARC_INS_ORNCC,
1995 #ifndef CAPSTONE_DIET
1996 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
1997 #endif
1998 },
1999 {
2000 SP_ORNri, SPARC_INS_ORN,
2001 #ifndef CAPSTONE_DIET
2002 { 0 }, { 0 }, { 0 }, 0, 0
2003 #endif
2004 },
2005 {
2006 SP_ORNrr, SPARC_INS_ORN,
2007 #ifndef CAPSTONE_DIET
2008 { 0 }, { 0 }, { 0 }, 0, 0
2009 #endif
2010 },
2011 {
2012 SP_ORXNrr, SPARC_INS_ORN,
2013 #ifndef CAPSTONE_DIET
2014 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2015 #endif
2016 },
2017 {
2018 SP_ORXri, SPARC_INS_OR,
2019 #ifndef CAPSTONE_DIET
2020 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2021 #endif
2022 },
2023 {
2024 SP_ORXrr, SPARC_INS_OR,
2025 #ifndef CAPSTONE_DIET
2026 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2027 #endif
2028 },
2029 {
2030 SP_ORri, SPARC_INS_OR,
2031 #ifndef CAPSTONE_DIET
2032 { 0 }, { 0 }, { 0 }, 0, 0
2033 #endif
2034 },
2035 {
2036 SP_ORrr, SPARC_INS_OR,
2037 #ifndef CAPSTONE_DIET
2038 { 0 }, { 0 }, { 0 }, 0, 0
2039 #endif
2040 },
2041 {
2042 SP_PDIST, SPARC_INS_PDIST,
2043 #ifndef CAPSTONE_DIET
2044 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
2045 #endif
2046 },
2047 {
2048 SP_PDISTN, SPARC_INS_PDISTN,
2049 #ifndef CAPSTONE_DIET
2050 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
2051 #endif
2052 },
2053 {
2054 SP_POPCrr, SPARC_INS_POPC,
2055 #ifndef CAPSTONE_DIET
2056 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
2057 #endif
2058 },
2059 {
2060 SP_RDY, SPARC_INS_RD,
2061 #ifndef CAPSTONE_DIET
2062 { SPARC_REG_Y, 0 }, { 0 }, { 0 }, 0, 0
2063 #endif
2064 },
2065 {
2066 SP_RESTOREri, SPARC_INS_RESTORE,
2067 #ifndef CAPSTONE_DIET
2068 { 0 }, { 0 }, { 0 }, 0, 0
2069 #endif
2070 },
2071 {
2072 SP_RESTORErr, SPARC_INS_RESTORE,
2073 #ifndef CAPSTONE_DIET
2074 { 0 }, { 0 }, { 0 }, 0, 0
2075 #endif
2076 },
2077 {
2078 SP_RET, SPARC_INS_JMP,
2079 #ifndef CAPSTONE_DIET
2080 { 0 }, { 0 }, { 0 }, 0, 0
2081 #endif
2082 },
2083 {
2084 SP_RETL, SPARC_INS_JMP,
2085 #ifndef CAPSTONE_DIET
2086 { 0 }, { 0 }, { 0 }, 0, 0
2087 #endif
2088 },
2089 {
2090 SP_RETTri, SPARC_INS_RETT,
2091 #ifndef CAPSTONE_DIET
2092 { 0 }, { 0 }, { 0 }, 0, 0
2093 #endif
2094 },
2095 {
2096 SP_RETTrr, SPARC_INS_RETT,
2097 #ifndef CAPSTONE_DIET
2098 { 0 }, { 0 }, { 0 }, 0, 0
2099 #endif
2100 },
2101 {
2102 SP_SAVEri, SPARC_INS_SAVE,
2103 #ifndef CAPSTONE_DIET
2104 { 0 }, { 0 }, { 0 }, 0, 0
2105 #endif
2106 },
2107 {
2108 SP_SAVErr, SPARC_INS_SAVE,
2109 #ifndef CAPSTONE_DIET
2110 { 0 }, { 0 }, { 0 }, 0, 0
2111 #endif
2112 },
2113 {
2114 SP_SDIVCCri, SPARC_INS_SDIVCC,
2115 #ifndef CAPSTONE_DIET
2116 { 0 }, { SPARC_REG_Y, SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2117 #endif
2118 },
2119 {
2120 SP_SDIVCCrr, SPARC_INS_SDIVCC,
2121 #ifndef CAPSTONE_DIET
2122 { 0 }, { SPARC_REG_Y, SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2123 #endif
2124 },
2125 {
2126 SP_SDIVXri, SPARC_INS_SDIVX,
2127 #ifndef CAPSTONE_DIET
2128 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2129 #endif
2130 },
2131 {
2132 SP_SDIVXrr, SPARC_INS_SDIVX,
2133 #ifndef CAPSTONE_DIET
2134 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2135 #endif
2136 },
2137 {
2138 SP_SDIVri, SPARC_INS_SDIV,
2139 #ifndef CAPSTONE_DIET
2140 { 0 }, { SPARC_REG_Y, 0 }, { 0 }, 0, 0
2141 #endif
2142 },
2143 {
2144 SP_SDIVrr, SPARC_INS_SDIV,
2145 #ifndef CAPSTONE_DIET
2146 { 0 }, { SPARC_REG_Y, 0 }, { 0 }, 0, 0
2147 #endif
2148 },
2149 {
2150 SP_SETHIXi, SPARC_INS_SETHI,
2151 #ifndef CAPSTONE_DIET
2152 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2153 #endif
2154 },
2155 {
2156 SP_SETHIi, SPARC_INS_SETHI,
2157 #ifndef CAPSTONE_DIET
2158 { 0 }, { 0 }, { 0 }, 0, 0
2159 #endif
2160 },
2161 {
2162 SP_SHUTDOWN, SPARC_INS_SHUTDOWN,
2163 #ifndef CAPSTONE_DIET
2164 { 0 }, { 0 }, { SPARC_GRP_VIS, 0 }, 0, 0
2165 #endif
2166 },
2167 {
2168 SP_SIAM, SPARC_INS_SIAM,
2169 #ifndef CAPSTONE_DIET
2170 { 0 }, { 0 }, { SPARC_GRP_VIS2, 0 }, 0, 0
2171 #endif
2172 },
2173 {
2174 SP_SLLXri, SPARC_INS_SLLX,
2175 #ifndef CAPSTONE_DIET
2176 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2177 #endif
2178 },
2179 {
2180 SP_SLLXrr, SPARC_INS_SLLX,
2181 #ifndef CAPSTONE_DIET
2182 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2183 #endif
2184 },
2185 {
2186 SP_SLLri, SPARC_INS_SLL,
2187 #ifndef CAPSTONE_DIET
2188 { 0 }, { 0 }, { 0 }, 0, 0
2189 #endif
2190 },
2191 {
2192 SP_SLLrr, SPARC_INS_SLL,
2193 #ifndef CAPSTONE_DIET
2194 { 0 }, { 0 }, { 0 }, 0, 0
2195 #endif
2196 },
2197 {
2198 SP_SMULCCri, SPARC_INS_SMULCC,
2199 #ifndef CAPSTONE_DIET
2200 { 0 }, { SPARC_REG_Y, SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2201 #endif
2202 },
2203 {
2204 SP_SMULCCrr, SPARC_INS_SMULCC,
2205 #ifndef CAPSTONE_DIET
2206 { 0 }, { SPARC_REG_Y, SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2207 #endif
2208 },
2209 {
2210 SP_SMULri, SPARC_INS_SMUL,
2211 #ifndef CAPSTONE_DIET
2212 { 0 }, { SPARC_REG_Y, 0 }, { 0 }, 0, 0
2213 #endif
2214 },
2215 {
2216 SP_SMULrr, SPARC_INS_SMUL,
2217 #ifndef CAPSTONE_DIET
2218 { 0 }, { SPARC_REG_Y, 0 }, { 0 }, 0, 0
2219 #endif
2220 },
2221 {
2222 SP_SRAXri, SPARC_INS_SRAX,
2223 #ifndef CAPSTONE_DIET
2224 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2225 #endif
2226 },
2227 {
2228 SP_SRAXrr, SPARC_INS_SRAX,
2229 #ifndef CAPSTONE_DIET
2230 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2231 #endif
2232 },
2233 {
2234 SP_SRAri, SPARC_INS_SRA,
2235 #ifndef CAPSTONE_DIET
2236 { 0 }, { 0 }, { 0 }, 0, 0
2237 #endif
2238 },
2239 {
2240 SP_SRArr, SPARC_INS_SRA,
2241 #ifndef CAPSTONE_DIET
2242 { 0 }, { 0 }, { 0 }, 0, 0
2243 #endif
2244 },
2245 {
2246 SP_SRLXri, SPARC_INS_SRLX,
2247 #ifndef CAPSTONE_DIET
2248 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2249 #endif
2250 },
2251 {
2252 SP_SRLXrr, SPARC_INS_SRLX,
2253 #ifndef CAPSTONE_DIET
2254 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2255 #endif
2256 },
2257 {
2258 SP_SRLri, SPARC_INS_SRL,
2259 #ifndef CAPSTONE_DIET
2260 { 0 }, { 0 }, { 0 }, 0, 0
2261 #endif
2262 },
2263 {
2264 SP_SRLrr, SPARC_INS_SRL,
2265 #ifndef CAPSTONE_DIET
2266 { 0 }, { 0 }, { 0 }, 0, 0
2267 #endif
2268 },
2269 {
2270 SP_STBAR, SPARC_INS_STBAR,
2271 #ifndef CAPSTONE_DIET
2272 { 0 }, { 0 }, { 0 }, 0, 0
2273 #endif
2274 },
2275 {
2276 SP_STBri, SPARC_INS_STB,
2277 #ifndef CAPSTONE_DIET
2278 { 0 }, { 0 }, { 0 }, 0, 0
2279 #endif
2280 },
2281 {
2282 SP_STBrr, SPARC_INS_STB,
2283 #ifndef CAPSTONE_DIET
2284 { 0 }, { 0 }, { 0 }, 0, 0
2285 #endif
2286 },
2287 {
2288 SP_STDFri, SPARC_INS_STD,
2289 #ifndef CAPSTONE_DIET
2290 { 0 }, { 0 }, { 0 }, 0, 0
2291 #endif
2292 },
2293 {
2294 SP_STDFrr, SPARC_INS_STD,
2295 #ifndef CAPSTONE_DIET
2296 { 0 }, { 0 }, { 0 }, 0, 0
2297 #endif
2298 },
2299 {
2300 SP_STFri, SPARC_INS_ST,
2301 #ifndef CAPSTONE_DIET
2302 { 0 }, { 0 }, { 0 }, 0, 0
2303 #endif
2304 },
2305 {
2306 SP_STFrr, SPARC_INS_ST,
2307 #ifndef CAPSTONE_DIET
2308 { 0 }, { 0 }, { 0 }, 0, 0
2309 #endif
2310 },
2311 {
2312 SP_STHri, SPARC_INS_STH,
2313 #ifndef CAPSTONE_DIET
2314 { 0 }, { 0 }, { 0 }, 0, 0
2315 #endif
2316 },
2317 {
2318 SP_STHrr, SPARC_INS_STH,
2319 #ifndef CAPSTONE_DIET
2320 { 0 }, { 0 }, { 0 }, 0, 0
2321 #endif
2322 },
2323 {
2324 SP_STQFri, SPARC_INS_STQ,
2325 #ifndef CAPSTONE_DIET
2326 { 0 }, { 0 }, { SPARC_GRP_V9, SPARC_GRP_HARDQUAD, 0 }, 0, 0
2327 #endif
2328 },
2329 {
2330 SP_STQFrr, SPARC_INS_STQ,
2331 #ifndef CAPSTONE_DIET
2332 { 0 }, { 0 }, { SPARC_GRP_V9, SPARC_GRP_HARDQUAD, 0 }, 0, 0
2333 #endif
2334 },
2335 {
2336 SP_STXri, SPARC_INS_STX,
2337 #ifndef CAPSTONE_DIET
2338 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2339 #endif
2340 },
2341 {
2342 SP_STXrr, SPARC_INS_STX,
2343 #ifndef CAPSTONE_DIET
2344 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2345 #endif
2346 },
2347 {
2348 SP_STri, SPARC_INS_ST,
2349 #ifndef CAPSTONE_DIET
2350 { 0 }, { 0 }, { 0 }, 0, 0
2351 #endif
2352 },
2353 {
2354 SP_STrr, SPARC_INS_ST,
2355 #ifndef CAPSTONE_DIET
2356 { 0 }, { 0 }, { 0 }, 0, 0
2357 #endif
2358 },
2359 {
2360 SP_SUBCCri, SPARC_INS_SUBCC,
2361 #ifndef CAPSTONE_DIET
2362 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2363 #endif
2364 },
2365 {
2366 SP_SUBCCrr, SPARC_INS_SUBCC,
2367 #ifndef CAPSTONE_DIET
2368 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2369 #endif
2370 },
2371 {
2372 SP_SUBCri, SPARC_INS_SUBX,
2373 #ifndef CAPSTONE_DIET
2374 { SPARC_REG_ICC, 0 }, { 0 }, { 0 }, 0, 0
2375 #endif
2376 },
2377 {
2378 SP_SUBCrr, SPARC_INS_SUBX,
2379 #ifndef CAPSTONE_DIET
2380 { SPARC_REG_ICC, 0 }, { 0 }, { 0 }, 0, 0
2381 #endif
2382 },
2383 {
2384 SP_SUBEri, SPARC_INS_SUBXCC,
2385 #ifndef CAPSTONE_DIET
2386 { SPARC_REG_ICC, 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2387 #endif
2388 },
2389 {
2390 SP_SUBErr, SPARC_INS_SUBXCC,
2391 #ifndef CAPSTONE_DIET
2392 { SPARC_REG_ICC, 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2393 #endif
2394 },
2395 {
2396 SP_SUBXri, SPARC_INS_SUB,
2397 #ifndef CAPSTONE_DIET
2398 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2399 #endif
2400 },
2401 {
2402 SP_SUBXrr, SPARC_INS_SUB,
2403 #ifndef CAPSTONE_DIET
2404 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2405 #endif
2406 },
2407 {
2408 SP_SUBri, SPARC_INS_SUB,
2409 #ifndef CAPSTONE_DIET
2410 { 0 }, { 0 }, { 0 }, 0, 0
2411 #endif
2412 },
2413 {
2414 SP_SUBrr, SPARC_INS_SUB,
2415 #ifndef CAPSTONE_DIET
2416 { 0 }, { 0 }, { 0 }, 0, 0
2417 #endif
2418 },
2419 {
2420 SP_SWAPri, SPARC_INS_SWAP,
2421 #ifndef CAPSTONE_DIET
2422 { 0 }, { 0 }, { 0 }, 0, 0
2423 #endif
2424 },
2425 {
2426 SP_SWAPrr, SPARC_INS_SWAP,
2427 #ifndef CAPSTONE_DIET
2428 { 0 }, { 0 }, { 0 }, 0, 0
2429 #endif
2430 },
2431 {
2432 SP_TA3, SPARC_INS_T,
2433 #ifndef CAPSTONE_DIET
2434 { 0 }, { 0 }, { 0 }, 0, 0
2435 #endif
2436 },
2437 {
2438 SP_TA5, SPARC_INS_T,
2439 #ifndef CAPSTONE_DIET
2440 { 0 }, { 0 }, { 0 }, 0, 0
2441 #endif
2442 },
2443 {
2444 SP_TADDCCTVri, SPARC_INS_TADDCCTV,
2445 #ifndef CAPSTONE_DIET
2446 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2447 #endif
2448 },
2449 {
2450 SP_TADDCCTVrr, SPARC_INS_TADDCCTV,
2451 #ifndef CAPSTONE_DIET
2452 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2453 #endif
2454 },
2455 {
2456 SP_TADDCCri, SPARC_INS_TADDCC,
2457 #ifndef CAPSTONE_DIET
2458 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2459 #endif
2460 },
2461 {
2462 SP_TADDCCrr, SPARC_INS_TADDCC,
2463 #ifndef CAPSTONE_DIET
2464 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2465 #endif
2466 },
2467 {
2468 SP_TICCri, SPARC_INS_T,
2469 #ifndef CAPSTONE_DIET
2470 { SPARC_REG_ICC, 0 }, { 0 }, { 0 }, 0, 0
2471 #endif
2472 },
2473 {
2474 SP_TICCrr, SPARC_INS_T,
2475 #ifndef CAPSTONE_DIET
2476 { SPARC_REG_ICC, 0 }, { 0 }, { 0 }, 0, 0
2477 #endif
2478 },
2479 {
2480 SP_TLS_ADDXrr, SPARC_INS_ADD,
2481 #ifndef CAPSTONE_DIET
2482 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2483 #endif
2484 },
2485 {
2486 SP_TLS_ADDrr, SPARC_INS_ADD,
2487 #ifndef CAPSTONE_DIET
2488 { 0 }, { 0 }, { 0 }, 0, 0
2489 #endif
2490 },
2491 {
2492 SP_TLS_CALL, SPARC_INS_CALL,
2493 #ifndef CAPSTONE_DIET
2494 { SPARC_REG_O6, 0 }, { 0 }, { 0 }, 0, 0
2495 #endif
2496 },
2497 {
2498 SP_TLS_LDXrr, SPARC_INS_LDX,
2499 #ifndef CAPSTONE_DIET
2500 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2501 #endif
2502 },
2503 {
2504 SP_TLS_LDrr, SPARC_INS_LD,
2505 #ifndef CAPSTONE_DIET
2506 { 0 }, { 0 }, { 0 }, 0, 0
2507 #endif
2508 },
2509 {
2510 SP_TSUBCCTVri, SPARC_INS_TSUBCCTV,
2511 #ifndef CAPSTONE_DIET
2512 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2513 #endif
2514 },
2515 {
2516 SP_TSUBCCTVrr, SPARC_INS_TSUBCCTV,
2517 #ifndef CAPSTONE_DIET
2518 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2519 #endif
2520 },
2521 {
2522 SP_TSUBCCri, SPARC_INS_TSUBCC,
2523 #ifndef CAPSTONE_DIET
2524 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2525 #endif
2526 },
2527 {
2528 SP_TSUBCCrr, SPARC_INS_TSUBCC,
2529 #ifndef CAPSTONE_DIET
2530 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2531 #endif
2532 },
2533 {
2534 SP_TXCCri, SPARC_INS_T,
2535 #ifndef CAPSTONE_DIET
2536 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2537 #endif
2538 },
2539 {
2540 SP_TXCCrr, SPARC_INS_T,
2541 #ifndef CAPSTONE_DIET
2542 { SPARC_REG_ICC, 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2543 #endif
2544 },
2545 {
2546 SP_UDIVCCri, SPARC_INS_UDIVCC,
2547 #ifndef CAPSTONE_DIET
2548 { 0 }, { SPARC_REG_Y, SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2549 #endif
2550 },
2551 {
2552 SP_UDIVCCrr, SPARC_INS_UDIVCC,
2553 #ifndef CAPSTONE_DIET
2554 { 0 }, { SPARC_REG_Y, SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2555 #endif
2556 },
2557 {
2558 SP_UDIVXri, SPARC_INS_UDIVX,
2559 #ifndef CAPSTONE_DIET
2560 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2561 #endif
2562 },
2563 {
2564 SP_UDIVXrr, SPARC_INS_UDIVX,
2565 #ifndef CAPSTONE_DIET
2566 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2567 #endif
2568 },
2569 {
2570 SP_UDIVri, SPARC_INS_UDIV,
2571 #ifndef CAPSTONE_DIET
2572 { 0 }, { SPARC_REG_Y, 0 }, { 0 }, 0, 0
2573 #endif
2574 },
2575 {
2576 SP_UDIVrr, SPARC_INS_UDIV,
2577 #ifndef CAPSTONE_DIET
2578 { 0 }, { SPARC_REG_Y, 0 }, { 0 }, 0, 0
2579 #endif
2580 },
2581 {
2582 SP_UMULCCri, SPARC_INS_UMULCC,
2583 #ifndef CAPSTONE_DIET
2584 { 0 }, { SPARC_REG_Y, SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2585 #endif
2586 },
2587 {
2588 SP_UMULCCrr, SPARC_INS_UMULCC,
2589 #ifndef CAPSTONE_DIET
2590 { 0 }, { SPARC_REG_Y, SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2591 #endif
2592 },
2593 {
2594 SP_UMULXHI, SPARC_INS_UMULXHI,
2595 #ifndef CAPSTONE_DIET
2596 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
2597 #endif
2598 },
2599 {
2600 SP_UMULri, SPARC_INS_UMUL,
2601 #ifndef CAPSTONE_DIET
2602 { 0 }, { SPARC_REG_Y, 0 }, { 0 }, 0, 0
2603 #endif
2604 },
2605 {
2606 SP_UMULrr, SPARC_INS_UMUL,
2607 #ifndef CAPSTONE_DIET
2608 { 0 }, { SPARC_REG_Y, 0 }, { 0 }, 0, 0
2609 #endif
2610 },
2611 {
2612 SP_UNIMP, SPARC_INS_UNIMP,
2613 #ifndef CAPSTONE_DIET
2614 { 0 }, { 0 }, { 0 }, 0, 0
2615 #endif
2616 },
2617 {
2618 SP_V9FCMPD, SPARC_INS_FCMPD,
2619 #ifndef CAPSTONE_DIET
2620 { 0 }, { 0 }, { 0 }, 0, 0
2621 #endif
2622 },
2623 {
2624 SP_V9FCMPED, SPARC_INS_FCMPED,
2625 #ifndef CAPSTONE_DIET
2626 { 0 }, { 0 }, { 0 }, 0, 0
2627 #endif
2628 },
2629 {
2630 SP_V9FCMPEQ, SPARC_INS_FCMPEQ,
2631 #ifndef CAPSTONE_DIET
2632 { 0 }, { 0 }, { SPARC_GRP_HARDQUAD, 0 }, 0, 0
2633 #endif
2634 },
2635 {
2636 SP_V9FCMPES, SPARC_INS_FCMPES,
2637 #ifndef CAPSTONE_DIET
2638 { 0 }, { 0 }, { 0 }, 0, 0
2639 #endif
2640 },
2641 {
2642 SP_V9FCMPQ, SPARC_INS_FCMPQ,
2643 #ifndef CAPSTONE_DIET
2644 { 0 }, { 0 }, { SPARC_GRP_HARDQUAD, 0 }, 0, 0
2645 #endif
2646 },
2647 {
2648 SP_V9FCMPS, SPARC_INS_FCMPS,
2649 #ifndef CAPSTONE_DIET
2650 { 0 }, { 0 }, { 0 }, 0, 0
2651 #endif
2652 },
2653 {
2654 SP_V9FMOVD_FCC, SPARC_INS_FMOVD,
2655 #ifndef CAPSTONE_DIET
2656 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
2657 #endif
2658 },
2659 {
2660 SP_V9FMOVQ_FCC, SPARC_INS_FMOVQ,
2661 #ifndef CAPSTONE_DIET
2662 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
2663 #endif
2664 },
2665 {
2666 SP_V9FMOVS_FCC, SPARC_INS_FMOVS,
2667 #ifndef CAPSTONE_DIET
2668 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
2669 #endif
2670 },
2671 {
2672 SP_V9MOVFCCri, SPARC_INS_MOV,
2673 #ifndef CAPSTONE_DIET
2674 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
2675 #endif
2676 },
2677 {
2678 SP_V9MOVFCCrr, SPARC_INS_MOV,
2679 #ifndef CAPSTONE_DIET
2680 { 0 }, { 0 }, { SPARC_GRP_V9, 0 }, 0, 0
2681 #endif
2682 },
2683 {
2684 SP_WRYri, SPARC_INS_WR,
2685 #ifndef CAPSTONE_DIET
2686 { 0 }, { SPARC_REG_Y, 0 }, { 0 }, 0, 0
2687 #endif
2688 },
2689 {
2690 SP_WRYrr, SPARC_INS_WR,
2691 #ifndef CAPSTONE_DIET
2692 { 0 }, { SPARC_REG_Y, 0 }, { 0 }, 0, 0
2693 #endif
2694 },
2695 {
2696 SP_XMULX, SPARC_INS_XMULX,
2697 #ifndef CAPSTONE_DIET
2698 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
2699 #endif
2700 },
2701 {
2702 SP_XMULXHI, SPARC_INS_XMULXHI,
2703 #ifndef CAPSTONE_DIET
2704 { 0 }, { 0 }, { SPARC_GRP_VIS3, 0 }, 0, 0
2705 #endif
2706 },
2707 {
2708 SP_XNORCCri, SPARC_INS_XNORCC,
2709 #ifndef CAPSTONE_DIET
2710 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2711 #endif
2712 },
2713 {
2714 SP_XNORCCrr, SPARC_INS_XNORCC,
2715 #ifndef CAPSTONE_DIET
2716 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2717 #endif
2718 },
2719 {
2720 SP_XNORXrr, SPARC_INS_XNOR,
2721 #ifndef CAPSTONE_DIET
2722 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2723 #endif
2724 },
2725 {
2726 SP_XNORri, SPARC_INS_XNOR,
2727 #ifndef CAPSTONE_DIET
2728 { 0 }, { 0 }, { 0 }, 0, 0
2729 #endif
2730 },
2731 {
2732 SP_XNORrr, SPARC_INS_XNOR,
2733 #ifndef CAPSTONE_DIET
2734 { 0 }, { 0 }, { 0 }, 0, 0
2735 #endif
2736 },
2737 {
2738 SP_XORCCri, SPARC_INS_XORCC,
2739 #ifndef CAPSTONE_DIET
2740 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2741 #endif
2742 },
2743 {
2744 SP_XORCCrr, SPARC_INS_XORCC,
2745 #ifndef CAPSTONE_DIET
2746 { 0 }, { SPARC_REG_ICC, 0 }, { 0 }, 0, 0
2747 #endif
2748 },
2749 {
2750 SP_XORXri, SPARC_INS_XOR,
2751 #ifndef CAPSTONE_DIET
2752 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2753 #endif
2754 },
2755 {
2756 SP_XORXrr, SPARC_INS_XOR,
2757 #ifndef CAPSTONE_DIET
2758 { 0 }, { 0 }, { SPARC_GRP_64BIT, 0 }, 0, 0
2759 #endif
2760 },
2761 {
2762 SP_XORri, SPARC_INS_XOR,
2763 #ifndef CAPSTONE_DIET
2764 { 0 }, { 0 }, { 0 }, 0, 0
2765 #endif
2766 },
2767 {
2768 SP_XORrr, SPARC_INS_XOR,
2769 #ifndef CAPSTONE_DIET
2770 { 0 }, { 0 }, { 0 }, 0, 0
2771 #endif
2772 },
2773 };
2774
2775 static struct hint_map {
2776 unsigned int id;
2777 uint8_t hints;
2778 } insn_hints[] = {
2779 { SP_BPGEZapn, SPARC_HINT_A | SPARC_HINT_PN },
2780 { SP_BPGEZapt, SPARC_HINT_A | SPARC_HINT_PT },
2781 { SP_BPGEZnapn, SPARC_HINT_PN },
2782 { SP_BPGZapn, SPARC_HINT_A | SPARC_HINT_PN },
2783 { SP_BPGZapt, SPARC_HINT_A | SPARC_HINT_PT },
2784 { SP_BPGZnapn, SPARC_HINT_PN },
2785 { SP_BPLEZapn, SPARC_HINT_A | SPARC_HINT_PN },
2786 { SP_BPLEZapt, SPARC_HINT_A | SPARC_HINT_PT },
2787 { SP_BPLEZnapn, SPARC_HINT_PN },
2788 { SP_BPLZapn, SPARC_HINT_A | SPARC_HINT_PN },
2789 { SP_BPLZapt, SPARC_HINT_A | SPARC_HINT_PT },
2790 { SP_BPLZnapn, SPARC_HINT_PN },
2791 { SP_BPNZapn, SPARC_HINT_A | SPARC_HINT_PN },
2792 { SP_BPNZapt, SPARC_HINT_A | SPARC_HINT_PT },
2793 { SP_BPNZnapn, SPARC_HINT_PN },
2794 { SP_BPZapn, SPARC_HINT_A | SPARC_HINT_PN },
2795 { SP_BPZapt, SPARC_HINT_A | SPARC_HINT_PT },
2796 { SP_BPZnapn, SPARC_HINT_PN },
2797 };
2798
2799 // given internal insn id, return public instruction info
Sparc_get_insn_id(cs_struct * h,cs_insn * insn,unsigned int id)2800 void Sparc_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id)
2801 {
2802 unsigned short i;
2803
2804 i = insn_find(insns, ARR_SIZE(insns), id, &h->insn_cache);
2805 if (i != 0) {
2806 insn->id = insns[i].mapid;
2807
2808 if (h->detail) {
2809 #ifndef CAPSTONE_DIET
2810 memcpy(insn->detail->regs_read, insns[i].regs_use, sizeof(insns[i].regs_use));
2811 insn->detail->regs_read_count = (uint8_t)count_positive(insns[i].regs_use);
2812
2813 memcpy(insn->detail->regs_write, insns[i].regs_mod, sizeof(insns[i].regs_mod));
2814 insn->detail->regs_write_count = (uint8_t)count_positive(insns[i].regs_mod);
2815
2816 memcpy(insn->detail->groups, insns[i].groups, sizeof(insns[i].groups));
2817 insn->detail->groups_count = (uint8_t)count_positive(insns[i].groups);
2818
2819 if (insns[i].branch || insns[i].indirect_branch) {
2820 // this insn also belongs to JUMP group. add JUMP group
2821 insn->detail->groups[insn->detail->groups_count] = SPARC_GRP_JUMP;
2822 insn->detail->groups_count++;
2823 }
2824 #endif
2825 // hint code
2826 for (i = 0; i < ARR_SIZE(insn_hints); i++) {
2827 if (id == insn_hints[i].id) {
2828 insn->detail->sparc.hint = insn_hints[i].hints;
2829 break;
2830 }
2831 }
2832 }
2833 }
2834 }
2835
2836 static name_map insn_name_maps[] = {
2837 { SPARC_INS_INVALID, NULL },
2838
2839 { SPARC_INS_ADDCC, "addcc" },
2840 { SPARC_INS_ADDX, "addx" },
2841 { SPARC_INS_ADDXCC, "addxcc" },
2842 { SPARC_INS_ADDXC, "addxc" },
2843 { SPARC_INS_ADDXCCC, "addxccc" },
2844 { SPARC_INS_ADD, "add" },
2845 { SPARC_INS_ALIGNADDR, "alignaddr" },
2846 { SPARC_INS_ALIGNADDRL, "alignaddrl" },
2847 { SPARC_INS_ANDCC, "andcc" },
2848 { SPARC_INS_ANDNCC, "andncc" },
2849 { SPARC_INS_ANDN, "andn" },
2850 { SPARC_INS_AND, "and" },
2851 { SPARC_INS_ARRAY16, "array16" },
2852 { SPARC_INS_ARRAY32, "array32" },
2853 { SPARC_INS_ARRAY8, "array8" },
2854 { SPARC_INS_B, "b" },
2855 { SPARC_INS_JMP, "jmp" },
2856 { SPARC_INS_BMASK, "bmask" },
2857 { SPARC_INS_FB, "fb" },
2858 { SPARC_INS_BRGEZ, "brgez" },
2859 { SPARC_INS_BRGZ, "brgz" },
2860 { SPARC_INS_BRLEZ, "brlez" },
2861 { SPARC_INS_BRLZ, "brlz" },
2862 { SPARC_INS_BRNZ, "brnz" },
2863 { SPARC_INS_BRZ, "brz" },
2864 { SPARC_INS_BSHUFFLE, "bshuffle" },
2865 { SPARC_INS_CALL, "call" },
2866 { SPARC_INS_CASX, "casx" },
2867 { SPARC_INS_CAS, "cas" },
2868 { SPARC_INS_CMASK16, "cmask16" },
2869 { SPARC_INS_CMASK32, "cmask32" },
2870 { SPARC_INS_CMASK8, "cmask8" },
2871 { SPARC_INS_CMP, "cmp" },
2872 { SPARC_INS_EDGE16, "edge16" },
2873 { SPARC_INS_EDGE16L, "edge16l" },
2874 { SPARC_INS_EDGE16LN, "edge16ln" },
2875 { SPARC_INS_EDGE16N, "edge16n" },
2876 { SPARC_INS_EDGE32, "edge32" },
2877 { SPARC_INS_EDGE32L, "edge32l" },
2878 { SPARC_INS_EDGE32LN, "edge32ln" },
2879 { SPARC_INS_EDGE32N, "edge32n" },
2880 { SPARC_INS_EDGE8, "edge8" },
2881 { SPARC_INS_EDGE8L, "edge8l" },
2882 { SPARC_INS_EDGE8LN, "edge8ln" },
2883 { SPARC_INS_EDGE8N, "edge8n" },
2884 { SPARC_INS_FABSD, "fabsd" },
2885 { SPARC_INS_FABSQ, "fabsq" },
2886 { SPARC_INS_FABSS, "fabss" },
2887 { SPARC_INS_FADDD, "faddd" },
2888 { SPARC_INS_FADDQ, "faddq" },
2889 { SPARC_INS_FADDS, "fadds" },
2890 { SPARC_INS_FALIGNDATA, "faligndata" },
2891 { SPARC_INS_FAND, "fand" },
2892 { SPARC_INS_FANDNOT1, "fandnot1" },
2893 { SPARC_INS_FANDNOT1S, "fandnot1s" },
2894 { SPARC_INS_FANDNOT2, "fandnot2" },
2895 { SPARC_INS_FANDNOT2S, "fandnot2s" },
2896 { SPARC_INS_FANDS, "fands" },
2897 { SPARC_INS_FCHKSM16, "fchksm16" },
2898 { SPARC_INS_FCMPD, "fcmpd" },
2899 { SPARC_INS_FCMPEQ16, "fcmpeq16" },
2900 { SPARC_INS_FCMPEQ32, "fcmpeq32" },
2901 { SPARC_INS_FCMPGT16, "fcmpgt16" },
2902 { SPARC_INS_FCMPGT32, "fcmpgt32" },
2903 { SPARC_INS_FCMPLE16, "fcmple16" },
2904 { SPARC_INS_FCMPLE32, "fcmple32" },
2905 { SPARC_INS_FCMPNE16, "fcmpne16" },
2906 { SPARC_INS_FCMPNE32, "fcmpne32" },
2907 { SPARC_INS_FCMPQ, "fcmpq" },
2908 { SPARC_INS_FCMPS, "fcmps" },
2909 { SPARC_INS_FDIVD, "fdivd" },
2910 { SPARC_INS_FDIVQ, "fdivq" },
2911 { SPARC_INS_FDIVS, "fdivs" },
2912 { SPARC_INS_FDMULQ, "fdmulq" },
2913 { SPARC_INS_FDTOI, "fdtoi" },
2914 { SPARC_INS_FDTOQ, "fdtoq" },
2915 { SPARC_INS_FDTOS, "fdtos" },
2916 { SPARC_INS_FDTOX, "fdtox" },
2917 { SPARC_INS_FEXPAND, "fexpand" },
2918 { SPARC_INS_FHADDD, "fhaddd" },
2919 { SPARC_INS_FHADDS, "fhadds" },
2920 { SPARC_INS_FHSUBD, "fhsubd" },
2921 { SPARC_INS_FHSUBS, "fhsubs" },
2922 { SPARC_INS_FITOD, "fitod" },
2923 { SPARC_INS_FITOQ, "fitoq" },
2924 { SPARC_INS_FITOS, "fitos" },
2925 { SPARC_INS_FLCMPD, "flcmpd" },
2926 { SPARC_INS_FLCMPS, "flcmps" },
2927 { SPARC_INS_FLUSHW, "flushw" },
2928 { SPARC_INS_FMEAN16, "fmean16" },
2929 { SPARC_INS_FMOVD, "fmovd" },
2930 { SPARC_INS_FMOVQ, "fmovq" },
2931 { SPARC_INS_FMOVRDGEZ, "fmovrdgez" },
2932 { SPARC_INS_FMOVRQGEZ, "fmovrqgez" },
2933 { SPARC_INS_FMOVRSGEZ, "fmovrsgez" },
2934 { SPARC_INS_FMOVRDGZ, "fmovrdgz" },
2935 { SPARC_INS_FMOVRQGZ, "fmovrqgz" },
2936 { SPARC_INS_FMOVRSGZ, "fmovrsgz" },
2937 { SPARC_INS_FMOVRDLEZ, "fmovrdlez" },
2938 { SPARC_INS_FMOVRQLEZ, "fmovrqlez" },
2939 { SPARC_INS_FMOVRSLEZ, "fmovrslez" },
2940 { SPARC_INS_FMOVRDLZ, "fmovrdlz" },
2941 { SPARC_INS_FMOVRQLZ, "fmovrqlz" },
2942 { SPARC_INS_FMOVRSLZ, "fmovrslz" },
2943 { SPARC_INS_FMOVRDNZ, "fmovrdnz" },
2944 { SPARC_INS_FMOVRQNZ, "fmovrqnz" },
2945 { SPARC_INS_FMOVRSNZ, "fmovrsnz" },
2946 { SPARC_INS_FMOVRDZ, "fmovrdz" },
2947 { SPARC_INS_FMOVRQZ, "fmovrqz" },
2948 { SPARC_INS_FMOVRSZ, "fmovrsz" },
2949 { SPARC_INS_FMOVS, "fmovs" },
2950 { SPARC_INS_FMUL8SUX16, "fmul8sux16" },
2951 { SPARC_INS_FMUL8ULX16, "fmul8ulx16" },
2952 { SPARC_INS_FMUL8X16, "fmul8x16" },
2953 { SPARC_INS_FMUL8X16AL, "fmul8x16al" },
2954 { SPARC_INS_FMUL8X16AU, "fmul8x16au" },
2955 { SPARC_INS_FMULD, "fmuld" },
2956 { SPARC_INS_FMULD8SUX16, "fmuld8sux16" },
2957 { SPARC_INS_FMULD8ULX16, "fmuld8ulx16" },
2958 { SPARC_INS_FMULQ, "fmulq" },
2959 { SPARC_INS_FMULS, "fmuls" },
2960 { SPARC_INS_FNADDD, "fnaddd" },
2961 { SPARC_INS_FNADDS, "fnadds" },
2962 { SPARC_INS_FNAND, "fnand" },
2963 { SPARC_INS_FNANDS, "fnands" },
2964 { SPARC_INS_FNEGD, "fnegd" },
2965 { SPARC_INS_FNEGQ, "fnegq" },
2966 { SPARC_INS_FNEGS, "fnegs" },
2967 { SPARC_INS_FNHADDD, "fnhaddd" },
2968 { SPARC_INS_FNHADDS, "fnhadds" },
2969 { SPARC_INS_FNOR, "fnor" },
2970 { SPARC_INS_FNORS, "fnors" },
2971 { SPARC_INS_FNOT1, "fnot1" },
2972 { SPARC_INS_FNOT1S, "fnot1s" },
2973 { SPARC_INS_FNOT2, "fnot2" },
2974 { SPARC_INS_FNOT2S, "fnot2s" },
2975 { SPARC_INS_FONE, "fone" },
2976 { SPARC_INS_FONES, "fones" },
2977 { SPARC_INS_FOR, "for" },
2978 { SPARC_INS_FORNOT1, "fornot1" },
2979 { SPARC_INS_FORNOT1S, "fornot1s" },
2980 { SPARC_INS_FORNOT2, "fornot2" },
2981 { SPARC_INS_FORNOT2S, "fornot2s" },
2982 { SPARC_INS_FORS, "fors" },
2983 { SPARC_INS_FPACK16, "fpack16" },
2984 { SPARC_INS_FPACK32, "fpack32" },
2985 { SPARC_INS_FPACKFIX, "fpackfix" },
2986 { SPARC_INS_FPADD16, "fpadd16" },
2987 { SPARC_INS_FPADD16S, "fpadd16s" },
2988 { SPARC_INS_FPADD32, "fpadd32" },
2989 { SPARC_INS_FPADD32S, "fpadd32s" },
2990 { SPARC_INS_FPADD64, "fpadd64" },
2991 { SPARC_INS_FPMERGE, "fpmerge" },
2992 { SPARC_INS_FPSUB16, "fpsub16" },
2993 { SPARC_INS_FPSUB16S, "fpsub16s" },
2994 { SPARC_INS_FPSUB32, "fpsub32" },
2995 { SPARC_INS_FPSUB32S, "fpsub32s" },
2996 { SPARC_INS_FQTOD, "fqtod" },
2997 { SPARC_INS_FQTOI, "fqtoi" },
2998 { SPARC_INS_FQTOS, "fqtos" },
2999 { SPARC_INS_FQTOX, "fqtox" },
3000 { SPARC_INS_FSLAS16, "fslas16" },
3001 { SPARC_INS_FSLAS32, "fslas32" },
3002 { SPARC_INS_FSLL16, "fsll16" },
3003 { SPARC_INS_FSLL32, "fsll32" },
3004 { SPARC_INS_FSMULD, "fsmuld" },
3005 { SPARC_INS_FSQRTD, "fsqrtd" },
3006 { SPARC_INS_FSQRTQ, "fsqrtq" },
3007 { SPARC_INS_FSQRTS, "fsqrts" },
3008 { SPARC_INS_FSRA16, "fsra16" },
3009 { SPARC_INS_FSRA32, "fsra32" },
3010 { SPARC_INS_FSRC1, "fsrc1" },
3011 { SPARC_INS_FSRC1S, "fsrc1s" },
3012 { SPARC_INS_FSRC2, "fsrc2" },
3013 { SPARC_INS_FSRC2S, "fsrc2s" },
3014 { SPARC_INS_FSRL16, "fsrl16" },
3015 { SPARC_INS_FSRL32, "fsrl32" },
3016 { SPARC_INS_FSTOD, "fstod" },
3017 { SPARC_INS_FSTOI, "fstoi" },
3018 { SPARC_INS_FSTOQ, "fstoq" },
3019 { SPARC_INS_FSTOX, "fstox" },
3020 { SPARC_INS_FSUBD, "fsubd" },
3021 { SPARC_INS_FSUBQ, "fsubq" },
3022 { SPARC_INS_FSUBS, "fsubs" },
3023 { SPARC_INS_FXNOR, "fxnor" },
3024 { SPARC_INS_FXNORS, "fxnors" },
3025 { SPARC_INS_FXOR, "fxor" },
3026 { SPARC_INS_FXORS, "fxors" },
3027 { SPARC_INS_FXTOD, "fxtod" },
3028 { SPARC_INS_FXTOQ, "fxtoq" },
3029 { SPARC_INS_FXTOS, "fxtos" },
3030 { SPARC_INS_FZERO, "fzero" },
3031 { SPARC_INS_FZEROS, "fzeros" },
3032 { SPARC_INS_JMPL, "jmpl" },
3033 { SPARC_INS_LDD, "ldd" },
3034 { SPARC_INS_LD, "ld" },
3035 { SPARC_INS_LDQ, "ldq" },
3036 { SPARC_INS_LDSB, "ldsb" },
3037 { SPARC_INS_LDSH, "ldsh" },
3038 { SPARC_INS_LDSW, "ldsw" },
3039 { SPARC_INS_LDUB, "ldub" },
3040 { SPARC_INS_LDUH, "lduh" },
3041 { SPARC_INS_LDX, "ldx" },
3042 { SPARC_INS_LZCNT, "lzcnt" },
3043 { SPARC_INS_MEMBAR, "membar" },
3044 { SPARC_INS_MOVDTOX, "movdtox" },
3045 { SPARC_INS_MOV, "mov" },
3046 { SPARC_INS_MOVRGEZ, "movrgez" },
3047 { SPARC_INS_MOVRGZ, "movrgz" },
3048 { SPARC_INS_MOVRLEZ, "movrlez" },
3049 { SPARC_INS_MOVRLZ, "movrlz" },
3050 { SPARC_INS_MOVRNZ, "movrnz" },
3051 { SPARC_INS_MOVRZ, "movrz" },
3052 { SPARC_INS_MOVSTOSW, "movstosw" },
3053 { SPARC_INS_MOVSTOUW, "movstouw" },
3054 { SPARC_INS_MULX, "mulx" },
3055 { SPARC_INS_NOP, "nop" },
3056 { SPARC_INS_ORCC, "orcc" },
3057 { SPARC_INS_ORNCC, "orncc" },
3058 { SPARC_INS_ORN, "orn" },
3059 { SPARC_INS_OR, "or" },
3060 { SPARC_INS_PDIST, "pdist" },
3061 { SPARC_INS_PDISTN, "pdistn" },
3062 { SPARC_INS_POPC, "popc" },
3063 { SPARC_INS_RD, "rd" },
3064 { SPARC_INS_RESTORE, "restore" },
3065 { SPARC_INS_RETT, "rett" },
3066 { SPARC_INS_SAVE, "save" },
3067 { SPARC_INS_SDIVCC, "sdivcc" },
3068 { SPARC_INS_SDIVX, "sdivx" },
3069 { SPARC_INS_SDIV, "sdiv" },
3070 { SPARC_INS_SETHI, "sethi" },
3071 { SPARC_INS_SHUTDOWN, "shutdown" },
3072 { SPARC_INS_SIAM, "siam" },
3073 { SPARC_INS_SLLX, "sllx" },
3074 { SPARC_INS_SLL, "sll" },
3075 { SPARC_INS_SMULCC, "smulcc" },
3076 { SPARC_INS_SMUL, "smul" },
3077 { SPARC_INS_SRAX, "srax" },
3078 { SPARC_INS_SRA, "sra" },
3079 { SPARC_INS_SRLX, "srlx" },
3080 { SPARC_INS_SRL, "srl" },
3081 { SPARC_INS_STBAR, "stbar" },
3082 { SPARC_INS_STB, "stb" },
3083 { SPARC_INS_STD, "std" },
3084 { SPARC_INS_ST, "st" },
3085 { SPARC_INS_STH, "sth" },
3086 { SPARC_INS_STQ, "stq" },
3087 { SPARC_INS_STX, "stx" },
3088 { SPARC_INS_SUBCC, "subcc" },
3089 { SPARC_INS_SUBX, "subx" },
3090 { SPARC_INS_SUBXCC, "subxcc" },
3091 { SPARC_INS_SUB, "sub" },
3092 { SPARC_INS_SWAP, "swap" },
3093 { SPARC_INS_TADDCCTV, "taddcctv" },
3094 { SPARC_INS_TADDCC, "taddcc" },
3095 { SPARC_INS_T, "t" },
3096 { SPARC_INS_TSUBCCTV, "tsubcctv" },
3097 { SPARC_INS_TSUBCC, "tsubcc" },
3098 { SPARC_INS_UDIVCC, "udivcc" },
3099 { SPARC_INS_UDIVX, "udivx" },
3100 { SPARC_INS_UDIV, "udiv" },
3101 { SPARC_INS_UMULCC, "umulcc" },
3102 { SPARC_INS_UMULXHI, "umulxhi" },
3103 { SPARC_INS_UMUL, "umul" },
3104 { SPARC_INS_UNIMP, "unimp" },
3105 { SPARC_INS_FCMPED, "fcmped" },
3106 { SPARC_INS_FCMPEQ, "fcmpeq" },
3107 { SPARC_INS_FCMPES, "fcmpes" },
3108 { SPARC_INS_WR, "wr" },
3109 { SPARC_INS_XMULX, "xmulx" },
3110 { SPARC_INS_XMULXHI, "xmulxhi" },
3111 { SPARC_INS_XNORCC, "xnorcc" },
3112 { SPARC_INS_XNOR, "xnor" },
3113 { SPARC_INS_XORCC, "xorcc" },
3114 { SPARC_INS_XOR, "xor" },
3115
3116 // alias instructions
3117 { SPARC_INS_RET, "ret" },
3118 { SPARC_INS_RETL, "retl" },
3119 };
3120
3121 #ifndef CAPSTONE_DIET
3122 // special alias insn
3123 static name_map alias_insn_names[] = {
3124 { 0, NULL }
3125 };
3126 #endif
3127
Sparc_insn_name(csh handle,unsigned int id)3128 const char *Sparc_insn_name(csh handle, unsigned int id)
3129 {
3130 #ifndef CAPSTONE_DIET
3131 unsigned int i;
3132
3133 if (id >= SPARC_INS_ENDING)
3134 return NULL;
3135
3136 // handle special alias first
3137 for (i = 0; i < ARR_SIZE(alias_insn_names); i++) {
3138 if (alias_insn_names[i].id == id)
3139 return alias_insn_names[i].name;
3140 }
3141
3142 return insn_name_maps[id].name;
3143 #else
3144 return NULL;
3145 #endif
3146 }
3147
3148 #ifndef CAPSTONE_DIET
3149 static name_map group_name_maps[] = {
3150 // generic groups
3151 { SPARC_GRP_INVALID, NULL },
3152 { SPARC_GRP_JUMP, "jump" },
3153
3154 // architecture-specific groups
3155 { SPARC_GRP_HARDQUAD, "hardquad" },
3156 { SPARC_GRP_V9, "v9" },
3157 { SPARC_GRP_VIS, "vis" },
3158 { SPARC_GRP_VIS2, "vis2" },
3159 { SPARC_GRP_VIS3, "vis3" },
3160 { SPARC_GRP_32BIT, "32bit" },
3161 { SPARC_GRP_64BIT, "64bit" },
3162 };
3163 #endif
3164
Sparc_group_name(csh handle,unsigned int id)3165 const char *Sparc_group_name(csh handle, unsigned int id)
3166 {
3167 #ifndef CAPSTONE_DIET
3168 // verify group id
3169 if (id >= SPARC_GRP_ENDING || (id > SPARC_GRP_JUMP && id < SPARC_GRP_HARDQUAD))
3170 return NULL;
3171
3172 // NOTE: when new generic groups are added, 2 must be changed accordingly
3173 if (id >= 128)
3174 return group_name_maps[id - 128 + 2].name;
3175 else
3176 return group_name_maps[id].name;
3177 #else
3178 return NULL;
3179 #endif
3180 }
3181
3182 // map internal raw register to 'public' register
Sparc_map_register(unsigned int r)3183 sparc_reg Sparc_map_register(unsigned int r)
3184 {
3185 static unsigned int map[] = { 0,
3186 SPARC_REG_ICC, SPARC_REG_Y, SPARC_REG_F0, SPARC_REG_F2, SPARC_REG_F4,
3187 SPARC_REG_F6, SPARC_REG_F8, SPARC_REG_F10, SPARC_REG_F12, SPARC_REG_F14,
3188 SPARC_REG_F16, SPARC_REG_F18, SPARC_REG_F20, SPARC_REG_F22, SPARC_REG_F24,
3189 SPARC_REG_F26, SPARC_REG_F28, SPARC_REG_F30, SPARC_REG_F32, SPARC_REG_F34,
3190 SPARC_REG_F36, SPARC_REG_F38, SPARC_REG_F40, SPARC_REG_F42, SPARC_REG_F44,
3191 SPARC_REG_F46, SPARC_REG_F48, SPARC_REG_F50, SPARC_REG_F52, SPARC_REG_F54,
3192 SPARC_REG_F56, SPARC_REG_F58, SPARC_REG_F60, SPARC_REG_F62, SPARC_REG_F0,
3193 SPARC_REG_F1, SPARC_REG_F2, SPARC_REG_F3, SPARC_REG_F4, SPARC_REG_F5,
3194 SPARC_REG_F6, SPARC_REG_F7, SPARC_REG_F8, SPARC_REG_F9, SPARC_REG_F10,
3195 SPARC_REG_F11, SPARC_REG_F12, SPARC_REG_F13, SPARC_REG_F14, SPARC_REG_F15,
3196 SPARC_REG_F16, SPARC_REG_F17, SPARC_REG_F18, SPARC_REG_F19, SPARC_REG_F20,
3197 SPARC_REG_F21, SPARC_REG_F22, SPARC_REG_F23, SPARC_REG_F24, SPARC_REG_F25,
3198 SPARC_REG_F26, SPARC_REG_F27, SPARC_REG_F28, SPARC_REG_F29, SPARC_REG_F30,
3199 SPARC_REG_F31, SPARC_REG_FCC0, SPARC_REG_FCC1, SPARC_REG_FCC2, SPARC_REG_FCC3,
3200 SPARC_REG_G0, SPARC_REG_G1, SPARC_REG_G2, SPARC_REG_G3, SPARC_REG_G4,
3201 SPARC_REG_G5, SPARC_REG_G6, SPARC_REG_G7, SPARC_REG_I0, SPARC_REG_I1,
3202 SPARC_REG_I2, SPARC_REG_I3, SPARC_REG_I4, SPARC_REG_I5, SPARC_REG_FP,
3203 SPARC_REG_I7, SPARC_REG_L0, SPARC_REG_L1, SPARC_REG_L2, SPARC_REG_L3,
3204 SPARC_REG_L4, SPARC_REG_L5, SPARC_REG_L6, SPARC_REG_L7, SPARC_REG_O0,
3205 SPARC_REG_O1, SPARC_REG_O2, SPARC_REG_O3, SPARC_REG_O4, SPARC_REG_O5,
3206 SPARC_REG_SP, SPARC_REG_O7, SPARC_REG_F0, SPARC_REG_F4, SPARC_REG_F8,
3207 SPARC_REG_F12, SPARC_REG_F16, SPARC_REG_F20, SPARC_REG_F24, SPARC_REG_F28,
3208 SPARC_REG_F32, SPARC_REG_F36, SPARC_REG_F40, SPARC_REG_F44, SPARC_REG_F48,
3209 SPARC_REG_F52, SPARC_REG_F56, SPARC_REG_F60,
3210 };
3211
3212 if (r < ARR_SIZE(map))
3213 return map[r];
3214
3215 // cannot find this register
3216 return 0;
3217 }
3218
3219 // map instruction name to instruction ID (public)
Sparc_map_insn(const char * name)3220 sparc_reg Sparc_map_insn(const char *name)
3221 {
3222 unsigned int i;
3223
3224 // NOTE: skip first NULL name in insn_name_maps
3225 i = name2id(&insn_name_maps[1], ARR_SIZE(insn_name_maps) - 1, name);
3226
3227 return (i != -1)? i : SPARC_REG_INVALID;
3228 }
3229
3230 // NOTE: put strings in the order of string length since
3231 // we are going to compare with mnemonic to find out CC
3232 static name_map alias_icc_maps[] = {
3233 { SPARC_CC_ICC_LEU, "leu" },
3234 { SPARC_CC_ICC_POS, "pos" },
3235 { SPARC_CC_ICC_NEG, "neg" },
3236 { SPARC_CC_ICC_NE, "ne" },
3237 { SPARC_CC_ICC_LE, "le" },
3238 { SPARC_CC_ICC_GE, "ge" },
3239 { SPARC_CC_ICC_GU, "gu" },
3240 { SPARC_CC_ICC_CC, "cc" },
3241 { SPARC_CC_ICC_CS, "cs" },
3242 { SPARC_CC_ICC_VC, "vc" },
3243 { SPARC_CC_ICC_VS, "vs" },
3244 { SPARC_CC_ICC_A, "a" },
3245 { SPARC_CC_ICC_N, "n" },
3246 { SPARC_CC_ICC_E, "e" },
3247 { SPARC_CC_ICC_G, "g" },
3248 { SPARC_CC_ICC_L, "l" },
3249 };
3250
3251 static name_map alias_fcc_maps[] = {
3252 { SPARC_CC_FCC_UGE, "uge" },
3253 { SPARC_CC_FCC_ULE, "ule" },
3254 { SPARC_CC_FCC_UG, "ug" },
3255 { SPARC_CC_FCC_UL, "ul" },
3256 { SPARC_CC_FCC_LG, "lg" },
3257 { SPARC_CC_FCC_NE, "ne" },
3258 { SPARC_CC_FCC_UE, "ue" },
3259 { SPARC_CC_FCC_GE, "ge" },
3260 { SPARC_CC_FCC_LE, "le" },
3261 { SPARC_CC_FCC_A, "a" },
3262 { SPARC_CC_FCC_N, "n" },
3263 { SPARC_CC_FCC_U, "u" },
3264 { SPARC_CC_FCC_G, "g" },
3265 { SPARC_CC_FCC_L, "l" },
3266 { SPARC_CC_FCC_E, "e" },
3267 { SPARC_CC_FCC_O, "o" },
3268 };
3269
3270 // map CC string to CC id
Sparc_map_ICC(const char * name)3271 sparc_cc Sparc_map_ICC(const char *name)
3272 {
3273 unsigned int i;
3274
3275 i = name2id(alias_icc_maps, ARR_SIZE(alias_icc_maps), name);
3276
3277 return (i != -1)? i : SPARC_CC_INVALID;
3278 }
3279
Sparc_map_FCC(const char * name)3280 sparc_cc Sparc_map_FCC(const char *name)
3281 {
3282 unsigned int i;
3283
3284 i = name2id(alias_fcc_maps, ARR_SIZE(alias_fcc_maps), name);
3285
3286 return (i != -1)? i : SPARC_CC_INVALID;
3287 }
3288
3289 static name_map hint_maps[] = {
3290 { SPARC_HINT_A, ",a" },
3291 { SPARC_HINT_A | SPARC_HINT_PN, ",a,pn" },
3292 { SPARC_HINT_PN, ",pn" },
3293 };
3294
Sparc_map_hint(const char * name)3295 sparc_hint Sparc_map_hint(const char *name)
3296 {
3297 size_t i, l1, l2;
3298
3299 l1 = strlen(name);
3300 for(i = 0; i < ARR_SIZE(hint_maps); i++) {
3301 l2 = strlen(hint_maps[i].name);
3302 if (l1 > l2) {
3303 // compare the last part of @name with this hint string
3304 if (!strcmp(hint_maps[i].name, name + (l1 - l2)))
3305 return hint_maps[i].id;
3306 }
3307 }
3308
3309 return SPARC_HINT_INVALID;
3310 }
3311
3312 #endif
3313