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