1 /// Types and constants of PowerPc architecture 2 module capstone.ppc; 3 4 import std.variant; 5 import std.exception: enforce; 6 7 import capstone.internal; 8 import capstone.utils; 9 10 /** Instruction's operand referring to memory 11 12 This is associated with the `PpcOpType.mem` operand type 13 */ 14 struct PpcOpMem { 15 PpcRegister base; // base register 16 int disp; // displacement/offset value 17 } 18 19 /** Instruction's operand referring to a conditional register 20 21 This is associated with the `PpcOpType.crx` operand type 22 */ 23 struct PpcOpCrx { 24 uint scale; 25 PpcRegister reg; 26 PpcBc cond; 27 } 28 29 /// Tagged union of possible operand types 30 alias PpcOpValue = TaggedUnion!(PpcRegister, "reg", uint, "imm", PpcOpMem, "mem", PpcOpCrx, "crx"); 31 32 /// Instruction's operand 33 struct PpcOp { 34 PpcOpType type; /// Operand type 35 PpcOpValue value; /// Operand value of type `type` 36 alias value this; /// Convenient access to value (as in original bindings) 37 38 package this(cs_ppc_op internal){ 39 type = internal.type; 40 final switch(internal.type) { 41 case PpcOpType.invalid: 42 break; 43 case PpcOpType.reg: 44 value.reg = internal.reg; 45 break; 46 case PpcOpType.imm: 47 value.imm = internal.imm; 48 break; 49 case PpcOpType.mem: 50 value.mem = internal.mem; 51 break; 52 case PpcOpType.crx: 53 value.crx = internal.crx; 54 break; 55 } 56 } 57 } 58 59 /// Ppc-specific information about an instruction 60 struct PpcInstructionDetail { 61 PpcBc bc; /// Branch code for branch instructions 62 PpcBh bh; /// Branch hint for branch instructions 63 bool updateCr0; /// If true, then this 'dot' instruction updates CR0 64 PpcOp[] operands; /// Operands for this instruction. 65 66 package this(cs_arch_detail arch_detail){ 67 this(arch_detail.ppc); 68 } 69 package this(cs_ppc internal){ 70 bc = internal.bc; 71 bh = internal.bh; 72 updateCr0 = internal.update_cr0; 73 foreach(op; internal.operands[0..internal.op_count]) 74 operands ~= PpcOp(op); 75 } 76 } 77 78 //============================================================================= 79 // Constants 80 //============================================================================= 81 82 /// Operand type for instruction's operands 83 enum PpcOpType { 84 invalid = 0, // Uninitialized 85 reg, // Register operand 86 imm, // Immediate operand 87 mem, // Memory operand 88 crx = 64, // Condition Register field 89 } 90 91 /// PPC branch codes for some branch instructions 92 enum PpcBc { 93 invalid = 0, 94 lt = (0 << 5) | 12, 95 le = (1 << 5) | 4, 96 eq = (2 << 5) | 12, 97 ge = (0 << 5) | 4, 98 gt = (1 << 5) | 12, 99 ne = (2 << 5) | 4, 100 un = (3 << 5) | 12, 101 nu = (3 << 5) | 4, 102 103 // Extra conditions 104 so = (4 << 5) | 12, /// Summary overflow 105 ns = (4 << 5) | 4, /// Not summary overflow 106 } 107 108 /// PPC branch hint for some branch instructions 109 enum PpcBh { 110 invalid = 0, /// No hint 111 plus, /// PLUS hint 112 minus, /// MINUS hint 113 } 114 115 /// PPC registers 116 enum PpcRegister { 117 invalid = 0, 118 119 carry, 120 cc, 121 cr0, 122 cr1, 123 cr2, 124 cr3, 125 cr4, 126 cr5, 127 cr6, 128 cr7, 129 ctr, 130 f0, 131 f1, 132 f2, 133 f3, 134 f4, 135 f5, 136 f6, 137 f7, 138 f8, 139 f9, 140 f10, 141 f11, 142 f12, 143 f13, 144 f14, 145 f15, 146 f16, 147 f17, 148 f18, 149 f19, 150 f20, 151 f21, 152 f22, 153 f23, 154 f24, 155 f25, 156 f26, 157 f27, 158 f28, 159 f29, 160 f30, 161 f31, 162 lr, 163 r0, 164 r1, 165 r2, 166 r3, 167 r4, 168 r5, 169 r6, 170 r7, 171 r8, 172 r9, 173 r10, 174 r11, 175 r12, 176 r13, 177 r14, 178 r15, 179 r16, 180 r17, 181 r18, 182 r19, 183 r20, 184 r21, 185 r22, 186 r23, 187 r24, 188 r25, 189 r26, 190 r27, 191 r28, 192 r29, 193 r30, 194 r31, 195 v0, 196 v1, 197 v2, 198 v3, 199 v4, 200 v5, 201 v6, 202 v7, 203 v8, 204 v9, 205 v10, 206 v11, 207 v12, 208 v13, 209 v14, 210 v15, 211 v16, 212 v17, 213 v18, 214 v19, 215 v20, 216 v21, 217 v22, 218 v23, 219 v24, 220 v25, 221 v26, 222 v27, 223 v28, 224 v29, 225 v30, 226 v31, 227 vrsave, 228 vs0, 229 vs1, 230 vs2, 231 vs3, 232 vs4, 233 vs5, 234 vs6, 235 vs7, 236 vs8, 237 vs9, 238 vs10, 239 vs11, 240 vs12, 241 vs13, 242 vs14, 243 vs15, 244 vs16, 245 vs17, 246 vs18, 247 vs19, 248 vs20, 249 vs21, 250 vs22, 251 vs23, 252 vs24, 253 vs25, 254 vs26, 255 vs27, 256 vs28, 257 vs29, 258 vs30, 259 vs31, 260 vs32, 261 vs33, 262 vs34, 263 vs35, 264 vs36, 265 vs37, 266 vs38, 267 vs39, 268 vs40, 269 vs41, 270 vs42, 271 vs43, 272 vs44, 273 vs45, 274 vs46, 275 vs47, 276 vs48, 277 vs49, 278 vs50, 279 vs51, 280 vs52, 281 vs53, 282 vs54, 283 vs55, 284 vs56, 285 vs57, 286 vs58, 287 vs59, 288 vs60, 289 vs61, 290 vs62, 291 vs63, 292 293 // Extra registers for PPCMapping.c 294 rm, 295 ctr8, 296 lr8, 297 cr1eq, 298 } 299 300 /// PPC instruction 301 enum PpcInstructionId { 302 invalid = 0, 303 304 add, 305 addc, 306 adde, 307 addi, 308 addic, 309 addis, 310 addme, 311 addze, 312 and, 313 andc, 314 andis, 315 andi, 316 b, 317 ba, 318 bc, 319 bcctr, 320 bcctrl, 321 bcl, 322 bclr, 323 bclrl, 324 bctr, 325 bctrl, 326 bdnz, 327 bdnza, 328 bdnzl, 329 bdnzla, 330 bdnzlr, 331 bdnzlrl, 332 bdz, 333 bdza, 334 bdzl, 335 bdzla, 336 bdzlr, 337 bdzlrl, 338 bl, 339 bla, 340 blr, 341 blrl, 342 brinc, 343 cmpd, 344 cmpdi, 345 cmpld, 346 cmpldi, 347 cmplw, 348 cmplwi, 349 cmpw, 350 cmpwi, 351 cntlzd, 352 cntlzw, 353 creqv, 354 crxor, 355 crand, 356 crandc, 357 crnand, 358 crnor, 359 cror, 360 crorc, 361 dcba, 362 dcbf, 363 dcbi, 364 dcbst, 365 dcbt, 366 dcbtst, 367 dcbz, 368 dcbzl, 369 dccci, 370 divd, 371 divdu, 372 divw, 373 divwu, 374 dss, 375 dssall, 376 dst, 377 dstst, 378 dststt, 379 dstt, 380 eieio, 381 eqv, 382 evabs, 383 evaddiw, 384 evaddsmiaaw, 385 evaddssiaaw, 386 evaddumiaaw, 387 evaddusiaaw, 388 evaddw, 389 evand, 390 evandc, 391 evcmpeq, 392 evcmpgts, 393 evcmpgtu, 394 evcmplts, 395 evcmpltu, 396 evcntlsw, 397 evcntlzw, 398 evdivws, 399 evdivwu, 400 eveqv, 401 evextsb, 402 evextsh, 403 evldd, 404 evlddx, 405 evldh, 406 evldhx, 407 evldw, 408 evldwx, 409 evlhhesplat, 410 evlhhesplatx, 411 evlhhossplat, 412 evlhhossplatx, 413 evlhhousplat, 414 evlhhousplatx, 415 evlwhe, 416 evlwhex, 417 evlwhos, 418 evlwhosx, 419 evlwhou, 420 evlwhoux, 421 evlwhsplat, 422 evlwhsplatx, 423 evlwwsplat, 424 evlwwsplatx, 425 evmergehi, 426 evmergehilo, 427 evmergelo, 428 evmergelohi, 429 evmhegsmfaa, 430 evmhegsmfan, 431 evmhegsmiaa, 432 evmhegsmian, 433 evmhegumiaa, 434 evmhegumian, 435 evmhesmf, 436 evmhesmfa, 437 evmhesmfaaw, 438 evmhesmfanw, 439 evmhesmi, 440 evmhesmia, 441 evmhesmiaaw, 442 evmhesmianw, 443 evmhessf, 444 evmhessfa, 445 evmhessfaaw, 446 evmhessfanw, 447 evmhessiaaw, 448 evmhessianw, 449 evmheumi, 450 evmheumia, 451 evmheumiaaw, 452 evmheumianw, 453 evmheusiaaw, 454 evmheusianw, 455 evmhogsmfaa, 456 evmhogsmfan, 457 evmhogsmiaa, 458 evmhogsmian, 459 evmhogumiaa, 460 evmhogumian, 461 evmhosmf, 462 evmhosmfa, 463 evmhosmfaaw, 464 evmhosmfanw, 465 evmhosmi, 466 evmhosmia, 467 evmhosmiaaw, 468 evmhosmianw, 469 evmhossf, 470 evmhossfa, 471 evmhossfaaw, 472 evmhossfanw, 473 evmhossiaaw, 474 evmhossianw, 475 evmhoumi, 476 evmhoumia, 477 evmhoumiaaw, 478 evmhoumianw, 479 evmhousiaaw, 480 evmhousianw, 481 evmra, 482 evmwhsmf, 483 evmwhsmfa, 484 evmwhsmi, 485 evmwhsmia, 486 evmwhssf, 487 evmwhssfa, 488 evmwhumi, 489 evmwhumia, 490 evmwlsmiaaw, 491 evmwlsmianw, 492 evmwlssiaaw, 493 evmwlssianw, 494 evmwlumi, 495 evmwlumia, 496 evmwlumiaaw, 497 evmwlumianw, 498 evmwlusiaaw, 499 evmwlusianw, 500 evmwsmf, 501 evmwsmfa, 502 evmwsmfaa, 503 evmwsmfan, 504 evmwsmi, 505 evmwsmia, 506 evmwsmiaa, 507 evmwsmian, 508 evmwssf, 509 evmwssfa, 510 evmwssfaa, 511 evmwssfan, 512 evmwumi, 513 evmwumia, 514 evmwumiaa, 515 evmwumian, 516 evnand, 517 evneg, 518 evnor, 519 evor, 520 evorc, 521 evrlw, 522 evrlwi, 523 evrndw, 524 evslw, 525 evslwi, 526 evsplatfi, 527 evsplati, 528 evsrwis, 529 evsrwiu, 530 evsrws, 531 evsrwu, 532 evstdd, 533 evstddx, 534 evstdh, 535 evstdhx, 536 evstdw, 537 evstdwx, 538 evstwhe, 539 evstwhex, 540 evstwho, 541 evstwhox, 542 evstwwe, 543 evstwwex, 544 evstwwo, 545 evstwwox, 546 evsubfsmiaaw, 547 evsubfssiaaw, 548 evsubfumiaaw, 549 evsubfusiaaw, 550 evsubfw, 551 evsubifw, 552 evxor, 553 extsb, 554 extsh, 555 extsw, 556 fabs, 557 fadd, 558 fadds, 559 fcfid, 560 fcfids, 561 fcfidu, 562 fcfidus, 563 fcmpu, 564 fcpsgn, 565 fctid, 566 fctiduz, 567 fctidz, 568 fctiw, 569 fctiwuz, 570 fctiwz, 571 fdiv, 572 fdivs, 573 fmadd, 574 fmadds, 575 fmr, 576 fmsub, 577 fmsubs, 578 fmul, 579 fmuls, 580 fnabs, 581 fneg, 582 fnmadd, 583 fnmadds, 584 fnmsub, 585 fnmsubs, 586 fre, 587 fres, 588 frim, 589 frin, 590 frip, 591 friz, 592 frsp, 593 frsqrte, 594 frsqrtes, 595 fsel, 596 fsqrt, 597 fsqrts, 598 fsub, 599 fsubs, 600 icbi, 601 iccci, 602 isel, 603 isync, 604 la, 605 lbz, 606 lbzu, 607 lbzux, 608 lbzx, 609 ld, 610 ldarx, 611 ldbrx, 612 ldu, 613 ldux, 614 ldx, 615 lfd, 616 lfdu, 617 lfdux, 618 lfdx, 619 lfiwax, 620 lfiwzx, 621 lfs, 622 lfsu, 623 lfsux, 624 lfsx, 625 lha, 626 lhau, 627 lhaux, 628 lhax, 629 lhbrx, 630 lhz, 631 lhzu, 632 lhzux, 633 lhzx, 634 li, 635 lis, 636 lmw, 637 lswi, 638 lvebx, 639 lvehx, 640 lvewx, 641 lvsl, 642 lvsr, 643 lvx, 644 lvxl, 645 lwa, 646 lwarx, 647 lwaux, 648 lwax, 649 lwbrx, 650 lwz, 651 lwzu, 652 lwzux, 653 lwzx, 654 lxsdx, 655 lxvd2x, 656 lxvdsx, 657 lxvw4x, 658 mbar, 659 mcrf, 660 mfcr, 661 mfctr, 662 mfdcr, 663 mffs, 664 mflr, 665 mfmsr, 666 mfocrf, 667 mfspr, 668 mfsr, 669 mfsrin, 670 mftb, 671 mfvscr, 672 msync, 673 mtcrf, 674 mtctr, 675 mtdcr, 676 mtfsb0, 677 mtfsb1, 678 mtfsf, 679 mtlr, 680 mtmsr, 681 mtmsrd, 682 mtocrf, 683 mtspr, 684 mtsr, 685 mtsrin, 686 mtvscr, 687 mulhd, 688 mulhdu, 689 mulhw, 690 mulhwu, 691 mulld, 692 mulli, 693 mullw, 694 nand, 695 neg, 696 nop, 697 ori, 698 nor, 699 or, 700 orc, 701 oris, 702 popcntd, 703 popcntw, 704 rfci, 705 rfdi, 706 rfi, 707 rfid, 708 rfmci, 709 rldcl, 710 rldcr, 711 rldic, 712 rldicl, 713 rldicr, 714 rldimi, 715 rlwimi, 716 rlwinm, 717 rlwnm, 718 sc, 719 slbia, 720 slbie, 721 slbmfee, 722 slbmte, 723 sld, 724 slw, 725 srad, 726 sradi, 727 sraw, 728 srawi, 729 srd, 730 srw, 731 stb, 732 stbu, 733 stbux, 734 stbx, 735 std, 736 stdbrx, 737 stdcx, 738 stdu, 739 stdux, 740 stdx, 741 stfd, 742 stfdu, 743 stfdux, 744 stfdx, 745 stfiwx, 746 stfs, 747 stfsu, 748 stfsux, 749 stfsx, 750 sth, 751 sthbrx, 752 sthu, 753 sthux, 754 sthx, 755 stmw, 756 stswi, 757 stvebx, 758 stvehx, 759 stvewx, 760 stvx, 761 stvxl, 762 stw, 763 stwbrx, 764 stwcx, 765 stwu, 766 stwux, 767 stwx, 768 stxsdx, 769 stxvd2x, 770 stxvw4x, 771 subf, 772 subfc, 773 subfe, 774 subfic, 775 subfme, 776 subfze, 777 sync, 778 td, 779 tdi, 780 tlbia, 781 tlbie, 782 tlbiel, 783 tlbivax, 784 tlbld, 785 tlbli, 786 tlbre, 787 tlbsx, 788 tlbsync, 789 tlbwe, 790 trap, 791 tw, 792 twi, 793 vaddcuw, 794 vaddfp, 795 vaddsbs, 796 vaddshs, 797 vaddsws, 798 vaddubm, 799 vaddubs, 800 vadduhm, 801 vadduhs, 802 vadduwm, 803 vadduws, 804 vand, 805 vandc, 806 vavgsb, 807 vavgsh, 808 vavgsw, 809 vavgub, 810 vavguh, 811 vavguw, 812 vcfsx, 813 vcfux, 814 vcmpbfp, 815 vcmpeqfp, 816 vcmpequb, 817 vcmpequh, 818 vcmpequw, 819 vcmpgefp, 820 vcmpgtfp, 821 vcmpgtsb, 822 vcmpgtsh, 823 vcmpgtsw, 824 vcmpgtub, 825 vcmpgtuh, 826 vcmpgtuw, 827 vctsxs, 828 vctuxs, 829 vexptefp, 830 vlogefp, 831 vmaddfp, 832 vmaxfp, 833 vmaxsb, 834 vmaxsh, 835 vmaxsw, 836 vmaxub, 837 vmaxuh, 838 vmaxuw, 839 vmhaddshs, 840 vmhraddshs, 841 vminfp, 842 vminsb, 843 vminsh, 844 vminsw, 845 vminub, 846 vminuh, 847 vminuw, 848 vmladduhm, 849 vmrghb, 850 vmrghh, 851 vmrghw, 852 vmrglb, 853 vmrglh, 854 vmrglw, 855 vmsummbm, 856 vmsumshm, 857 vmsumshs, 858 vmsumubm, 859 vmsumuhm, 860 vmsumuhs, 861 vmulesb, 862 vmulesh, 863 vmuleub, 864 vmuleuh, 865 vmulosb, 866 vmulosh, 867 vmuloub, 868 vmulouh, 869 vnmsubfp, 870 vnor, 871 vor, 872 vperm, 873 vpkpx, 874 vpkshss, 875 vpkshus, 876 vpkswss, 877 vpkswus, 878 vpkuhum, 879 vpkuhus, 880 vpkuwum, 881 vpkuwus, 882 vrefp, 883 vrfim, 884 vrfin, 885 vrfip, 886 vrfiz, 887 vrlb, 888 vrlh, 889 vrlw, 890 vrsqrtefp, 891 vsel, 892 vsl, 893 vslb, 894 vsldoi, 895 vslh, 896 vslo, 897 vslw, 898 vspltb, 899 vsplth, 900 vspltisb, 901 vspltish, 902 vspltisw, 903 vspltw, 904 vsr, 905 vsrab, 906 vsrah, 907 vsraw, 908 vsrb, 909 vsrh, 910 vsro, 911 vsrw, 912 vsubcuw, 913 vsubfp, 914 vsubsbs, 915 vsubshs, 916 vsubsws, 917 vsububm, 918 vsububs, 919 vsubuhm, 920 vsubuhs, 921 vsubuwm, 922 vsubuws, 923 vsum2sws, 924 vsum4sbs, 925 vsum4shs, 926 vsum4ubs, 927 vsumsws, 928 vupkhpx, 929 vupkhsb, 930 vupkhsh, 931 vupklpx, 932 vupklsb, 933 vupklsh, 934 vxor, 935 wait, 936 wrtee, 937 wrteei, 938 xor, 939 xori, 940 xoris, 941 xsabsdp, 942 xsadddp, 943 xscmpodp, 944 xscmpudp, 945 xscpsgndp, 946 xscvdpsp, 947 xscvdpsxds, 948 xscvdpsxws, 949 xscvdpuxds, 950 xscvdpuxws, 951 xscvspdp, 952 xscvsxddp, 953 xscvuxddp, 954 xsdivdp, 955 xsmaddadp, 956 xsmaddmdp, 957 xsmaxdp, 958 xsmindp, 959 xsmsubadp, 960 xsmsubmdp, 961 xsmuldp, 962 xsnabsdp, 963 xsnegdp, 964 xsnmaddadp, 965 xsnmaddmdp, 966 xsnmsubadp, 967 xsnmsubmdp, 968 xsrdpi, 969 xsrdpic, 970 xsrdpim, 971 xsrdpip, 972 xsrdpiz, 973 xsredp, 974 xsrsqrtedp, 975 xssqrtdp, 976 xssubdp, 977 xstdivdp, 978 xstsqrtdp, 979 xvabsdp, 980 xvabssp, 981 xvadddp, 982 xvaddsp, 983 xvcmpeqdp, 984 xvcmpeqsp, 985 xvcmpgedp, 986 xvcmpgesp, 987 xvcmpgtdp, 988 xvcmpgtsp, 989 xvcpsgndp, 990 xvcpsgnsp, 991 xvcvdpsp, 992 xvcvdpsxds, 993 xvcvdpsxws, 994 xvcvdpuxds, 995 xvcvdpuxws, 996 xvcvspdp, 997 xvcvspsxds, 998 xvcvspsxws, 999 xvcvspuxds, 1000 xvcvspuxws, 1001 xvcvsxddp, 1002 xvcvsxdsp, 1003 xvcvsxwdp, 1004 xvcvsxwsp, 1005 xvcvuxddp, 1006 xvcvuxdsp, 1007 xvcvuxwdp, 1008 xvcvuxwsp, 1009 xvdivdp, 1010 xvdivsp, 1011 xvmaddadp, 1012 xvmaddasp, 1013 xvmaddmdp, 1014 xvmaddmsp, 1015 xvmaxdp, 1016 xvmaxsp, 1017 xvmindp, 1018 xvminsp, 1019 xvmsubadp, 1020 xvmsubasp, 1021 xvmsubmdp, 1022 xvmsubmsp, 1023 xvmuldp, 1024 xvmulsp, 1025 xvnabsdp, 1026 xvnabssp, 1027 xvnegdp, 1028 xvnegsp, 1029 xvnmaddadp, 1030 xvnmaddasp, 1031 xvnmaddmdp, 1032 xvnmaddmsp, 1033 xvnmsubadp, 1034 xvnmsubasp, 1035 xvnmsubmdp, 1036 xvnmsubmsp, 1037 xvrdpi, 1038 xvrdpic, 1039 xvrdpim, 1040 xvrdpip, 1041 xvrdpiz, 1042 xvredp, 1043 xvresp, 1044 xvrspi, 1045 xvrspic, 1046 xvrspim, 1047 xvrspip, 1048 xvrspiz, 1049 xvrsqrtedp, 1050 xvrsqrtesp, 1051 xvsqrtdp, 1052 xvsqrtsp, 1053 xvsubdp, 1054 xvsubsp, 1055 xvtdivdp, 1056 xvtdivsp, 1057 xvtsqrtdp, 1058 xvtsqrtsp, 1059 xxland, 1060 xxlandc, 1061 xxlnor, 1062 xxlor, 1063 xxlxor, 1064 xxmrghw, 1065 xxmrglw, 1066 xxpermdi, 1067 xxsel, 1068 xxsldwi, 1069 xxspltw, 1070 bca, 1071 bcla, 1072 1073 // Extra & alias instructions 1074 slwi, 1075 srwi, 1076 sldi, 1077 1078 bta, 1079 crset, 1080 crnot, 1081 crmove, 1082 crclr, 1083 mfbr0, 1084 mfbr1, 1085 mfbr2, 1086 mfbr3, 1087 mfbr4, 1088 mfbr5, 1089 mfbr6, 1090 mfbr7, 1091 mfxer, 1092 mfrtcu, 1093 mfrtcl, 1094 mfdscr, 1095 mfdsisr, 1096 mfdar, 1097 mfsrr2, 1098 mfsrr3, 1099 mfcfar, 1100 mfamr, 1101 mfpid, 1102 mftblo, 1103 mftbhi, 1104 mfdbatu, 1105 mfdbatl, 1106 mfibatu, 1107 mfibatl, 1108 mfdccr, 1109 mficcr, 1110 mfdear, 1111 mfesr, 1112 mfspefscr, 1113 mftcr, 1114 mfasr, 1115 mfpvr, 1116 mftbu, 1117 mtcr, 1118 mtbr0, 1119 mtbr1, 1120 mtbr2, 1121 mtbr3, 1122 mtbr4, 1123 mtbr5, 1124 mtbr6, 1125 mtbr7, 1126 mtxer, 1127 mtdscr, 1128 mtdsisr, 1129 mtdar, 1130 mtsrr2, 1131 mtsrr3, 1132 mtcfar, 1133 mtamr, 1134 mtpid, 1135 mttbl, 1136 mttbu, 1137 mttblo, 1138 mttbhi, 1139 mtdbatu, 1140 mtdbatl, 1141 mtibatu, 1142 mtibatl, 1143 mtdccr, 1144 mticcr, 1145 mtdear, 1146 mtesr, 1147 mtspefscr, 1148 mttcr, 1149 not, 1150 mr, 1151 rotld, 1152 rotldi, 1153 clrldi, 1154 rotlwi, 1155 clrlwi, 1156 rotlw, 1157 sub, 1158 subc, 1159 lwsync, 1160 ptesync, 1161 tdlt, 1162 tdeq, 1163 tdgt, 1164 tdne, 1165 tdllt, 1166 tdlgt, 1167 tdu, 1168 tdlti, 1169 tdeqi, 1170 tdgti, 1171 tdnei, 1172 tdllti, 1173 tdlgti, 1174 tdui, 1175 tlbrehi, 1176 tlbrelo, 1177 tlbwehi, 1178 tlbwelo, 1179 twlt, 1180 tweq, 1181 twgt, 1182 twne, 1183 twllt, 1184 twlgt, 1185 twu, 1186 twlti, 1187 tweqi, 1188 twgti, 1189 twnei, 1190 twllti, 1191 twlgti, 1192 twui, 1193 waitrsv, 1194 waitimpl, 1195 xnop, 1196 xvmovdp, 1197 xvmovsp, 1198 xxspltd, 1199 xxmrghd, 1200 xxmrgld, 1201 xxswapd, 1202 bt, 1203 bf, 1204 bdnzt, 1205 bdnzf, 1206 bdzf, 1207 bdzt, 1208 bfa, 1209 bdnzta, 1210 bdnzfa, 1211 bdzta, 1212 bdzfa, 1213 btctr, 1214 bfctr, 1215 btctrl, 1216 bfctrl, 1217 btl, 1218 bfl, 1219 bdnztl, 1220 bdnzfl, 1221 bdztl, 1222 bdzfl, 1223 btla, 1224 bfla, 1225 bdnztla, 1226 bdnzfla, 1227 bdztla, 1228 bdzfla, 1229 btlr, 1230 bflr, 1231 bdnztlr, 1232 bdztlr, 1233 bdzflr, 1234 btlrl, 1235 bflrl, 1236 bdnztlrl, 1237 bdnzflrl, 1238 bdztlrl, 1239 bdzflrl, 1240 } 1241 1242 /// Group of PPC instructions 1243 enum PpcInstructionGroup { 1244 invalid = 0, // = CS_GRP_INVALID 1245 1246 // Generic groups 1247 // all jump instructions (conditional+direct+indirect jumps) 1248 jump, // = CS_GRP_JUMP 1249 1250 // Architecture-specific groups 1251 altivec = 128, 1252 mode32, 1253 mode64, 1254 booke, 1255 notbooke, 1256 spe, 1257 vsx, 1258 e500, 1259 ppc4xx, 1260 ppc6xx, 1261 }