LCOV - code coverage report
Current view: top level - build-llvm/lib/Target/XCore - XCoreGenDisassemblerTables.inc (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 130 184 70.7 %
Date: 2018-06-17 00:07:59 Functions: 4 4 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
       2             : |*                                                                            *|
       3             : |*  * XCore Disassembler                                                      *|
       4             : |*                                                                            *|
       5             : |* Automatically generated file, do not edit!                                 *|
       6             : |*                                                                            *|
       7             : \*===----------------------------------------------------------------------===*/
       8             : 
       9             : #include "llvm/MC/MCInst.h"
      10             : #include "llvm/Support/Debug.h"
      11             : #include "llvm/Support/DataTypes.h"
      12             : #include "llvm/Support/LEB128.h"
      13             : #include "llvm/Support/raw_ostream.h"
      14             : #include <assert.h>
      15             : 
      16             : namespace llvm {
      17             : 
      18             : // Helper function for extracting fields from encoded instructions.
      19             : template<typename InsnType>
      20             : static InsnType fieldFromInstruction(InsnType insn, unsigned startBit,
      21             :                                      unsigned numBits) {
      22             :     assert(startBit + numBits <= (sizeof(InsnType)*8) &&
      23             :            "Instruction field out of bounds!");
      24             :     InsnType fieldMask;
      25         723 :     if (numBits == sizeof(InsnType)*8)
      26             :       fieldMask = (InsnType)(-1LL);
      27             :     else
      28         723 :       fieldMask = (((InsnType)1 << numBits) - 1) << startBit;
      29        1422 :     return (insn & fieldMask) >> startBit;
      30             : }
      31             : 
      32             : static const uint8_t DecoderTable16[] = {
      33             : /* 0 */       MCD::OPC_ExtractField, 11, 5,  // Inst{15-11} ...
      34             : /* 3 */       MCD::OPC_FilterValue, 0, 117, 0, // Skip to: 124
      35             : /* 7 */       MCD::OPC_ExtractField, 0, 11,  // Inst{10-0} ...
      36             : /* 10 */      MCD::OPC_FilterValue, 236, 15, 4, 0, // Skip to: 19
      37             : /* 15 */      MCD::OPC_Decode, 217, 2, 0, // Opcode: WAITEU_0R
      38             : /* 19 */      MCD::OPC_FilterValue, 237, 15, 4, 0, // Skip to: 28
      39             : /* 24 */      MCD::OPC_Decode, 168, 1, 0, // Opcode: CLRE_0R
      40             : /* 28 */      MCD::OPC_FilterValue, 238, 15, 4, 0, // Skip to: 37
      41             : /* 33 */      MCD::OPC_Decode, 193, 2, 0, // Opcode: SSYNC_0r
      42             : /* 37 */      MCD::OPC_FilterValue, 239, 15, 4, 0, // Skip to: 46
      43             : /* 42 */      MCD::OPC_Decode, 200, 1, 0, // Opcode: FREET_0R
      44             : /* 46 */      MCD::OPC_FilterValue, 252, 15, 4, 0, // Skip to: 55
      45             : /* 51 */      MCD::OPC_Decode, 177, 1, 0, // Opcode: DCALL_0R
      46             : /* 55 */      MCD::OPC_FilterValue, 253, 15, 4, 0, // Skip to: 64
      47             : /* 60 */      MCD::OPC_Decode, 231, 1, 0, // Opcode: KRET_0R
      48             : /* 64 */      MCD::OPC_FilterValue, 254, 15, 4, 0, // Skip to: 73
      49             : /* 69 */      MCD::OPC_Decode, 183, 1, 0, // Opcode: DRET_0R
      50             : /* 73 */      MCD::OPC_FilterValue, 255, 15, 4, 0, // Skip to: 82
      51             : /* 78 */      MCD::OPC_Decode, 174, 2, 0, // Opcode: SETKEP_0R
      52             : /* 82 */      MCD::OPC_ExtractField, 4, 7,  // Inst{10-4} ...
      53             : /* 85 */      MCD::OPC_FilterValue, 126, 4, 0, // Skip to: 93
      54             : /* 89 */      MCD::OPC_Decode, 186, 1, 1, // Opcode: EDU_1r
      55             : /* 93 */      MCD::OPC_FilterValue, 127, 4, 0, // Skip to: 101
      56             : /* 97 */      MCD::OPC_Decode, 189, 1, 1, // Opcode: EEU_1r
      57             : /* 101 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
      58             : /* 104 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 112
      59             : /* 108 */     MCD::OPC_Decode, 218, 1, 2, // Opcode: INITPC_2r
      60             : /* 112 */     MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 120
      61             : /* 116 */     MCD::OPC_Decode, 212, 1, 2, // Opcode: GETST_2r
      62             : /* 120 */     MCD::OPC_Decode, 204, 2, 3, // Opcode: STW_2rus
      63             : /* 124 */     MCD::OPC_FilterValue, 1, 117, 0, // Skip to: 245
      64             : /* 128 */     MCD::OPC_ExtractField, 0, 11,  // Inst{10-0} ...
      65             : /* 131 */     MCD::OPC_FilterValue, 236, 15, 4, 0, // Skip to: 140
      66             : /* 136 */     MCD::OPC_Decode, 129, 2, 0, // Opcode: LDSPC_0R
      67             : /* 140 */     MCD::OPC_FilterValue, 237, 15, 4, 0, // Skip to: 149
      68             : /* 145 */     MCD::OPC_Decode, 198, 2, 0, // Opcode: STSPC_0R
      69             : /* 149 */     MCD::OPC_FilterValue, 238, 15, 4, 0, // Skip to: 158
      70             : /* 154 */     MCD::OPC_Decode, 130, 2, 0, // Opcode: LDSSR_0R
      71             : /* 158 */     MCD::OPC_FilterValue, 239, 15, 4, 0, // Skip to: 167
      72             : /* 163 */     MCD::OPC_Decode, 199, 2, 0, // Opcode: STSSR_0R
      73             : /* 167 */     MCD::OPC_FilterValue, 252, 15, 4, 0, // Skip to: 176
      74             : /* 172 */     MCD::OPC_Decode, 197, 2, 0, // Opcode: STSED_0R
      75             : /* 176 */     MCD::OPC_FilterValue, 253, 15, 4, 0, // Skip to: 185
      76             : /* 181 */     MCD::OPC_Decode, 196, 2, 0, // Opcode: STET_0R
      77             : /* 185 */     MCD::OPC_FilterValue, 254, 15, 4, 0, // Skip to: 194
      78             : /* 190 */     MCD::OPC_Decode, 202, 1, 0, // Opcode: GETED_0R
      79             : /* 194 */     MCD::OPC_FilterValue, 255, 15, 4, 0, // Skip to: 203
      80             : /* 199 */     MCD::OPC_Decode, 203, 1, 0, // Opcode: GETET_0R
      81             : /* 203 */     MCD::OPC_ExtractField, 4, 7,  // Inst{10-4} ...
      82             : /* 206 */     MCD::OPC_FilterValue, 126, 4, 0, // Skip to: 214
      83             : /* 210 */     MCD::OPC_Decode, 216, 2, 1, // Opcode: WAITET_1R
      84             : /* 214 */     MCD::OPC_FilterValue, 127, 4, 0, // Skip to: 222
      85             : /* 218 */     MCD::OPC_Decode, 215, 2, 1, // Opcode: WAITEF_1R
      86             : /* 222 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
      87             : /* 225 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 233
      88             : /* 229 */     MCD::OPC_Decode, 216, 1, 2, // Opcode: INITDP_2r
      89             : /* 233 */     MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 241
      90             : /* 237 */     MCD::OPC_Decode, 159, 2, 4, // Opcode: OUTT_2r
      91             : /* 241 */     MCD::OPC_Decode, 139, 2, 3, // Opcode: LDW_2rus
      92             : /* 245 */     MCD::OPC_FilterValue, 2, 108, 0, // Skip to: 357
      93             : /* 249 */     MCD::OPC_ExtractField, 0, 11,  // Inst{10-0} ...
      94             : /* 252 */     MCD::OPC_FilterValue, 236, 15, 4, 0, // Skip to: 261
      95             : /* 257 */     MCD::OPC_Decode, 178, 1, 0, // Opcode: DENTSP_0R
      96             : /* 261 */     MCD::OPC_FilterValue, 237, 15, 4, 0, // Skip to: 270
      97             : /* 266 */     MCD::OPC_Decode, 182, 1, 0, // Opcode: DRESTSP_0R
      98             : /* 270 */     MCD::OPC_FilterValue, 238, 15, 4, 0, // Skip to: 279
      99             : /* 275 */     MCD::OPC_Decode, 204, 1, 0, // Opcode: GETID_0R
     100             : /* 279 */     MCD::OPC_FilterValue, 239, 15, 4, 0, // Skip to: 288
     101             : /* 284 */     MCD::OPC_Decode, 205, 1, 0, // Opcode: GETKEP_0R
     102             : /* 288 */     MCD::OPC_FilterValue, 252, 15, 4, 0, // Skip to: 297
     103             : /* 293 */     MCD::OPC_Decode, 206, 1, 0, // Opcode: GETKSP_0R
     104             : /* 297 */     MCD::OPC_FilterValue, 253, 15, 4, 0, // Skip to: 306
     105             : /* 302 */     MCD::OPC_Decode, 128, 2, 0, // Opcode: LDSED_0R
     106             : /* 306 */     MCD::OPC_FilterValue, 254, 15, 4, 0, // Skip to: 315
     107             : /* 311 */     MCD::OPC_Decode, 254, 1, 0, // Opcode: LDET_0R
     108             : /* 315 */     MCD::OPC_ExtractField, 4, 7,  // Inst{10-4} ...
     109             : /* 318 */     MCD::OPC_FilterValue, 126, 4, 0, // Skip to: 326
     110             : /* 322 */     MCD::OPC_Decode, 199, 1, 1, // Opcode: FREER_1r
     111             : /* 326 */     MCD::OPC_FilterValue, 127, 4, 0, // Skip to: 334
     112             : /* 330 */     MCD::OPC_Decode, 147, 2, 1, // Opcode: MJOIN_1r
     113             : /* 334 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     114             : /* 337 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 345
     115             : /* 341 */     MCD::OPC_Decode, 219, 1, 2, // Opcode: INITSP_2r
     116             : /* 345 */     MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 353
     117             : /* 349 */     MCD::OPC_Decode, 172, 2, 4, // Opcode: SETD_2r
     118             : /* 353 */     MCD::OPC_Decode, 136, 1, 5, // Opcode: ADD_3r
     119             : /* 357 */     MCD::OPC_FilterValue, 3, 42, 0, // Skip to: 403
     120             : /* 361 */     MCD::OPC_ExtractField, 4, 7,  // Inst{10-4} ...
     121             : /* 364 */     MCD::OPC_FilterValue, 126, 4, 0, // Skip to: 372
     122             : /* 368 */     MCD::OPC_Decode, 214, 2, 1, // Opcode: TSTART_1R
     123             : /* 372 */     MCD::OPC_FilterValue, 127, 4, 0, // Skip to: 380
     124             : /* 376 */     MCD::OPC_Decode, 150, 2, 1, // Opcode: MSYNC_1r
     125             : /* 380 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     126             : /* 383 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 391
     127             : /* 387 */     MCD::OPC_Decode, 215, 1, 2, // Opcode: INITCP_2r
     128             : /* 391 */     MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 399
     129             : /* 395 */     MCD::OPC_Decode, 212, 2, 6, // Opcode: TSETMR_2r
     130             : /* 399 */     MCD::OPC_Decode, 207, 2, 5, // Opcode: SUB_3r
     131             : /* 403 */     MCD::OPC_FilterValue, 4, 33, 0, // Skip to: 440
     132             : /* 407 */     MCD::OPC_ExtractField, 4, 7,  // Inst{10-4} ...
     133             : /* 410 */     MCD::OPC_FilterValue, 126, 4, 0, // Skip to: 418
     134             : /* 414 */     MCD::OPC_Decode, 147, 1, 1, // Opcode: BLA_1r
     135             : /* 418 */     MCD::OPC_FilterValue, 127, 4, 0, // Skip to: 426
     136             : /* 422 */     MCD::OPC_Decode, 141, 1, 1, // Opcode: BAU_1r
     137             : /* 426 */     MCD::OPC_CheckField, 4, 1, 1, 4, 0, // Skip to: 436
     138             : /* 432 */     MCD::OPC_Decode, 188, 1, 2, // Opcode: EET_2r
     139             : /* 436 */     MCD::OPC_Decode, 190, 2, 5, // Opcode: SHL_3r
     140             : /* 440 */     MCD::OPC_FilterValue, 5, 42, 0, // Skip to: 486
     141             : /* 444 */     MCD::OPC_ExtractField, 4, 7,  // Inst{10-4} ...
     142             : /* 447 */     MCD::OPC_FilterValue, 126, 4, 0, // Skip to: 455
     143             : /* 451 */     MCD::OPC_Decode, 164, 1, 1, // Opcode: BRU_1r
     144             : /* 455 */     MCD::OPC_FilterValue, 127, 4, 0, // Skip to: 463
     145             : /* 459 */     MCD::OPC_Decode, 180, 2, 1, // Opcode: SETSP_1r
     146             : /* 463 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     147             : /* 466 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 474
     148             : /* 470 */     MCD::OPC_Decode, 137, 1, 7, // Opcode: ANDNOT_2r
     149             : /* 474 */     MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 482
     150             : /* 478 */     MCD::OPC_Decode, 187, 1, 2, // Opcode: EEF_2r
     151             : /* 482 */     MCD::OPC_Decode, 192, 2, 5, // Opcode: SHR_3r
     152             : /* 486 */     MCD::OPC_FilterValue, 6, 42, 0, // Skip to: 532
     153             : /* 490 */     MCD::OPC_ExtractField, 4, 7,  // Inst{10-4} ...
     154             : /* 493 */     MCD::OPC_FilterValue, 126, 4, 0, // Skip to: 501
     155             : /* 497 */     MCD::OPC_Decode, 171, 2, 1, // Opcode: SETDP_1r
     156             : /* 501 */     MCD::OPC_FilterValue, 127, 4, 0, // Skip to: 509
     157             : /* 505 */     MCD::OPC_Decode, 167, 2, 1, // Opcode: SETCP_1r
     158             : /* 509 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     159             : /* 512 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 520
     160             : /* 516 */     MCD::OPC_Decode, 187, 2, 7, // Opcode: SEXT_2r
     161             : /* 520 */     MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 528
     162             : /* 524 */     MCD::OPC_Decode, 188, 2, 8, // Opcode: SEXT_rus
     163             : /* 528 */     MCD::OPC_Decode, 194, 1, 5, // Opcode: EQ_3r
     164             : /* 532 */     MCD::OPC_FilterValue, 7, 42, 0, // Skip to: 578
     165             : /* 536 */     MCD::OPC_ExtractField, 4, 7,  // Inst{10-4} ...
     166             : /* 539 */     MCD::OPC_FilterValue, 126, 4, 0, // Skip to: 547
     167             : /* 543 */     MCD::OPC_Decode, 179, 1, 1, // Opcode: DGETREG_1r
     168             : /* 547 */     MCD::OPC_FilterValue, 127, 4, 0, // Skip to: 555
     169             : /* 551 */     MCD::OPC_Decode, 173, 2, 1, // Opcode: SETEV_1r
     170             : /* 555 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     171             : /* 558 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 566
     172             : /* 562 */     MCD::OPC_Decode, 213, 1, 2, // Opcode: GETTS_2r
     173             : /* 566 */     MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 574
     174             : /* 570 */     MCD::OPC_Decode, 178, 2, 4, // Opcode: SETPT_2r
     175             : /* 574 */     MCD::OPC_Decode, 138, 1, 5, // Opcode: AND_3r
     176             : /* 578 */     MCD::OPC_FilterValue, 8, 42, 0, // Skip to: 624
     177             : /* 582 */     MCD::OPC_ExtractField, 4, 7,  // Inst{10-4} ...
     178             : /* 585 */     MCD::OPC_FilterValue, 126, 4, 0, // Skip to: 593
     179             : /* 589 */     MCD::OPC_Decode, 224, 1, 1, // Opcode: KCALL_1r
     180             : /* 593 */     MCD::OPC_FilterValue, 127, 4, 0, // Skip to: 601
     181             : /* 597 */     MCD::OPC_Decode, 186, 2, 1, // Opcode: SETV_1r
     182             : /* 601 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     183             : /* 604 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 612
     184             : /* 608 */     MCD::OPC_Decode, 219, 2, 7, // Opcode: ZEXT_2r
     185             : /* 612 */     MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 620
     186             : /* 616 */     MCD::OPC_Decode, 220, 2, 8, // Opcode: ZEXT_rus
     187             : /* 620 */     MCD::OPC_Decode, 154, 2, 5, // Opcode: OR_3r
     188             : /* 624 */     MCD::OPC_FilterValue, 9, 42, 0, // Skip to: 670
     189             : /* 628 */     MCD::OPC_ExtractField, 4, 7,  // Inst{10-4} ...
     190             : /* 631 */     MCD::OPC_FilterValue, 126, 4, 0, // Skip to: 639
     191             : /* 635 */     MCD::OPC_Decode, 184, 1, 1, // Opcode: ECALLF_1r
     192             : /* 639 */     MCD::OPC_FilterValue, 127, 4, 0, // Skip to: 647
     193             : /* 643 */     MCD::OPC_Decode, 185, 1, 1, // Opcode: ECALLT_1r
     194             : /* 647 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     195             : /* 650 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 658
     196             : /* 654 */     MCD::OPC_Decode, 155, 2, 2, // Opcode: OUTCT_2r
     197             : /* 658 */     MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 666
     198             : /* 662 */     MCD::OPC_Decode, 156, 2, 9, // Opcode: OUTCT_rus
     199             : /* 666 */     MCD::OPC_Decode, 140, 2, 5, // Opcode: LDW_3r
     200             : /* 670 */     MCD::OPC_FilterValue, 10, 19, 0, // Skip to: 693
     201             : /* 674 */     MCD::OPC_ExtractField, 10, 1,  // Inst{10} ...
     202             : /* 677 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 685
     203             : /* 681 */     MCD::OPC_Decode, 201, 2, 10, // Opcode: STWDP_ru6
     204             : /* 685 */     MCD::OPC_FilterValue, 1, 84, 2, // Skip to: 1285
     205             : /* 689 */     MCD::OPC_Decode, 203, 2, 10, // Opcode: STWSP_ru6
     206             : /* 693 */     MCD::OPC_FilterValue, 11, 19, 0, // Skip to: 716
     207             : /* 697 */     MCD::OPC_ExtractField, 10, 1,  // Inst{10} ...
     208             : /* 700 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 708
     209             : /* 704 */     MCD::OPC_Decode, 136, 2, 10, // Opcode: LDWDP_ru6
     210             : /* 708 */     MCD::OPC_FilterValue, 1, 61, 2, // Skip to: 1285
     211             : /* 712 */     MCD::OPC_Decode, 138, 2, 10, // Opcode: LDWSP_ru6
     212             : /* 716 */     MCD::OPC_FilterValue, 12, 19, 0, // Skip to: 739
     213             : /* 720 */     MCD::OPC_ExtractField, 10, 1,  // Inst{10} ...
     214             : /* 723 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 731
     215             : /* 727 */     MCD::OPC_Decode, 247, 1, 10, // Opcode: LDAWDP_ru6
     216             : /* 731 */     MCD::OPC_FilterValue, 1, 38, 2, // Skip to: 1285
     217             : /* 735 */     MCD::OPC_Decode, 251, 1, 10, // Opcode: LDAWSP_ru6
     218             : /* 739 */     MCD::OPC_FilterValue, 13, 19, 0, // Skip to: 762
     219             : /* 743 */     MCD::OPC_ExtractField, 10, 1,  // Inst{10} ...
     220             : /* 746 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 754
     221             : /* 750 */     MCD::OPC_Decode, 253, 1, 10, // Opcode: LDC_ru6
     222             : /* 754 */     MCD::OPC_FilterValue, 1, 15, 2, // Skip to: 1285
     223             : /* 758 */     MCD::OPC_Decode, 133, 2, 10, // Opcode: LDWCP_ru6
     224             : /* 762 */     MCD::OPC_FilterValue, 14, 89, 0, // Skip to: 855
     225             : /* 766 */     MCD::OPC_ExtractField, 10, 1,  // Inst{10} ...
     226             : /* 769 */     MCD::OPC_FilterValue, 0, 39, 0, // Skip to: 812
     227             : /* 773 */     MCD::OPC_ExtractField, 6, 4,  // Inst{9-6} ...
     228             : /* 776 */     MCD::OPC_FilterValue, 12, 4, 0, // Skip to: 784
     229             : /* 780 */     MCD::OPC_Decode, 163, 1, 11, // Opcode: BRFU_u6
     230             : /* 784 */     MCD::OPC_FilterValue, 13, 4, 0, // Skip to: 792
     231             : /* 788 */     MCD::OPC_Decode, 146, 1, 11, // Opcode: BLAT_u6
     232             : /* 792 */     MCD::OPC_FilterValue, 14, 4, 0, // Skip to: 800
     233             : /* 796 */     MCD::OPC_Decode, 196, 1, 11, // Opcode: EXTDP_u6
     234             : /* 800 */     MCD::OPC_FilterValue, 15, 4, 0, // Skip to: 808
     235             : /* 804 */     MCD::OPC_Decode, 226, 1, 11, // Opcode: KCALL_u6
     236             : /* 808 */     MCD::OPC_Decode, 161, 1, 12, // Opcode: BRFT_ru6
     237             : /* 812 */     MCD::OPC_FilterValue, 1, 213, 1, // Skip to: 1285
     238             : /* 816 */     MCD::OPC_ExtractField, 6, 4,  // Inst{9-6} ...
     239             : /* 819 */     MCD::OPC_FilterValue, 12, 4, 0, // Skip to: 827
     240             : /* 823 */     MCD::OPC_Decode, 157, 1, 13, // Opcode: BRBU_u6
     241             : /* 827 */     MCD::OPC_FilterValue, 13, 4, 0, // Skip to: 835
     242             : /* 831 */     MCD::OPC_Decode, 192, 1, 11, // Opcode: ENTSP_u6
     243             : /* 835 */     MCD::OPC_FilterValue, 14, 4, 0, // Skip to: 843
     244             : /* 839 */     MCD::OPC_Decode, 198, 1, 11, // Opcode: EXTSP_u6
     245             : /* 843 */     MCD::OPC_FilterValue, 15, 4, 0, // Skip to: 851
     246             : /* 847 */     MCD::OPC_Decode, 165, 2, 11, // Opcode: RETSP_u6
     247             : /* 851 */     MCD::OPC_Decode, 155, 1, 14, // Opcode: BRBT_ru6
     248             : /* 855 */     MCD::OPC_FilterValue, 15, 73, 0, // Skip to: 932
     249             : /* 859 */     MCD::OPC_ExtractField, 10, 1,  // Inst{10} ...
     250             : /* 862 */     MCD::OPC_FilterValue, 0, 39, 0, // Skip to: 905
     251             : /* 866 */     MCD::OPC_ExtractField, 6, 4,  // Inst{9-6} ...
     252             : /* 869 */     MCD::OPC_FilterValue, 12, 4, 0, // Skip to: 877
     253             : /* 873 */     MCD::OPC_Decode, 173, 1, 11, // Opcode: CLRSR_u6
     254             : /* 877 */     MCD::OPC_FilterValue, 13, 4, 0, // Skip to: 885
     255             : /* 881 */     MCD::OPC_Decode, 184, 2, 11, // Opcode: SETSR_u6
     256             : /* 885 */     MCD::OPC_FilterValue, 14, 4, 0, // Skip to: 893
     257             : /* 889 */     MCD::OPC_Decode, 228, 1, 11, // Opcode: KENTSP_u6
     258             : /* 893 */     MCD::OPC_FilterValue, 15, 4, 0, // Skip to: 901
     259             : /* 897 */     MCD::OPC_Decode, 230, 1, 11, // Opcode: KRESTSP_u6
     260             : /* 901 */     MCD::OPC_Decode, 159, 1, 12, // Opcode: BRFF_ru6
     261             : /* 905 */     MCD::OPC_FilterValue, 1, 120, 1, // Skip to: 1285
     262             : /* 909 */     MCD::OPC_ExtractField, 6, 4,  // Inst{9-6} ...
     263             : /* 912 */     MCD::OPC_FilterValue, 12, 4, 0, // Skip to: 920
     264             : /* 916 */     MCD::OPC_Decode, 211, 1, 11, // Opcode: GETSR_u6
     265             : /* 920 */     MCD::OPC_FilterValue, 13, 4, 0, // Skip to: 928
     266             : /* 924 */     MCD::OPC_Decode, 245, 1, 11, // Opcode: LDAWCP_u6
     267             : /* 928 */     MCD::OPC_Decode, 153, 1, 14, // Opcode: BRBF_ru6
     268             : /* 932 */     MCD::OPC_FilterValue, 16, 42, 0, // Skip to: 978
     269             : /* 936 */     MCD::OPC_ExtractField, 4, 7,  // Inst{10-4} ...
     270             : /* 939 */     MCD::OPC_FilterValue, 126, 4, 0, // Skip to: 947
     271             : /* 943 */     MCD::OPC_Decode, 169, 1, 1, // Opcode: CLRPT_1R
     272             : /* 947 */     MCD::OPC_FilterValue, 127, 4, 0, // Skip to: 955
     273             : /* 951 */     MCD::OPC_Decode, 208, 2, 1, // Opcode: SYNCR_1r
     274             : /* 955 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     275             : /* 958 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 966
     276             : /* 962 */     MCD::OPC_Decode, 209, 1, 9, // Opcode: GETR_rus
     277             : /* 966 */     MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 974
     278             : /* 970 */     MCD::OPC_Decode, 214, 1, 2, // Opcode: INCT_2r
     279             : /* 974 */     MCD::OPC_Decode, 233, 1, 5, // Opcode: LD16S_3r
     280             : /* 978 */     MCD::OPC_FilterValue, 17, 23, 0, // Skip to: 1005
     281             : /* 982 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     282             : /* 985 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 993
     283             : /* 989 */     MCD::OPC_Decode, 153, 2, 2, // Opcode: NOT
     284             : /* 993 */     MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 1001
     285             : /* 997 */     MCD::OPC_Decode, 222, 1, 2, // Opcode: INT_2r
     286             : /* 1001 */    MCD::OPC_Decode, 234, 1, 5, // Opcode: LD8U_3r
     287             : /* 1005 */    MCD::OPC_FilterValue, 18, 23, 0, // Skip to: 1032
     288             : /* 1009 */    MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     289             : /* 1012 */    MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 1020
     290             : /* 1016 */    MCD::OPC_Decode, 152, 2, 2, // Opcode: NEG
     291             : /* 1020 */    MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 1028
     292             : /* 1024 */    MCD::OPC_Decode, 190, 1, 2, // Opcode: ENDIN_2r
     293             : /* 1028 */    MCD::OPC_Decode, 135, 1, 3, // Opcode: ADD_2rus
     294             : /* 1032 */    MCD::OPC_FilterValue, 19, 4, 0, // Skip to: 1040
     295             : /* 1036 */    MCD::OPC_Decode, 206, 2, 3, // Opcode: SUB_2rus
     296             : /* 1040 */    MCD::OPC_FilterValue, 20, 23, 0, // Skip to: 1067
     297             : /* 1044 */    MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     298             : /* 1047 */    MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 1055
     299             : /* 1051 */    MCD::OPC_Decode, 148, 2, 2, // Opcode: MKMSK_2r
     300             : /* 1055 */    MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 1063
     301             : /* 1059 */    MCD::OPC_Decode, 149, 2, 15, // Opcode: MKMSK_rus
     302             : /* 1063 */    MCD::OPC_Decode, 189, 2, 16, // Opcode: SHL_2rus
     303             : /* 1067 */    MCD::OPC_FilterValue, 21, 23, 0, // Skip to: 1094
     304             : /* 1071 */    MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     305             : /* 1074 */    MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 1082
     306             : /* 1078 */    MCD::OPC_Decode, 160, 2, 4, // Opcode: OUT_2r
     307             : /* 1082 */    MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 1090
     308             : /* 1086 */    MCD::OPC_Decode, 158, 2, 7, // Opcode: OUTSHR_2r
     309             : /* 1090 */    MCD::OPC_Decode, 191, 2, 16, // Opcode: SHR_2rus
     310             : /* 1094 */    MCD::OPC_FilterValue, 22, 23, 0, // Skip to: 1121
     311             : /* 1098 */    MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     312             : /* 1101 */    MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 1109
     313             : /* 1105 */    MCD::OPC_Decode, 223, 1, 2, // Opcode: IN_2r
     314             : /* 1109 */    MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 1117
     315             : /* 1113 */    MCD::OPC_Decode, 221, 1, 7, // Opcode: INSHR_2r
     316             : /* 1117 */    MCD::OPC_Decode, 193, 1, 3, // Opcode: EQ_2rus
     317             : /* 1121 */    MCD::OPC_FilterValue, 23, 23, 0, // Skip to: 1148
     318             : /* 1125 */    MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     319             : /* 1128 */    MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 1136
     320             : /* 1132 */    MCD::OPC_Decode, 161, 2, 2, // Opcode: PEEK_2r
     321             : /* 1136 */    MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 1144
     322             : /* 1140 */    MCD::OPC_Decode, 209, 2, 2, // Opcode: TESTCT_2r
     323             : /* 1144 */    MCD::OPC_Decode, 213, 2, 17, // Opcode: TSETR_3r
     324             : /* 1148 */    MCD::OPC_FilterValue, 24, 23, 0, // Skip to: 1175
     325             : /* 1152 */    MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     326             : /* 1155 */    MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 1163
     327             : /* 1159 */    MCD::OPC_Decode, 176, 2, 4, // Opcode: SETPSC_2r
     328             : /* 1163 */    MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 1171
     329             : /* 1167 */    MCD::OPC_Decode, 211, 2, 2, // Opcode: TESTWCT_2r
     330             : /* 1171 */    MCD::OPC_Decode, 142, 2, 5, // Opcode: LSS_3r
     331             : /* 1175 */    MCD::OPC_FilterValue, 25, 23, 0, // Skip to: 1202
     332             : /* 1179 */    MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     333             : /* 1182 */    MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 1190
     334             : /* 1186 */    MCD::OPC_Decode, 166, 1, 2, // Opcode: CHKCT_2r
     335             : /* 1190 */    MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 1198
     336             : /* 1194 */    MCD::OPC_Decode, 167, 1, 15, // Opcode: CHKCT_rus
     337             : /* 1198 */    MCD::OPC_Decode, 144, 2, 5, // Opcode: LSU_3r
     338             : /* 1202 */    MCD::OPC_FilterValue, 26, 19, 0, // Skip to: 1225
     339             : /* 1206 */    MCD::OPC_ExtractField, 10, 1,  // Inst{10} ...
     340             : /* 1209 */    MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 1217
     341             : /* 1213 */    MCD::OPC_Decode, 151, 1, 18, // Opcode: BLRF_u10
     342             : /* 1217 */    MCD::OPC_FilterValue, 1, 64, 0, // Skip to: 1285
     343             : /* 1221 */    MCD::OPC_Decode, 149, 1, 19, // Opcode: BLRB_u10
     344             : /* 1225 */    MCD::OPC_FilterValue, 27, 19, 0, // Skip to: 1248
     345             : /* 1229 */    MCD::OPC_ExtractField, 10, 1,  // Inst{10} ...
     346             : /* 1232 */    MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 1240
     347             : /* 1236 */    MCD::OPC_Decode, 241, 1, 18, // Opcode: LDAPF_u10
     348             : /* 1240 */    MCD::OPC_FilterValue, 1, 41, 0, // Skip to: 1285
     349             : /* 1244 */    MCD::OPC_Decode, 238, 1, 19, // Opcode: LDAPB_u10
     350             : /* 1248 */    MCD::OPC_FilterValue, 28, 19, 0, // Skip to: 1271
     351             : /* 1252 */    MCD::OPC_ExtractField, 10, 1,  // Inst{10} ...
     352             : /* 1255 */    MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 1263
     353             : /* 1259 */    MCD::OPC_Decode, 144, 1, 18, // Opcode: BLACP_u10
     354             : /* 1263 */    MCD::OPC_FilterValue, 1, 18, 0, // Skip to: 1285
     355             : /* 1267 */    MCD::OPC_Decode, 134, 2, 18, // Opcode: LDWCP_u10
     356             : /* 1271 */    MCD::OPC_FilterValue, 29, 10, 0, // Skip to: 1285
     357             : /* 1275 */    MCD::OPC_CheckField, 10, 1, 0, 4, 0, // Skip to: 1285
     358             : /* 1281 */    MCD::OPC_Decode, 170, 2, 12, // Opcode: SETC_ru6
     359             : /* 1285 */    MCD::OPC_Fail,
     360             :   0
     361             : };
     362             : 
     363             : static const uint8_t DecoderTable32[] = {
     364             : /* 0 */       MCD::OPC_ExtractField, 27, 5,  // Inst{31-27} ...
     365             : /* 3 */       MCD::OPC_FilterValue, 0, 93, 0, // Skip to: 100
     366             : /* 7 */       MCD::OPC_ExtractField, 11, 5,  // Inst{15-11} ...
     367             : /* 10 */      MCD::OPC_FilterValue, 31, 249, 3, // Skip to: 1031
     368             : /* 14 */      MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     369             : /* 17 */      MCD::OPC_FilterValue, 0, 11, 0, // Skip to: 32
     370             : /* 21 */      MCD::OPC_CheckField, 16, 11, 236, 15, 19, 0, // Skip to: 47
     371             : /* 28 */      MCD::OPC_Decode, 142, 1, 20, // Opcode: BITREV_l2r
     372             : /* 32 */      MCD::OPC_FilterValue, 1, 11, 0, // Skip to: 47
     373             : /* 36 */      MCD::OPC_CheckField, 16, 11, 236, 15, 4, 0, // Skip to: 47
     374             : /* 43 */      MCD::OPC_Decode, 165, 1, 20, // Opcode: BYTEREV_l2r
     375             : /* 47 */      MCD::OPC_CheckField, 16, 11, 236, 15, 4, 0, // Skip to: 58
     376             : /* 54 */      MCD::OPC_Decode, 205, 2, 21, // Opcode: STW_l3r
     377             : /* 58 */      MCD::OPC_ExtractField, 20, 7,  // Inst{26-20} ...
     378             : /* 61 */      MCD::OPC_FilterValue, 126, 4, 0, // Skip to: 69
     379             : /* 65 */      MCD::OPC_Decode, 175, 1, 22, // Opcode: CRC8_l4r
     380             : /* 69 */      MCD::OPC_FilterValue, 127, 4, 0, // Skip to: 77
     381             : /* 73 */      MCD::OPC_Decode, 146, 2, 23, // Opcode: MACCU_l4r
     382             : /* 77 */      MCD::OPC_ExtractField, 20, 1,  // Inst{20} ...
     383             : /* 80 */      MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 88
     384             : /* 84 */      MCD::OPC_Decode, 255, 1, 24, // Opcode: LDIVU_l5r
     385             : /* 88 */      MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 96
     386             : /* 92 */      MCD::OPC_Decode, 232, 1, 24, // Opcode: LADD_l5r
     387             : /* 96 */      MCD::OPC_Decode, 141, 2, 25, // Opcode: LMUL_l6r
     388             : /* 100 */     MCD::OPC_FilterValue, 1, 87, 0, // Skip to: 191
     389             : /* 104 */     MCD::OPC_ExtractField, 11, 5,  // Inst{15-11} ...
     390             : /* 107 */     MCD::OPC_FilterValue, 31, 152, 3, // Skip to: 1031
     391             : /* 111 */     MCD::OPC_ExtractField, 20, 1,  // Inst{20} ...
     392             : /* 114 */     MCD::OPC_FilterValue, 0, 145, 3, // Skip to: 1031
     393             : /* 118 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     394             : /* 121 */     MCD::OPC_FilterValue, 0, 16, 0, // Skip to: 141
     395             : /* 125 */     MCD::OPC_CheckField, 21, 6, 63, 30, 0, // Skip to: 161
     396             : /* 131 */     MCD::OPC_CheckField, 16, 4, 12, 24, 0, // Skip to: 161
     397             : /* 137 */     MCD::OPC_Decode, 174, 1, 20, // Opcode: CLZ_l2r
     398             : /* 141 */     MCD::OPC_FilterValue, 1, 16, 0, // Skip to: 161
     399             : /* 145 */     MCD::OPC_CheckField, 21, 6, 63, 10, 0, // Skip to: 161
     400             : /* 151 */     MCD::OPC_CheckField, 16, 4, 12, 4, 0, // Skip to: 161
     401             : /* 157 */     MCD::OPC_Decode, 166, 2, 26, // Opcode: SETCLK_l2r
     402             : /* 161 */     MCD::OPC_CheckField, 21, 6, 63, 10, 0, // Skip to: 177
     403             : /* 167 */     MCD::OPC_CheckField, 16, 4, 12, 4, 0, // Skip to: 177
     404             : /* 173 */     MCD::OPC_Decode, 218, 2, 21, // Opcode: XOR_l3r
     405             : /* 177 */     MCD::OPC_CheckField, 21, 6, 63, 4, 0, // Skip to: 187
     406             : /* 183 */     MCD::OPC_Decode, 145, 2, 23, // Opcode: MACCS_l4r
     407             : /* 187 */     MCD::OPC_Decode, 143, 2, 24, // Opcode: LSUB_l5r
     408             : /* 191 */     MCD::OPC_FilterValue, 2, 32, 0, // Skip to: 227
     409             : /* 195 */     MCD::OPC_ExtractField, 11, 16,  // Inst{26-11} ...
     410             : /* 198 */     MCD::OPC_FilterValue, 159, 251, 3, 59, 3, // Skip to: 1031
     411             : /* 204 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     412             : /* 207 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 215
     413             : /* 211 */     MCD::OPC_Decode, 217, 1, 20, // Opcode: INITLR_l2r
     414             : /* 215 */     MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 223
     415             : /* 219 */     MCD::OPC_Decode, 208, 1, 20, // Opcode: GETPS_l2r
     416             : /* 223 */     MCD::OPC_Decode, 140, 1, 21, // Opcode: ASHR_l3r
     417             : /* 227 */     MCD::OPC_FilterValue, 3, 32, 0, // Skip to: 263
     418             : /* 231 */     MCD::OPC_ExtractField, 11, 16,  // Inst{26-11} ...
     419             : /* 234 */     MCD::OPC_FilterValue, 159, 251, 3, 23, 3, // Skip to: 1031
     420             : /* 240 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     421             : /* 243 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 251
     422             : /* 247 */     MCD::OPC_Decode, 177, 2, 26, // Opcode: SETPS_l2r
     423             : /* 251 */     MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 259
     424             : /* 255 */     MCD::OPC_Decode, 201, 1, 20, // Opcode: GETD_l2r
     425             : /* 259 */     MCD::OPC_Decode, 249, 1, 21, // Opcode: LDAWF_l3r
     426             : /* 263 */     MCD::OPC_FilterValue, 4, 32, 0, // Skip to: 299
     427             : /* 267 */     MCD::OPC_ExtractField, 11, 16,  // Inst{26-11} ...
     428             : /* 270 */     MCD::OPC_FilterValue, 159, 251, 3, 243, 2, // Skip to: 1031
     429             : /* 276 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     430             : /* 279 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 287
     431             : /* 283 */     MCD::OPC_Decode, 210, 2, 20, // Opcode: TESTLCL_l2r
     432             : /* 287 */     MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 295
     433             : /* 291 */     MCD::OPC_Decode, 185, 2, 26, // Opcode: SETTW_l2r
     434             : /* 295 */     MCD::OPC_Decode, 243, 1, 21, // Opcode: LDAWB_l3r
     435             : /* 299 */     MCD::OPC_FilterValue, 5, 32, 0, // Skip to: 335
     436             : /* 303 */     MCD::OPC_ExtractField, 11, 16,  // Inst{26-11} ...
     437             : /* 306 */     MCD::OPC_FilterValue, 159, 251, 3, 207, 2, // Skip to: 1031
     438             : /* 312 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     439             : /* 315 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 323
     440             : /* 319 */     MCD::OPC_Decode, 179, 2, 26, // Opcode: SETRDY_l2r
     441             : /* 323 */     MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 331
     442             : /* 327 */     MCD::OPC_Decode, 168, 2, 20, // Opcode: SETC_l2r
     443             : /* 331 */     MCD::OPC_Decode, 236, 1, 21, // Opcode: LDA16F_l3r
     444             : /* 335 */     MCD::OPC_FilterValue, 6, 32, 0, // Skip to: 371
     445             : /* 339 */     MCD::OPC_ExtractField, 11, 16,  // Inst{26-11} ...
     446             : /* 342 */     MCD::OPC_FilterValue, 159, 251, 3, 171, 2, // Skip to: 1031
     447             : /* 348 */     MCD::OPC_ExtractField, 4, 1,  // Inst{4} ...
     448             : /* 351 */     MCD::OPC_FilterValue, 0, 4, 0, // Skip to: 359
     449             : /* 355 */     MCD::OPC_Decode, 175, 2, 26, // Opcode: SETN_l2r
     450             : /* 359 */     MCD::OPC_FilterValue, 1, 4, 0, // Skip to: 367
     451             : /* 363 */     MCD::OPC_Decode, 207, 1, 20, // Opcode: GETN_l2r
     452             : /* 367 */     MCD::OPC_Decode, 235, 1, 21, // Opcode: LDA16B_l3r
     453             : /* 371 */     MCD::OPC_FilterValue, 7, 12, 0, // Skip to: 387
     454             : /* 375 */     MCD::OPC_CheckField, 11, 16, 159, 251, 3, 136, 2, // Skip to: 1031
     455             : /* 383 */     MCD::OPC_Decode, 151, 2, 21, // Opcode: MUL_l3r
     456             : /* 387 */     MCD::OPC_FilterValue, 8, 12, 0, // Skip to: 403
     457             : /* 391 */     MCD::OPC_CheckField, 11, 16, 159, 251, 3, 120, 2, // Skip to: 1031
     458             : /* 399 */     MCD::OPC_Decode, 180, 1, 21, // Opcode: DIVS_l3r
     459             : /* 403 */     MCD::OPC_FilterValue, 9, 12, 0, // Skip to: 419
     460             : /* 407 */     MCD::OPC_CheckField, 11, 16, 159, 251, 3, 104, 2, // Skip to: 1031
     461             : /* 415 */     MCD::OPC_Decode, 181, 1, 21, // Opcode: DIVU_l3r
     462             : /* 419 */     MCD::OPC_FilterValue, 10, 31, 0, // Skip to: 454
     463             : /* 423 */     MCD::OPC_ExtractField, 26, 1,  // Inst{26} ...
     464             : /* 426 */     MCD::OPC_FilterValue, 0, 10, 0, // Skip to: 440
     465             : /* 430 */     MCD::OPC_CheckField, 10, 6, 60, 83, 2, // Skip to: 1031
     466             : /* 436 */     MCD::OPC_Decode, 200, 2, 27, // Opcode: STWDP_lru6
     467             : /* 440 */     MCD::OPC_FilterValue, 1, 75, 2, // Skip to: 1031
     468             : /* 444 */     MCD::OPC_CheckField, 10, 6, 60, 69, 2, // Skip to: 1031
     469             : /* 450 */     MCD::OPC_Decode, 202, 2, 27, // Opcode: STWSP_lru6
     470             : /* 454 */     MCD::OPC_FilterValue, 11, 31, 0, // Skip to: 489
     471             : /* 458 */     MCD::OPC_ExtractField, 26, 1,  // Inst{26} ...
     472             : /* 461 */     MCD::OPC_FilterValue, 0, 10, 0, // Skip to: 475
     473             : /* 465 */     MCD::OPC_CheckField, 10, 6, 60, 48, 2, // Skip to: 1031
     474             : /* 471 */     MCD::OPC_Decode, 135, 2, 27, // Opcode: LDWDP_lru6
     475             : /* 475 */     MCD::OPC_FilterValue, 1, 40, 2, // Skip to: 1031
     476             : /* 479 */     MCD::OPC_CheckField, 10, 6, 60, 34, 2, // Skip to: 1031
     477             : /* 485 */     MCD::OPC_Decode, 137, 2, 27, // Opcode: LDWSP_lru6
     478             : /* 489 */     MCD::OPC_FilterValue, 12, 31, 0, // Skip to: 524
     479             : /* 493 */     MCD::OPC_ExtractField, 26, 1,  // Inst{26} ...
     480             : /* 496 */     MCD::OPC_FilterValue, 0, 10, 0, // Skip to: 510
     481             : /* 500 */     MCD::OPC_CheckField, 10, 6, 60, 13, 2, // Skip to: 1031
     482             : /* 506 */     MCD::OPC_Decode, 246, 1, 27, // Opcode: LDAWDP_lru6
     483             : /* 510 */     MCD::OPC_FilterValue, 1, 5, 2, // Skip to: 1031
     484             : /* 514 */     MCD::OPC_CheckField, 10, 6, 60, 255, 1, // Skip to: 1031
     485             : /* 520 */     MCD::OPC_Decode, 250, 1, 27, // Opcode: LDAWSP_lru6
     486             : /* 524 */     MCD::OPC_FilterValue, 13, 31, 0, // Skip to: 559
     487             : /* 528 */     MCD::OPC_ExtractField, 26, 1,  // Inst{26} ...
     488             : /* 531 */     MCD::OPC_FilterValue, 0, 10, 0, // Skip to: 545
     489             : /* 535 */     MCD::OPC_CheckField, 10, 6, 60, 234, 1, // Skip to: 1031
     490             : /* 541 */     MCD::OPC_Decode, 252, 1, 27, // Opcode: LDC_lru6
     491             : /* 545 */     MCD::OPC_FilterValue, 1, 226, 1, // Skip to: 1031
     492             : /* 549 */     MCD::OPC_CheckField, 10, 6, 60, 220, 1, // Skip to: 1031
     493             : /* 555 */     MCD::OPC_Decode, 131, 2, 27, // Opcode: LDWCP_lru6
     494             : /* 559 */     MCD::OPC_FilterValue, 14, 103, 0, // Skip to: 666
     495             : /* 563 */     MCD::OPC_ExtractField, 26, 1,  // Inst{26} ...
     496             : /* 566 */     MCD::OPC_FilterValue, 0, 46, 0, // Skip to: 616
     497             : /* 570 */     MCD::OPC_ExtractField, 10, 6,  // Inst{15-10} ...
     498             : /* 573 */     MCD::OPC_FilterValue, 60, 198, 1, // Skip to: 1031
     499             : /* 577 */     MCD::OPC_ExtractField, 22, 4,  // Inst{25-22} ...
     500             : /* 580 */     MCD::OPC_FilterValue, 12, 4, 0, // Skip to: 588
     501             : /* 584 */     MCD::OPC_Decode, 162, 1, 28, // Opcode: BRFU_lu6
     502             : /* 588 */     MCD::OPC_FilterValue, 13, 4, 0, // Skip to: 596
     503             : /* 592 */     MCD::OPC_Decode, 145, 1, 28, // Opcode: BLAT_lu6
     504             : /* 596 */     MCD::OPC_FilterValue, 14, 4, 0, // Skip to: 604
     505             : /* 600 */     MCD::OPC_Decode, 195, 1, 28, // Opcode: EXTDP_lu6
     506             : /* 604 */     MCD::OPC_FilterValue, 15, 4, 0, // Skip to: 612
     507             : /* 608 */     MCD::OPC_Decode, 225, 1, 28, // Opcode: KCALL_lu6
     508             : /* 612 */     MCD::OPC_Decode, 160, 1, 29, // Opcode: BRFT_lru6
     509             : /* 616 */     MCD::OPC_FilterValue, 1, 155, 1, // Skip to: 1031
     510             : /* 620 */     MCD::OPC_ExtractField, 10, 6,  // Inst{15-10} ...
     511             : /* 623 */     MCD::OPC_FilterValue, 60, 148, 1, // Skip to: 1031
     512             : /* 627 */     MCD::OPC_ExtractField, 22, 4,  // Inst{25-22} ...
     513             : /* 630 */     MCD::OPC_FilterValue, 12, 4, 0, // Skip to: 638
     514             : /* 634 */     MCD::OPC_Decode, 156, 1, 30, // Opcode: BRBU_lu6
     515             : /* 638 */     MCD::OPC_FilterValue, 13, 4, 0, // Skip to: 646
     516             : /* 642 */     MCD::OPC_Decode, 191, 1, 28, // Opcode: ENTSP_lu6
     517             : /* 646 */     MCD::OPC_FilterValue, 14, 4, 0, // Skip to: 654
     518             : /* 650 */     MCD::OPC_Decode, 197, 1, 28, // Opcode: EXTSP_lu6
     519             : /* 654 */     MCD::OPC_FilterValue, 15, 4, 0, // Skip to: 662
     520             : /* 658 */     MCD::OPC_Decode, 164, 2, 28, // Opcode: RETSP_lu6
     521             : /* 662 */     MCD::OPC_Decode, 154, 1, 31, // Opcode: BRBT_lru6
     522             : /* 666 */     MCD::OPC_FilterValue, 15, 87, 0, // Skip to: 757
     523             : /* 670 */     MCD::OPC_ExtractField, 26, 1,  // Inst{26} ...
     524             : /* 673 */     MCD::OPC_FilterValue, 0, 46, 0, // Skip to: 723
     525             : /* 677 */     MCD::OPC_ExtractField, 10, 6,  // Inst{15-10} ...
     526             : /* 680 */     MCD::OPC_FilterValue, 60, 91, 1, // Skip to: 1031
     527             : /* 684 */     MCD::OPC_ExtractField, 22, 4,  // Inst{25-22} ...
     528             : /* 687 */     MCD::OPC_FilterValue, 12, 4, 0, // Skip to: 695
     529             : /* 691 */     MCD::OPC_Decode, 172, 1, 28, // Opcode: CLRSR_lu6
     530             : /* 695 */     MCD::OPC_FilterValue, 13, 4, 0, // Skip to: 703
     531             : /* 699 */     MCD::OPC_Decode, 183, 2, 28, // Opcode: SETSR_lu6
     532             : /* 703 */     MCD::OPC_FilterValue, 14, 4, 0, // Skip to: 711
     533             : /* 707 */     MCD::OPC_Decode, 227, 1, 28, // Opcode: KENTSP_lu6
     534             : /* 711 */     MCD::OPC_FilterValue, 15, 4, 0, // Skip to: 719
     535             : /* 715 */     MCD::OPC_Decode, 229, 1, 28, // Opcode: KRESTSP_lu6
     536             : /* 719 */     MCD::OPC_Decode, 158, 1, 29, // Opcode: BRFF_lru6
     537             : /* 723 */     MCD::OPC_FilterValue, 1, 48, 1, // Skip to: 1031
     538             : /* 727 */     MCD::OPC_ExtractField, 10, 6,  // Inst{15-10} ...
     539             : /* 730 */     MCD::OPC_FilterValue, 60, 41, 1, // Skip to: 1031
     540             : /* 734 */     MCD::OPC_ExtractField, 22, 4,  // Inst{25-22} ...
     541             : /* 737 */     MCD::OPC_FilterValue, 12, 4, 0, // Skip to: 745
     542             : /* 741 */     MCD::OPC_Decode, 210, 1, 28, // Opcode: GETSR_lu6
     543             : /* 745 */     MCD::OPC_FilterValue, 13, 4, 0, // Skip to: 753
     544             : /* 749 */     MCD::OPC_Decode, 244, 1, 28, // Opcode: LDAWCP_lu6
     545             : /* 753 */     MCD::OPC_Decode, 152, 1, 31, // Opcode: BRBF_lru6
     546             : /* 757 */     MCD::OPC_FilterValue, 16, 12, 0, // Skip to: 773
     547             : /* 761 */     MCD::OPC_CheckField, 11, 16, 159, 251, 3, 6, 1, // Skip to: 1031
     548             : /* 769 */     MCD::OPC_Decode, 194, 2, 21, // Opcode: ST16_l3r
     549             : /* 773 */     MCD::OPC_FilterValue, 17, 12, 0, // Skip to: 789
     550             : /* 777 */     MCD::OPC_CheckField, 11, 16, 159, 251, 3, 246, 0, // Skip to: 1031
     551             : /* 785 */     MCD::OPC_Decode, 195, 2, 21, // Opcode: ST8_l3r
     552             : /* 789 */     MCD::OPC_FilterValue, 18, 33, 0, // Skip to: 826
     553             : /* 793 */     MCD::OPC_ExtractField, 11, 16,  // Inst{26-11} ...
     554             : /* 796 */     MCD::OPC_FilterValue, 159, 251, 3, 4, 0, // Skip to: 806
     555             : /* 802 */     MCD::OPC_Decode, 139, 1, 32, // Opcode: ASHR_l2rus
     556             : /* 806 */     MCD::OPC_FilterValue, 191, 251, 3, 4, 0, // Skip to: 816
     557             : /* 812 */     MCD::OPC_Decode, 157, 2, 32, // Opcode: OUTPW_l2rus
     558             : /* 816 */     MCD::OPC_FilterValue, 223, 251, 3, 209, 0, // Skip to: 1031
     559             : /* 822 */     MCD::OPC_Decode, 220, 1, 32, // Opcode: INPW_l2rus
     560             : /* 826 */     MCD::OPC_FilterValue, 19, 12, 0, // Skip to: 842
     561             : /* 830 */     MCD::OPC_CheckField, 11, 16, 159, 251, 3, 193, 0, // Skip to: 1031
     562             : /* 838 */     MCD::OPC_Decode, 248, 1, 33, // Opcode: LDAWF_l2rus
     563             : /* 842 */     MCD::OPC_FilterValue, 20, 12, 0, // Skip to: 858
     564             : /* 846 */     MCD::OPC_CheckField, 11, 16, 159, 251, 3, 177, 0, // Skip to: 1031
     565             : /* 854 */     MCD::OPC_Decode, 242, 1, 33, // Opcode: LDAWB_l2rus
     566             : /* 858 */     MCD::OPC_FilterValue, 21, 12, 0, // Skip to: 874
     567             : /* 862 */     MCD::OPC_CheckField, 11, 16, 159, 251, 3, 161, 0, // Skip to: 1031
     568             : /* 870 */     MCD::OPC_Decode, 176, 1, 34, // Opcode: CRC_l3r
     569             : /* 874 */     MCD::OPC_FilterValue, 24, 12, 0, // Skip to: 890
     570             : /* 878 */     MCD::OPC_CheckField, 11, 16, 159, 251, 3, 145, 0, // Skip to: 1031
     571             : /* 886 */     MCD::OPC_Decode, 162, 2, 21, // Opcode: REMS_l3r
     572             : /* 890 */     MCD::OPC_FilterValue, 25, 12, 0, // Skip to: 906
     573             : /* 894 */     MCD::OPC_CheckField, 11, 16, 159, 251, 3, 129, 0, // Skip to: 1031
     574             : /* 902 */     MCD::OPC_Decode, 163, 2, 21, // Opcode: REMU_l3r
     575             : /* 906 */     MCD::OPC_FilterValue, 26, 31, 0, // Skip to: 941
     576             : /* 910 */     MCD::OPC_ExtractField, 26, 1,  // Inst{26} ...
     577             : /* 913 */     MCD::OPC_FilterValue, 0, 10, 0, // Skip to: 927
     578             : /* 917 */     MCD::OPC_CheckField, 10, 6, 60, 108, 0, // Skip to: 1031
     579             : /* 923 */     MCD::OPC_Decode, 150, 1, 35, // Opcode: BLRF_lu10
     580             : /* 927 */     MCD::OPC_FilterValue, 1, 100, 0, // Skip to: 1031
     581             : /* 931 */     MCD::OPC_CheckField, 10, 6, 60, 94, 0, // Skip to: 1031
     582             : /* 937 */     MCD::OPC_Decode, 148, 1, 36, // Opcode: BLRB_lu10
     583             : /* 941 */     MCD::OPC_FilterValue, 27, 31, 0, // Skip to: 976
     584             : /* 945 */     MCD::OPC_ExtractField, 26, 1,  // Inst{26} ...
     585             : /* 948 */     MCD::OPC_FilterValue, 0, 10, 0, // Skip to: 962
     586             : /* 952 */     MCD::OPC_CheckField, 10, 6, 60, 73, 0, // Skip to: 1031
     587             : /* 958 */     MCD::OPC_Decode, 239, 1, 35, // Opcode: LDAPF_lu10
     588             : /* 962 */     MCD::OPC_FilterValue, 1, 65, 0, // Skip to: 1031
     589             : /* 966 */     MCD::OPC_CheckField, 10, 6, 60, 59, 0, // Skip to: 1031
     590             : /* 972 */     MCD::OPC_Decode, 237, 1, 36, // Opcode: LDAPB_lu10
     591             : /* 976 */     MCD::OPC_FilterValue, 28, 31, 0, // Skip to: 1011
     592             : /* 980 */     MCD::OPC_ExtractField, 26, 1,  // Inst{26} ...
     593             : /* 983 */     MCD::OPC_FilterValue, 0, 10, 0, // Skip to: 997
     594             : /* 987 */     MCD::OPC_CheckField, 10, 6, 60, 38, 0, // Skip to: 1031
     595             : /* 993 */     MCD::OPC_Decode, 143, 1, 35, // Opcode: BLACP_lu10
     596             : /* 997 */     MCD::OPC_FilterValue, 1, 30, 0, // Skip to: 1031
     597             : /* 1001 */    MCD::OPC_CheckField, 10, 6, 60, 24, 0, // Skip to: 1031
     598             : /* 1007 */    MCD::OPC_Decode, 132, 2, 35, // Opcode: LDWCP_lu10
     599             : /* 1011 */    MCD::OPC_FilterValue, 29, 16, 0, // Skip to: 1031
     600             : /* 1015 */    MCD::OPC_CheckField, 26, 1, 0, 10, 0, // Skip to: 1031
     601             : /* 1021 */    MCD::OPC_CheckField, 10, 6, 60, 4, 0, // Skip to: 1031
     602             : /* 1027 */    MCD::OPC_Decode, 169, 2, 29, // Opcode: SETC_lru6
     603             : /* 1031 */    MCD::OPC_Fail,
     604             :   0
     605             : };
     606             : 
     607             : static bool checkDecoderPredicate(unsigned Idx, const FeatureBitset& Bits) {
     608           0 :   llvm_unreachable("Invalid index!");
     609             : }
     610             : 
     611             : template<typename InsnType>
     612         225 : static DecodeStatus decodeToMCInst(DecodeStatus S, unsigned Idx, InsnType insn, MCInst &MI,
     613             :                                    uint64_t Address, const void *Decoder, bool &DecodeComplete) {
     614         225 :   DecodeComplete = true;
     615             :   InsnType tmp;
     616         225 :   switch (Idx) {
     617           0 :   default: llvm_unreachable("Invalid index!");
     618             :   case 0:
     619             :     return S;
     620          22 :   case 1:
     621             :     tmp = fieldFromInstruction(insn, 0, 4);
     622          22 :     if (DecodeGRRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     623          22 :     return S;
     624          29 :   case 2:
     625          29 :     if (Decode2RInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     626          29 :     return S;
     627           1 :   case 3:
     628           1 :     if (Decode2RUSInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     629           1 :     return S;
     630           8 :   case 4:
     631           8 :     if (DecodeR2RInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     632           8 :     return S;
     633           1 :   case 5:
     634           1 :     if (Decode3RInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     635           1 :     return S;
     636           1 :   case 6:
     637           1 :     if (Decode2RImmInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     638           1 :     return S;
     639           7 :   case 7:
     640           7 :     if (Decode2RSrcDstInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     641           7 :     return S;
     642           3 :   case 8:
     643           3 :     if (DecodeRUSSrcDstBitpInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     644           3 :     return S;
     645           4 :   case 9:
     646           4 :     if (DecodeRUSInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     647           4 :     return S;
     648          16 :   case 10:
     649             :     tmp = fieldFromInstruction(insn, 6, 4);
     650          16 :     if (DecodeRRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     651             :     tmp = fieldFromInstruction(insn, 0, 6);
     652          48 :     MI.addOperand(MCOperand::createImm(tmp));
     653          16 :     return S;
     654          13 :   case 11:
     655             :     tmp = fieldFromInstruction(insn, 0, 6);
     656          39 :     MI.addOperand(MCOperand::createImm(tmp));
     657          13 :     return S;
     658           4 :   case 12:
     659             :     tmp = fieldFromInstruction(insn, 6, 4);
     660           4 :     if (DecodeGRRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     661             :     tmp = fieldFromInstruction(insn, 0, 6);
     662          12 :     MI.addOperand(MCOperand::createImm(tmp));
     663           4 :     return S;
     664           1 :   case 13:
     665             :     tmp = fieldFromInstruction(insn, 0, 6);
     666             :     if (DecodeNegImmOperand(MI, tmp, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     667           1 :     return S;
     668           1 :   case 14:
     669             :     tmp = fieldFromInstruction(insn, 6, 4);
     670           1 :     if (DecodeGRRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     671             :     tmp = fieldFromInstruction(insn, 0, 6);
     672             :     if (DecodeNegImmOperand(MI, tmp, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     673           1 :     return S;
     674           3 :   case 15:
     675           3 :     if (DecodeRUSBitpInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     676           3 :     return S;
     677           0 :   case 16:
     678           0 :     if (Decode2RUSBitpInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     679           0 :     return S;
     680           0 :   case 17:
     681           0 :     if (Decode3RImmInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     682           0 :     return S;
     683           4 :   case 18:
     684             :     tmp = fieldFromInstruction(insn, 0, 10);
     685          12 :     MI.addOperand(MCOperand::createImm(tmp));
     686           4 :     return S;
     687           2 :   case 19:
     688             :     tmp = fieldFromInstruction(insn, 0, 10);
     689             :     if (DecodeNegImmOperand(MI, tmp, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     690           2 :     return S;
     691          16 :   case 20:
     692          16 :     if (DecodeL2RInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     693           0 :     return S;
     694           7 :   case 21:
     695           7 :     if (DecodeL3RInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     696           0 :     return S;
     697           1 :   case 22:
     698           1 :     if (DecodeL4RSrcDstInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     699           0 :     return S;
     700           2 :   case 23:
     701           2 :     if (DecodeL4RSrcDstSrcDstInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     702           0 :     return S;
     703           4 :   case 24:
     704           4 :     if (DecodeL5RInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     705           0 :     return S;
     706           0 :   case 25:
     707           0 :     if (DecodeL6RInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     708           0 :     return S;
     709           5 :   case 26:
     710           5 :     if (DecodeLR2RInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     711           0 :     return S;
     712           0 :   case 27:
     713             :     tmp = fieldFromInstruction(insn, 22, 4);
     714          16 :     if (DecodeRRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     715             :     tmp = 0;
     716          16 :     tmp |= fieldFromInstruction(insn, 0, 10) << 6;
     717          16 :     tmp |= fieldFromInstruction(insn, 16, 6) << 0;
     718          48 :     MI.addOperand(MCOperand::createImm(tmp));
     719           0 :     return S;
     720          13 :   case 28:
     721             :     tmp = 0;
     722          13 :     tmp |= fieldFromInstruction(insn, 0, 10) << 6;
     723          13 :     tmp |= fieldFromInstruction(insn, 16, 6) << 0;
     724          39 :     MI.addOperand(MCOperand::createImm(tmp));
     725           0 :     return S;
     726           0 :   case 29:
     727             :     tmp = fieldFromInstruction(insn, 22, 4);
     728           4 :     if (DecodeGRRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     729             :     tmp = 0;
     730           4 :     tmp |= fieldFromInstruction(insn, 0, 10) << 6;
     731           4 :     tmp |= fieldFromInstruction(insn, 16, 6) << 0;
     732          12 :     MI.addOperand(MCOperand::createImm(tmp));
     733           0 :     return S;
     734           1 :   case 30:
     735             :     tmp = 0;
     736           1 :     tmp |= fieldFromInstruction(insn, 0, 10) << 6;
     737           1 :     tmp |= fieldFromInstruction(insn, 16, 6) << 0;
     738           0 :     if (DecodeNegImmOperand(MI, tmp, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     739           0 :     return S;
     740           0 :   case 31:
     741             :     tmp = fieldFromInstruction(insn, 22, 4);
     742           1 :     if (DecodeGRRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     743             :     tmp = 0;
     744           1 :     tmp |= fieldFromInstruction(insn, 0, 10) << 6;
     745           1 :     tmp |= fieldFromInstruction(insn, 16, 6) << 0;
     746           0 :     if (DecodeNegImmOperand(MI, tmp, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     747           0 :     return S;
     748           3 :   case 32:
     749           3 :     if (DecodeL2RUSBitpInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     750           0 :     return S;
     751           2 :   case 33:
     752           2 :     if (DecodeL2RUSInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     753           0 :     return S;
     754           1 :   case 34:
     755           1 :     if (DecodeL3RSrcDstInstruction(MI, insn, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     756           0 :     return S;
     757           4 :   case 35:
     758             :     tmp = 0;
     759           4 :     tmp |= fieldFromInstruction(insn, 0, 10) << 10;
     760           4 :     tmp |= fieldFromInstruction(insn, 16, 10) << 0;
     761          12 :     MI.addOperand(MCOperand::createImm(tmp));
     762           0 :     return S;
     763           2 :   case 36:
     764             :     tmp = 0;
     765           2 :     tmp |= fieldFromInstruction(insn, 0, 10) << 10;
     766           2 :     tmp |= fieldFromInstruction(insn, 16, 10) << 0;
     767           0 :     if (DecodeNegImmOperand(MI, tmp, Address, Decoder) == MCDisassembler::Fail) { return MCDisassembler::Fail; }
     768           0 :     return S;
     769             :   }
     770             : }
     771             : 
     772             : template<typename InsnType>
     773         307 : static DecodeStatus decodeInstruction(const uint8_t DecodeTable[], MCInst &MI,
     774             :                                       InsnType insn, uint64_t Address,
     775             :                                       const void *DisAsm,
     776             :                                       const MCSubtargetInfo &STI) {
     777             :   const FeatureBitset& Bits = STI.getFeatureBits();
     778             : 
     779             :   const uint8_t *Ptr = DecodeTable;
     780             :   uint32_t CurFieldValue = 0;
     781             :   DecodeStatus S = MCDisassembler::Success;
     782             :   while (true) {
     783        6828 :     ptrdiff_t Loc = Ptr - DecodeTable;
     784        6828 :     switch (*Ptr) {
     785           0 :     default:
     786           0 :       errs() << Loc << ": Unexpected decode table opcode!\n";
     787           0 :       return MCDisassembler::Fail;
     788         659 :     case MCD::OPC_ExtractField: {
     789         659 :       unsigned Start = *++Ptr;
     790         659 :       unsigned Len = *++Ptr;
     791         659 :       ++Ptr;
     792         429 :       CurFieldValue = fieldFromInstruction(insn, Start, Len);
     793             :       LLVM_DEBUG(dbgs() << Loc << ": OPC_ExtractField(" << Start << ", "
     794             :                    << Len << "): " << CurFieldValue << "\n");
     795         429 :       break;
     796             :     }
     797        5798 :     case MCD::OPC_FilterValue: {
     798             :       // Decode the field value.
     799             :       unsigned Len;
     800        5798 :       InsnType Val = decodeULEB128(++Ptr, &Len);
     801        5798 :       Ptr += Len;
     802             :       // NumToSkip is a plain 16-bit integer.
     803        5798 :       unsigned NumToSkip = *Ptr++;
     804        5798 :       NumToSkip |= (*Ptr++) << 8;
     805             : 
     806             :       // Perform the filter operation.
     807        5798 :       if (Val != CurFieldValue)
     808        5279 :         Ptr += NumToSkip;
     809             :       LLVM_DEBUG(dbgs() << Loc << ": OPC_FilterValue(" << Val << ", " << NumToSkip
     810             :                    << "): " << ((Val != CurFieldValue) ? "FAIL:" : "PASS:")
     811             :                    << " continuing at " << (Ptr - DecodeTable) << "\n");
     812             : 
     813             :       break;
     814             :     }
     815          64 :     case MCD::OPC_CheckField: {
     816          64 :       unsigned Start = *++Ptr;
     817          64 :       unsigned Len = *++Ptr;
     818             :       InsnType FieldValue = fieldFromInstruction(insn, Start, Len);
     819             :       // Decode the field value.
     820          64 :       uint32_t ExpectedValue = decodeULEB128(++Ptr, &Len);
     821          64 :       Ptr += Len;
     822             :       // NumToSkip is a plain 16-bit integer.
     823          64 :       unsigned NumToSkip = *Ptr++;
     824          64 :       NumToSkip |= (*Ptr++) << 8;
     825             : 
     826             :       // If the actual and expected values don't match, skip.
     827          64 :       if (ExpectedValue != FieldValue)
     828          16 :         Ptr += NumToSkip;
     829             :       LLVM_DEBUG(dbgs() << Loc << ": OPC_CheckField(" << Start << ", "
     830             :                    << Len << ", " << ExpectedValue << ", " << NumToSkip
     831             :                    << "): FieldValue = " << FieldValue << ", ExpectedValue = "
     832             :                    << ExpectedValue << ": "
     833             :                    << ((ExpectedValue == FieldValue) ? "PASS\n" : "FAIL\n"));
     834             :       break;
     835             :     }
     836           0 :     case MCD::OPC_CheckPredicate: {
     837             :       unsigned Len;
     838             :       // Decode the Predicate Index value.
     839           0 :       unsigned PIdx = decodeULEB128(++Ptr, &Len);
     840             :       Ptr += Len;
     841             :       // NumToSkip is a plain 16-bit integer.
     842             :       unsigned NumToSkip = *Ptr++;
     843             :       NumToSkip |= (*Ptr++) << 8;
     844             :       // Check the predicate.
     845             :       bool Pred;
     846             :       if (!(Pred = checkDecoderPredicate(PIdx, Bits)))
     847             :         Ptr += NumToSkip;
     848             :       (void)Pred;
     849             :       LLVM_DEBUG(dbgs() << Loc << ": OPC_CheckPredicate(" << PIdx << "): "
     850             :             << (Pred ? "PASS\n" : "FAIL\n"));
     851             : 
     852             :       break;
     853             :     }
     854         225 :     case MCD::OPC_Decode: {
     855             :       unsigned Len;
     856             :       // Decode the Opcode value.
     857         225 :       unsigned Opc = decodeULEB128(++Ptr, &Len);
     858         225 :       Ptr += Len;
     859         225 :       unsigned DecodeIdx = decodeULEB128(Ptr, &Len);
     860             :       Ptr += Len;
     861             : 
     862             :       MI.clear();
     863             :       MI.setOpcode(Opc);
     864             :       bool DecodeComplete;
     865         225 :       S = decodeToMCInst(S, DecodeIdx, insn, MI, Address, DisAsm, DecodeComplete);
     866             :       assert(DecodeComplete);
     867             : 
     868             :       LLVM_DEBUG(dbgs() << Loc << ": OPC_Decode: opcode " << Opc
     869             :                    << ", using decoder " << DecodeIdx << ": "
     870             :                    << (S != MCDisassembler::Fail ? "PASS" : "FAIL") << "\n");
     871             :       return S;
     872             :     }
     873           0 :     case MCD::OPC_TryDecode: {
     874             :       unsigned Len;
     875             :       // Decode the Opcode value.
     876           0 :       unsigned Opc = decodeULEB128(++Ptr, &Len);
     877           0 :       Ptr += Len;
     878           0 :       unsigned DecodeIdx = decodeULEB128(Ptr, &Len);
     879           0 :       Ptr += Len;
     880             :       // NumToSkip is a plain 16-bit integer.
     881           0 :       unsigned NumToSkip = *Ptr++;
     882           0 :       NumToSkip |= (*Ptr++) << 8;
     883             : 
     884             :       // Perform the decode operation.
     885             :       MCInst TmpMI;
     886             :       TmpMI.setOpcode(Opc);
     887             :       bool DecodeComplete;
     888           0 :       S = decodeToMCInst(S, DecodeIdx, insn, TmpMI, Address, DisAsm, DecodeComplete);
     889             :       LLVM_DEBUG(dbgs() << Loc << ": OPC_TryDecode: opcode " << Opc
     890             :                    << ", using decoder " << DecodeIdx << ": ");
     891             : 
     892           0 :       if (DecodeComplete) {
     893             :         // Decoding complete.
     894             :         LLVM_DEBUG(dbgs() << (S != MCDisassembler::Fail ? "PASS" : "FAIL") << "\n");
     895             :         MI = TmpMI;
     896             :         return S;
     897             :       } else {
     898             :         assert(S == MCDisassembler::Fail);
     899             :         // If the decoding was incomplete, skip.
     900           0 :         Ptr += NumToSkip;
     901             :         LLVM_DEBUG(dbgs() << "FAIL: continuing at " << (Ptr - DecodeTable) << "\n");
     902             :         // Reset decode status. This also drops a SoftFail status that could be
     903             :         // set before the decode attempt.
     904             :         S = MCDisassembler::Success;
     905             :       }
     906             :       break;
     907             :     }
     908           0 :     case MCD::OPC_SoftFail: {
     909             :       // Decode the mask values.
     910             :       unsigned Len;
     911           0 :       InsnType PositiveMask = decodeULEB128(++Ptr, &Len);
     912           0 :       Ptr += Len;
     913           0 :       InsnType NegativeMask = decodeULEB128(Ptr, &Len);
     914           0 :       Ptr += Len;
     915           0 :       bool Fail = (insn & PositiveMask) || (~insn & NegativeMask);
     916             :       if (Fail)
     917             :         S = MCDisassembler::SoftFail;
     918             :       LLVM_DEBUG(dbgs() << Loc << ": OPC_SoftFail: " << (Fail ? "FAIL\n":"PASS\n"));
     919             :       break;
     920             :     }
     921             :     case MCD::OPC_Fail: {
     922             :       LLVM_DEBUG(dbgs() << Loc << ": OPC_Fail\n");
     923             :       return MCDisassembler::Fail;
     924             :     }
     925             :     }
     926             :   }
     927             :   llvm_unreachable("bogosity detected in disassembler state machine!");
     928             : }
     929             : 
     930             : 
     931             : } // End llvm namespace

Generated by: LCOV version 1.13