Home | History | Annotate | Download | only in Sparc
      1 /* Capstone Disassembly Engine */
      2 /* By Nguyen Anh Quynh <aquynh (at) 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 
    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
   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 
   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 
   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
   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)
   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
   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 
   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 
   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