LCOV - code coverage report
Current view: top level - build-llvm/lib/Target/AVR - AVRGenAsmWriter.inc (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 167 187 89.3 %
Date: 2018-10-20 13:21:21 Functions: 4 4 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
       2             : |*                                                                            *|
       3             : |* Assembly Writer Source Fragment                                            *|
       4             : |*                                                                            *|
       5             : |* Automatically generated file, do not edit!                                 *|
       6             : |*                                                                            *|
       7             : \*===----------------------------------------------------------------------===*/
       8             : 
       9             : /// printInstruction - This method is automatically generated by tablegen
      10             : /// from the instruction set description.
      11        9094 : void AVRInstPrinter::printInstruction(const MCInst *MI, raw_ostream &O) {
      12             :   static const char AsmStrs[] = {
      13             :   /* 0 */ 's', 'u', 'b', 9, 0,
      14             :   /* 5 */ 'l', 'a', 'c', 9, 0,
      15             :   /* 10 */ 'b', 'r', 'b', 'c', 9, 0,
      16             :   /* 16 */ 's', 'b', 'c', 9, 0,
      17             :   /* 21 */ 'a', 'd', 'c', 9, 0,
      18             :   /* 26 */ 'd', 'e', 'c', 9, 0,
      19             :   /* 31 */ 's', 'b', 'i', 'c', 9, 0,
      20             :   /* 37 */ 'i', 'n', 'c', 9, 0,
      21             :   /* 42 */ 'c', 'p', 'c', 9, 0,
      22             :   /* 47 */ 's', 'b', 'r', 'c', 9, 0,
      23             :   /* 53 */ 's', 'p', 'r', 'e', 'a', 'd', 9, 0,
      24             :   /* 61 */ 'a', 'd', 'd', 9, 0,
      25             :   /* 66 */ 'l', 'd', 'd', 9, 0,
      26             :   /* 71 */ 'b', 'l', 'd', 9, 0,
      27             :   /* 76 */ 'a', 'n', 'd', 9, 0,
      28             :   /* 81 */ 's', 't', 'd', 9, 0,
      29             :   /* 86 */ 'b', 'r', 'g', 'e', 9, 0,
      30             :   /* 92 */ 'b', 'r', 'n', 'e', 9, 0,
      31             :   /* 98 */ 'c', 'p', 's', 'e', 9, 0,
      32             :   /* 104 */ 's', 'p', 'w', 'r', 'i', 't', 'e', 9, 0,
      33             :   /* 113 */ 'n', 'e', 'g', 9, 0,
      34             :   /* 118 */ 'x', 'c', 'h', 9, 0,
      35             :   /* 123 */ 'b', 'r', 's', 'h', 9, 0,
      36             :   /* 129 */ 'p', 'u', 's', 'h', 9, 0,
      37             :   /* 135 */ 'c', 'b', 'i', 9, 0,
      38             :   /* 140 */ 's', 'b', 'i', 9, 0,
      39             :   /* 145 */ 's', 'u', 'b', 'i', 9, 0,
      40             :   /* 151 */ 's', 'b', 'c', 'i', 9, 0,
      41             :   /* 157 */ 'l', 'd', 'i', 9, 0,
      42             :   /* 162 */ 'a', 'n', 'd', 'i', 9, 0,
      43             :   /* 168 */ 'b', 'r', 'm', 'i', 9, 0,
      44             :   /* 174 */ 'c', 'p', 'i', 9, 0,
      45             :   /* 179 */ 'o', 'r', 'i', 9, 0,
      46             :   /* 184 */ 's', 't', 'd', 's', 't', 'k', 9, 0,
      47             :   /* 192 */ 's', 't', 'd', 'w', 's', 't', 'k', 9, 0,
      48             :   /* 201 */ 'r', 'c', 'a', 'l', 'l', 9, 0,
      49             :   /* 208 */ 'b', 'r', 'p', 'l', 9, 0,
      50             :   /* 214 */ 'f', 'm', 'u', 'l', 9, 0,
      51             :   /* 220 */ 'c', 'o', 'm', 9, 0,
      52             :   /* 225 */ 'e', 'l', 'p', 'm', 9, 0,
      53             :   /* 231 */ 'i', 'n', 9, 0,
      54             :   /* 235 */ 'b', 'r', 'l', 'o', 9, 0,
      55             :   /* 241 */ 's', 'w', 'a', 'p', 9, 0,
      56             :   /* 247 */ 'c', 'p', 9, 0,
      57             :   /* 251 */ 'r', 'j', 'm', 'p', 9, 0,
      58             :   /* 257 */ 'p', 'o', 'p', 9, 0,
      59             :   /* 262 */ 'b', 'r', 'e', 'q', 9, 0,
      60             :   /* 268 */ 'c', 'b', 'r', 9, 0,
      61             :   /* 273 */ 'b', 'c', 'l', 'r', 9, 0,
      62             :   /* 279 */ 'e', 'o', 'r', 9, 0,
      63             :   /* 284 */ 'r', 'o', 'r', 9, 0,
      64             :   /* 289 */ 'a', 's', 'r', 9, 0,
      65             :   /* 294 */ 'l', 's', 'r', 9, 0,
      66             :   /* 299 */ 'l', 'a', 's', 9, 0,
      67             :   /* 304 */ 'b', 'r', 'b', 's', 9, 0,
      68             :   /* 310 */ 'l', 'd', 's', 9, 0,
      69             :   /* 315 */ 'd', 'e', 's', 9, 0,
      70             :   /* 320 */ 's', 'b', 'i', 's', 9, 0,
      71             :   /* 326 */ 'f', 'm', 'u', 'l', 's', 9, 0,
      72             :   /* 333 */ 's', 'b', 'r', 's', 9, 0,
      73             :   /* 339 */ 's', 't', 's', 9, 0,
      74             :   /* 344 */ 'l', 'a', 't', 9, 0,
      75             :   /* 349 */ 'b', 's', 'e', 't', 9, 0,
      76             :   /* 355 */ 'b', 'r', 'l', 't', 9, 0,
      77             :   /* 361 */ 'b', 's', 't', 9, 0,
      78             :   /* 366 */ 'o', 'u', 't', 9, 0,
      79             :   /* 371 */ 's', 'e', 'x', 't', 9, 0,
      80             :   /* 377 */ 'z', 'e', 'x', 't', 9, 0,
      81             :   /* 383 */ 'f', 'm', 'u', 'l', 's', 'u', 9, 0,
      82             :   /* 391 */ 'm', 'o', 'v', 9, 0,
      83             :   /* 396 */ 's', 'u', 'b', 'w', 9, 0,
      84             :   /* 402 */ 's', 'b', 'c', 'w', 9, 0,
      85             :   /* 408 */ 'a', 'd', 'c', 'w', 9, 0,
      86             :   /* 414 */ 'c', 'p', 'c', 'w', 9, 0,
      87             :   /* 420 */ 'a', 'd', 'd', 'w', 9, 0,
      88             :   /* 426 */ 'l', 'd', 'd', 'w', 9, 0,
      89             :   /* 432 */ 'l', 'd', 'w', 9, 0,
      90             :   /* 437 */ 'a', 'n', 'd', 'w', 9, 0,
      91             :   /* 443 */ 's', 't', 'd', 'w', 9, 0,
      92             :   /* 449 */ 'p', 'u', 's', 'h', 'w', 9, 0,
      93             :   /* 456 */ 's', 'b', 'i', 'w', 9, 0,
      94             :   /* 462 */ 's', 'u', 'b', 'i', 'w', 9, 0,
      95             :   /* 469 */ 's', 'b', 'c', 'i', 'w', 9, 0,
      96             :   /* 476 */ 'a', 'd', 'i', 'w', 9, 0,
      97             :   /* 482 */ 'l', 'd', 'i', 'w', 9, 0,
      98             :   /* 488 */ 'a', 'n', 'd', 'i', 'w', 9, 0,
      99             :   /* 495 */ 'o', 'r', 'i', 'w', 9, 0,
     100             :   /* 501 */ 'r', 'o', 'l', 'w', 9, 0,
     101             :   /* 507 */ 'l', 's', 'l', 'w', 9, 0,
     102             :   /* 513 */ 'c', 'o', 'm', 'w', 9, 0,
     103             :   /* 519 */ 'l', 'p', 'm', 'w', 9, 0,
     104             :   /* 525 */ 'i', 'n', 'w', 9, 0,
     105             :   /* 530 */ 'c', 'p', 'w', 9, 0,
     106             :   /* 535 */ 'p', 'o', 'p', 'w', 9, 0,
     107             :   /* 541 */ 'e', 'o', 'r', 'w', 9, 0,
     108             :   /* 547 */ 'r', 'o', 'r', 'w', 9, 0,
     109             :   /* 553 */ 'a', 's', 'r', 'w', 9, 0,
     110             :   /* 559 */ 'l', 's', 'r', 'w', 9, 0,
     111             :   /* 565 */ 'l', 'd', 's', 'w', 9, 0,
     112             :   /* 571 */ 's', 't', 's', 'w', 9, 0,
     113             :   /* 577 */ 's', 't', 'w', 9, 0,
     114             :   /* 582 */ 'o', 'u', 't', 'w', 9, 0,
     115             :   /* 588 */ 'm', 'o', 'v', 'w', 9, 0,
     116             :   /* 594 */ 'f', 'r', 'm', 'i', 'd', 'x', 9, 0,
     117             :   /* 602 */ 's', 'p', 'm', 32, 0,
     118             :   /* 607 */ 's', 't', 9, '-', 0,
     119             :   /* 612 */ 's', 't', 'w', 9, '-', 0,
     120             :   /* 618 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'P', 'a', 't', 'c', 'h', 'a', 'b', 'l', 'e', 32, 'R', 'E', 'T', '.', 0,
     121             :   /* 649 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'y', 'p', 'e', 'd', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
     122             :   /* 673 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'C', 'u', 's', 't', 'o', 'm', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
     123             :   /* 698 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'n', 't', 'e', 'r', '.', 0,
     124             :   /* 721 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'a', 'i', 'l', 32, 'C', 'a', 'l', 'l', 32, 'E', 'x', 'i', 't', '.', 0,
     125             :   /* 744 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'x', 'i', 't', '.', 0,
     126             :   /* 766 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'E', 'N', 'D', 0,
     127             :   /* 779 */ 'B', 'U', 'N', 'D', 'L', 'E', 0,
     128             :   /* 786 */ 'D', 'B', 'G', '_', 'V', 'A', 'L', 'U', 'E', 0,
     129             :   /* 796 */ 'D', 'B', 'G', '_', 'L', 'A', 'B', 'E', 'L', 0,
     130             :   /* 806 */ '#', 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'D', 'O', 'W', 'N', 0,
     131             :   /* 824 */ '#', 32, 'R', 'o', 'l', '1', '6', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
     132             :   /* 839 */ '#', 32, 'L', 's', 'l', '1', '6', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
     133             :   /* 854 */ '#', 32, 'R', 'o', 'r', '1', '6', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
     134             :   /* 869 */ '#', 32, 'A', 's', 'r', '1', '6', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
     135             :   /* 884 */ '#', 32, 'L', 's', 'r', '1', '6', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
     136             :   /* 899 */ '#', 32, 'S', 'e', 'l', 'e', 'c', 't', '1', '6', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
     137             :   /* 917 */ '#', 32, 'R', 'o', 'l', '8', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
     138             :   /* 931 */ '#', 32, 'L', 's', 'l', '8', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
     139             :   /* 945 */ '#', 32, 'R', 'o', 'r', '8', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
     140             :   /* 959 */ '#', 32, 'A', 's', 'r', '8', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
     141             :   /* 973 */ '#', 32, 'L', 's', 'r', '8', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
     142             :   /* 987 */ '#', 32, 'S', 'e', 'l', 'e', 'c', 't', '8', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
     143             :   /* 1004 */ '#', 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'U', 'P', 0,
     144             :   /* 1020 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'S', 'T', 'A', 'R', 'T', 0,
     145             :   /* 1035 */ 'a', 't', 'o', 'm', 'i', 'c', '_', 'f', 'e', 'n', 'c', 'e', 0,
     146             :   /* 1048 */ 'r', 'e', 't', 'i', 0,
     147             :   /* 1053 */ 'b', 'r', 'e', 'a', 'k', 0,
     148             :   /* 1059 */ '#', 32, 'F', 'E', 'n', 't', 'r', 'y', 32, 'c', 'a', 'l', 'l', 0,
     149             :   /* 1073 */ 'e', 'i', 'c', 'a', 'l', 'l', 0,
     150             :   /* 1080 */ 'e', 'l', 'p', 'm', 0,
     151             :   /* 1085 */ 's', 'p', 'm', 0,
     152             :   /* 1089 */ 's', 'l', 'e', 'e', 'p', 0,
     153             :   /* 1095 */ 'e', 'i', 'j', 'm', 'p', 0,
     154             :   /* 1101 */ 'a', 't', 'o', 'm', 'i', 'c', '_', 'o', 'p', 0,
     155             :   /* 1111 */ 'n', 'o', 'p', 0,
     156             :   /* 1115 */ 'w', 'd', 'r', 0,
     157             :   /* 1119 */ 'r', 'e', 't', 0,
     158             :   };
     159             : 
     160             :   static const uint16_t OpInfo0[] = {
     161             :     0U, // PHI
     162             :     0U, // INLINEASM
     163             :     0U, // CFI_INSTRUCTION
     164             :     0U, // EH_LABEL
     165             :     0U, // GC_LABEL
     166             :     0U, // ANNOTATION_LABEL
     167             :     0U, // KILL
     168             :     0U, // EXTRACT_SUBREG
     169             :     0U, // INSERT_SUBREG
     170             :     0U, // IMPLICIT_DEF
     171             :     0U, // SUBREG_TO_REG
     172             :     0U, // COPY_TO_REGCLASS
     173             :     787U,       // DBG_VALUE
     174             :     797U,       // DBG_LABEL
     175             :     0U, // REG_SEQUENCE
     176             :     0U, // COPY
     177             :     780U,       // BUNDLE
     178             :     1021U,      // LIFETIME_START
     179             :     767U,       // LIFETIME_END
     180             :     0U, // STACKMAP
     181             :     1060U,      // FENTRY_CALL
     182             :     0U, // PATCHPOINT
     183             :     0U, // LOAD_STACK_GUARD
     184             :     0U, // STATEPOINT
     185             :     0U, // LOCAL_ESCAPE
     186             :     0U, // FAULTING_OP
     187             :     0U, // PATCHABLE_OP
     188             :     699U,       // PATCHABLE_FUNCTION_ENTER
     189             :     619U,       // PATCHABLE_RET
     190             :     745U,       // PATCHABLE_FUNCTION_EXIT
     191             :     722U,       // PATCHABLE_TAIL_CALL
     192             :     674U,       // PATCHABLE_EVENT_CALL
     193             :     650U,       // PATCHABLE_TYPED_EVENT_CALL
     194             :     0U, // ICALL_BRANCH_FUNNEL
     195             :     0U, // G_ADD
     196             :     0U, // G_SUB
     197             :     0U, // G_MUL
     198             :     0U, // G_SDIV
     199             :     0U, // G_UDIV
     200             :     0U, // G_SREM
     201             :     0U, // G_UREM
     202             :     0U, // G_AND
     203             :     0U, // G_OR
     204             :     0U, // G_XOR
     205             :     0U, // G_IMPLICIT_DEF
     206             :     0U, // G_PHI
     207             :     0U, // G_FRAME_INDEX
     208             :     0U, // G_GLOBAL_VALUE
     209             :     0U, // G_EXTRACT
     210             :     0U, // G_UNMERGE_VALUES
     211             :     0U, // G_INSERT
     212             :     0U, // G_MERGE_VALUES
     213             :     0U, // G_PTRTOINT
     214             :     0U, // G_INTTOPTR
     215             :     0U, // G_BITCAST
     216             :     0U, // G_INTRINSIC_TRUNC
     217             :     0U, // G_INTRINSIC_ROUND
     218             :     0U, // G_LOAD
     219             :     0U, // G_SEXTLOAD
     220             :     0U, // G_ZEXTLOAD
     221             :     0U, // G_STORE
     222             :     0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
     223             :     0U, // G_ATOMIC_CMPXCHG
     224             :     0U, // G_ATOMICRMW_XCHG
     225             :     0U, // G_ATOMICRMW_ADD
     226             :     0U, // G_ATOMICRMW_SUB
     227             :     0U, // G_ATOMICRMW_AND
     228             :     0U, // G_ATOMICRMW_NAND
     229             :     0U, // G_ATOMICRMW_OR
     230             :     0U, // G_ATOMICRMW_XOR
     231             :     0U, // G_ATOMICRMW_MAX
     232             :     0U, // G_ATOMICRMW_MIN
     233             :     0U, // G_ATOMICRMW_UMAX
     234             :     0U, // G_ATOMICRMW_UMIN
     235             :     0U, // G_BRCOND
     236             :     0U, // G_BRINDIRECT
     237             :     0U, // G_INTRINSIC
     238             :     0U, // G_INTRINSIC_W_SIDE_EFFECTS
     239             :     0U, // G_ANYEXT
     240             :     0U, // G_TRUNC
     241             :     0U, // G_CONSTANT
     242             :     0U, // G_FCONSTANT
     243             :     0U, // G_VASTART
     244             :     0U, // G_VAARG
     245             :     0U, // G_SEXT
     246             :     0U, // G_ZEXT
     247             :     0U, // G_SHL
     248             :     0U, // G_LSHR
     249             :     0U, // G_ASHR
     250             :     0U, // G_ICMP
     251             :     0U, // G_FCMP
     252             :     0U, // G_SELECT
     253             :     0U, // G_UADDO
     254             :     0U, // G_UADDE
     255             :     0U, // G_USUBO
     256             :     0U, // G_USUBE
     257             :     0U, // G_SADDO
     258             :     0U, // G_SADDE
     259             :     0U, // G_SSUBO
     260             :     0U, // G_SSUBE
     261             :     0U, // G_UMULO
     262             :     0U, // G_SMULO
     263             :     0U, // G_UMULH
     264             :     0U, // G_SMULH
     265             :     0U, // G_FADD
     266             :     0U, // G_FSUB
     267             :     0U, // G_FMUL
     268             :     0U, // G_FMA
     269             :     0U, // G_FDIV
     270             :     0U, // G_FREM
     271             :     0U, // G_FPOW
     272             :     0U, // G_FEXP
     273             :     0U, // G_FEXP2
     274             :     0U, // G_FLOG
     275             :     0U, // G_FLOG2
     276             :     0U, // G_FNEG
     277             :     0U, // G_FPEXT
     278             :     0U, // G_FPTRUNC
     279             :     0U, // G_FPTOSI
     280             :     0U, // G_FPTOUI
     281             :     0U, // G_SITOFP
     282             :     0U, // G_UITOFP
     283             :     0U, // G_FABS
     284             :     0U, // G_GEP
     285             :     0U, // G_PTR_MASK
     286             :     0U, // G_BR
     287             :     0U, // G_INSERT_VECTOR_ELT
     288             :     0U, // G_EXTRACT_VECTOR_ELT
     289             :     0U, // G_SHUFFLE_VECTOR
     290             :     0U, // G_CTTZ
     291             :     0U, // G_CTTZ_ZERO_UNDEF
     292             :     0U, // G_CTLZ
     293             :     0U, // G_CTLZ_ZERO_UNDEF
     294             :     0U, // G_CTPOP
     295             :     0U, // G_BSWAP
     296             :     0U, // G_ADDRSPACE_CAST
     297             :     0U, // G_BLOCK_ADDR
     298             :     2457U,      // ADCWRdRr
     299             :     2469U,      // ADDWRdRr
     300             :     807U,       // ADJCALLSTACKDOWN
     301             :     1005U,      // ADJCALLSTACKUP
     302             :     2537U,      // ANDIWRdK
     303             :     2486U,      // ANDWRdRr
     304             :     18986U,     // ASRWRd
     305             :     870U,       // Asr16
     306             :     960U,       // Asr8
     307             :     1036U,      // AtomicFence
     308             :     1102U,      // AtomicLoad16
     309             :     1102U,      // AtomicLoad8
     310             :     1102U,      // AtomicLoadAdd16
     311             :     1102U,      // AtomicLoadAdd8
     312             :     1102U,      // AtomicLoadAnd16
     313             :     1102U,      // AtomicLoadAnd8
     314             :     1102U,      // AtomicLoadOr16
     315             :     1102U,      // AtomicLoadOr8
     316             :     1102U,      // AtomicLoadSub16
     317             :     1102U,      // AtomicLoadSub8
     318             :     1102U,      // AtomicLoadXor16
     319             :     1102U,      // AtomicLoadXor8
     320             :     1102U,      // AtomicStore16
     321             :     1102U,      // AtomicStore8
     322             :     18946U,     // COMWRd
     323             :     2463U,      // CPCWRdRr
     324             :     2579U,      // CPWRdRr
     325             :     2590U,      // EORWRdRr
     326             :     2643U,      // FRMIDX
     327             :     2574U,      // INWRdA
     328             :     2475U,      // LDDWRdPtrQ
     329             :     2475U,      // LDDWRdYQ
     330             :     2531U,      // LDIWRdK
     331             :     2614U,      // LDSWRdK
     332             :     2481U,      // LDWRdPtr
     333             :     35249U,     // LDWRdPtrPd
     334             :     2481U,      // LDWRdPtrPi
     335             :     2568U,      // LPMWRdZ
     336             :     2568U,      // LPMWRdZPi
     337             :     18940U,     // LSLWRd
     338             :     18992U,     // LSRWRd
     339             :     840U,       // Lsl16
     340             :     932U,       // Lsl8
     341             :     885U,       // Lsr16
     342             :     974U,       // Lsr8
     343             :     2544U,      // ORIWRdK
     344             :     2591U,      // ORWRdRr
     345             :     2631U,      // OUTWARr
     346             :     18968U,     // POPWRd
     347             :     18882U,     // PUSHWRr
     348             :     18934U,     // ROLWRd
     349             :     18980U,     // RORWRd
     350             :     825U,       // Rol16
     351             :     918U,       // Rol8
     352             :     855U,       // Ror16
     353             :     946U,       // Ror8
     354             :     2518U,      // SBCIWRdK
     355             :     2451U,      // SBCWRdRr
     356             :     2420U,      // SEXT
     357             :     2102U,      // SPREAD
     358             :     2153U,      // SPWRITE
     359             :     2233U,      // STDSPQRr
     360             :     4540U,      // STDWPtrQRr
     361             :     2241U,      // STDWSPQRr
     362             :     2620U,      // STSWKRr
     363             :     6757U,      // STWPtrPdRr
     364             :     55874U,     // STWPtrPiRr
     365             :     2626U,      // STWPtrRr
     366             :     2511U,      // SUBIWRdK
     367             :     2445U,      // SUBWRdRr
     368             :     900U,       // Select16
     369             :     988U,       // Select8
     370             :     2426U,      // ZEXT
     371             :     2070U,      // ADCRdRr
     372             :     2110U,      // ADDRdRr
     373             :     2525U,      // ADIWRdK
     374             :     2211U,      // ANDIRdK
     375             :     2125U,      // ANDRdRr
     376             :     18722U,     // ASRRd
     377             :     18706U,     // BCLRs
     378             :     2120U,      // BLD
     379             :     2059U,      // BRBCsk
     380             :     2353U,      // BRBSsk
     381             :     1054U,      // BREAK
     382             :     8455U,      // BREQk
     383             :     8279U,      // BRGEk
     384             :     8428U,      // BRLOk
     385             :     8548U,      // BRLTk
     386             :     8361U,      // BRMIk
     387             :     8285U,      // BRNEk
     388             :     8401U,      // BRPLk
     389             :     8316U,      // BRSHk
     390             :     18782U,     // BSETs
     391             :     2410U,      // BST
     392             :     18635U,     // CALLk
     393             :     2184U,      // CBIAb
     394             :     2317U,      // CBRRdK
     395             :     18653U,     // COMRd
     396             :     2091U,      // CPCRdRr
     397             :     2223U,      // CPIRdK
     398             :     2296U,      // CPRdRr
     399             :     2147U,      // CPSE
     400             :     18459U,     // DECRd
     401             :     18748U,     // DESK
     402             :     1074U,      // EICALL
     403             :     1096U,      // EIJMP
     404             :     1081U,      // ELPM
     405             :     2274U,      // ELPMRdZ
     406             :     2274U,      // ELPMRdZPi
     407             :     2328U,      // EORRdRr
     408             :     2263U,      // FMUL
     409             :     2375U,      // FMULS
     410             :     2432U,      // FMULSU
     411             :     1075U,      // ICALL
     412             :     1097U,      // IJMP
     413             :     18470U,     // INCRd
     414             :     2280U,      // INRdA
     415             :     18685U,     // JMPk
     416             :     6150U,      // LACZRd
     417             :     6444U,      // LASZRd
     418             :     6489U,      // LATZRd
     419             :     2115U,      // LDDRdPtrQ
     420             :     2206U,      // LDIRdK
     421             :     2121U,      // LDRdPtr
     422             :     34889U,     // LDRdPtrPd
     423             :     2121U,      // LDRdPtrPi
     424             :     2359U,      // LDSRdK
     425             :     1082U,      // LPM
     426             :     2275U,      // LPMRdZ
     427             :     2275U,      // LPMRdZPi
     428             :     18727U,     // LSRRd
     429             :     2440U,      // MOVRdRr
     430             :     2637U,      // MOVWRdRr
     431             :     2264U,      // MULRdRr
     432             :     2376U,      // MULSRdRr
     433             :     2433U,      // MULSURdRr
     434             :     18546U,     // NEGRd
     435             :     1112U,      // NOP
     436             :     2228U,      // ORIRdK
     437             :     2329U,      // ORRdRr
     438             :     2415U,      // OUTARr
     439             :     18690U,     // POPRd
     440             :     18562U,     // PUSHRr
     441             :     8394U,      // RCALLk
     442             :     1120U,      // RET
     443             :     1049U,      // RETI
     444             :     8444U,      // RJMPk
     445             :     18717U,     // RORRd
     446             :     2200U,      // SBCIRdK
     447             :     2065U,      // SBCRdRr
     448             :     2189U,      // SBIAb
     449             :     2080U,      // SBICAb
     450             :     2369U,      // SBISAb
     451             :     2505U,      // SBIWRdK
     452             :     2096U,      // SBRCRrB
     453             :     2382U,      // SBRSRrB
     454             :     1090U,      // SLEEP
     455             :     1086U,      // SPM
     456             :     2651U,      // SPMZPi
     457             :     4178U,      // STDPtrQRr
     458             :     6752U,      // STPtrPdRr
     459             :     55659U,     // STPtrPiRr
     460             :     2411U,      // STPtrRr
     461             :     2388U,      // STSKRr
     462             :     2194U,      // SUBIRdK
     463             :     2049U,      // SUBRdRr
     464             :     18674U,     // SWAPRd
     465             :     1116U,      // WDR
     466             :     6263U,      // XCHZRd
     467             :   };
     468             : 
     469             :   static const uint8_t OpInfo1[] = {
     470             :     0U, // PHI
     471             :     0U, // INLINEASM
     472             :     0U, // CFI_INSTRUCTION
     473             :     0U, // EH_LABEL
     474             :     0U, // GC_LABEL
     475             :     0U, // ANNOTATION_LABEL
     476             :     0U, // KILL
     477             :     0U, // EXTRACT_SUBREG
     478             :     0U, // INSERT_SUBREG
     479             :     0U, // IMPLICIT_DEF
     480             :     0U, // SUBREG_TO_REG
     481             :     0U, // COPY_TO_REGCLASS
     482             :     0U, // DBG_VALUE
     483             :     0U, // DBG_LABEL
     484             :     0U, // REG_SEQUENCE
     485             :     0U, // COPY
     486             :     0U, // BUNDLE
     487             :     0U, // LIFETIME_START
     488             :     0U, // LIFETIME_END
     489             :     0U, // STACKMAP
     490             :     0U, // FENTRY_CALL
     491             :     0U, // PATCHPOINT
     492             :     0U, // LOAD_STACK_GUARD
     493             :     0U, // STATEPOINT
     494             :     0U, // LOCAL_ESCAPE
     495             :     0U, // FAULTING_OP
     496             :     0U, // PATCHABLE_OP
     497             :     0U, // PATCHABLE_FUNCTION_ENTER
     498             :     0U, // PATCHABLE_RET
     499             :     0U, // PATCHABLE_FUNCTION_EXIT
     500             :     0U, // PATCHABLE_TAIL_CALL
     501             :     0U, // PATCHABLE_EVENT_CALL
     502             :     0U, // PATCHABLE_TYPED_EVENT_CALL
     503             :     0U, // ICALL_BRANCH_FUNNEL
     504             :     0U, // G_ADD
     505             :     0U, // G_SUB
     506             :     0U, // G_MUL
     507             :     0U, // G_SDIV
     508             :     0U, // G_UDIV
     509             :     0U, // G_SREM
     510             :     0U, // G_UREM
     511             :     0U, // G_AND
     512             :     0U, // G_OR
     513             :     0U, // G_XOR
     514             :     0U, // G_IMPLICIT_DEF
     515             :     0U, // G_PHI
     516             :     0U, // G_FRAME_INDEX
     517             :     0U, // G_GLOBAL_VALUE
     518             :     0U, // G_EXTRACT
     519             :     0U, // G_UNMERGE_VALUES
     520             :     0U, // G_INSERT
     521             :     0U, // G_MERGE_VALUES
     522             :     0U, // G_PTRTOINT
     523             :     0U, // G_INTTOPTR
     524             :     0U, // G_BITCAST
     525             :     0U, // G_INTRINSIC_TRUNC
     526             :     0U, // G_INTRINSIC_ROUND
     527             :     0U, // G_LOAD
     528             :     0U, // G_SEXTLOAD
     529             :     0U, // G_ZEXTLOAD
     530             :     0U, // G_STORE
     531             :     0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
     532             :     0U, // G_ATOMIC_CMPXCHG
     533             :     0U, // G_ATOMICRMW_XCHG
     534             :     0U, // G_ATOMICRMW_ADD
     535             :     0U, // G_ATOMICRMW_SUB
     536             :     0U, // G_ATOMICRMW_AND
     537             :     0U, // G_ATOMICRMW_NAND
     538             :     0U, // G_ATOMICRMW_OR
     539             :     0U, // G_ATOMICRMW_XOR
     540             :     0U, // G_ATOMICRMW_MAX
     541             :     0U, // G_ATOMICRMW_MIN
     542             :     0U, // G_ATOMICRMW_UMAX
     543             :     0U, // G_ATOMICRMW_UMIN
     544             :     0U, // G_BRCOND
     545             :     0U, // G_BRINDIRECT
     546             :     0U, // G_INTRINSIC
     547             :     0U, // G_INTRINSIC_W_SIDE_EFFECTS
     548             :     0U, // G_ANYEXT
     549             :     0U, // G_TRUNC
     550             :     0U, // G_CONSTANT
     551             :     0U, // G_FCONSTANT
     552             :     0U, // G_VASTART
     553             :     0U, // G_VAARG
     554             :     0U, // G_SEXT
     555             :     0U, // G_ZEXT
     556             :     0U, // G_SHL
     557             :     0U, // G_LSHR
     558             :     0U, // G_ASHR
     559             :     0U, // G_ICMP
     560             :     0U, // G_FCMP
     561             :     0U, // G_SELECT
     562             :     0U, // G_UADDO
     563             :     0U, // G_UADDE
     564             :     0U, // G_USUBO
     565             :     0U, // G_USUBE
     566             :     0U, // G_SADDO
     567             :     0U, // G_SADDE
     568             :     0U, // G_SSUBO
     569             :     0U, // G_SSUBE
     570             :     0U, // G_UMULO
     571             :     0U, // G_SMULO
     572             :     0U, // G_UMULH
     573             :     0U, // G_SMULH
     574             :     0U, // G_FADD
     575             :     0U, // G_FSUB
     576             :     0U, // G_FMUL
     577             :     0U, // G_FMA
     578             :     0U, // G_FDIV
     579             :     0U, // G_FREM
     580             :     0U, // G_FPOW
     581             :     0U, // G_FEXP
     582             :     0U, // G_FEXP2
     583             :     0U, // G_FLOG
     584             :     0U, // G_FLOG2
     585             :     0U, // G_FNEG
     586             :     0U, // G_FPEXT
     587             :     0U, // G_FPTRUNC
     588             :     0U, // G_FPTOSI
     589             :     0U, // G_FPTOUI
     590             :     0U, // G_SITOFP
     591             :     0U, // G_UITOFP
     592             :     0U, // G_FABS
     593             :     0U, // G_GEP
     594             :     0U, // G_PTR_MASK
     595             :     0U, // G_BR
     596             :     0U, // G_INSERT_VECTOR_ELT
     597             :     0U, // G_EXTRACT_VECTOR_ELT
     598             :     0U, // G_SHUFFLE_VECTOR
     599             :     0U, // G_CTTZ
     600             :     0U, // G_CTTZ_ZERO_UNDEF
     601             :     0U, // G_CTLZ
     602             :     0U, // G_CTLZ_ZERO_UNDEF
     603             :     0U, // G_CTPOP
     604             :     0U, // G_BSWAP
     605             :     0U, // G_ADDRSPACE_CAST
     606             :     0U, // G_BLOCK_ADDR
     607             :     0U, // ADCWRdRr
     608             :     0U, // ADDWRdRr
     609             :     0U, // ADJCALLSTACKDOWN
     610             :     0U, // ADJCALLSTACKUP
     611             :     0U, // ANDIWRdK
     612             :     0U, // ANDWRdRr
     613             :     0U, // ASRWRd
     614             :     0U, // Asr16
     615             :     0U, // Asr8
     616             :     0U, // AtomicFence
     617             :     0U, // AtomicLoad16
     618             :     0U, // AtomicLoad8
     619             :     0U, // AtomicLoadAdd16
     620             :     0U, // AtomicLoadAdd8
     621             :     0U, // AtomicLoadAnd16
     622             :     0U, // AtomicLoadAnd8
     623             :     0U, // AtomicLoadOr16
     624             :     0U, // AtomicLoadOr8
     625             :     0U, // AtomicLoadSub16
     626             :     0U, // AtomicLoadSub8
     627             :     0U, // AtomicLoadXor16
     628             :     0U, // AtomicLoadXor8
     629             :     0U, // AtomicStore16
     630             :     0U, // AtomicStore8
     631             :     0U, // COMWRd
     632             :     2U, // CPCWRdRr
     633             :     2U, // CPWRdRr
     634             :     0U, // EORWRdRr
     635             :     18U,        // FRMIDX
     636             :     2U, // INWRdA
     637             :     4U, // LDDWRdPtrQ
     638             :     4U, // LDDWRdYQ
     639             :     2U, // LDIWRdK
     640             :     2U, // LDSWRdK
     641             :     2U, // LDWRdPtr
     642             :     0U, // LDWRdPtrPd
     643             :     32U,        // LDWRdPtrPi
     644             :     2U, // LPMWRdZ
     645             :     34U,        // LPMWRdZPi
     646             :     0U, // LSLWRd
     647             :     0U, // LSRWRd
     648             :     0U, // Lsl16
     649             :     0U, // Lsl8
     650             :     0U, // Lsr16
     651             :     0U, // Lsr8
     652             :     0U, // ORIWRdK
     653             :     0U, // ORWRdRr
     654             :     2U, // OUTWARr
     655             :     0U, // POPWRd
     656             :     0U, // PUSHWRr
     657             :     0U, // ROLWRd
     658             :     0U, // RORWRd
     659             :     0U, // Rol16
     660             :     0U, // Rol8
     661             :     0U, // Ror16
     662             :     0U, // Ror8
     663             :     0U, // SBCIWRdK
     664             :     0U, // SBCWRdRr
     665             :     2U, // SEXT
     666             :     2U, // SPREAD
     667             :     2U, // SPWRITE
     668             :     0U, // STDSPQRr
     669             :     0U, // STDWPtrQRr
     670             :     0U, // STDWSPQRr
     671             :     2U, // STSWKRr
     672             :     0U, // STWPtrPdRr
     673             :     0U, // STWPtrPiRr
     674             :     2U, // STWPtrRr
     675             :     0U, // SUBIWRdK
     676             :     0U, // SUBWRdRr
     677             :     0U, // Select16
     678             :     0U, // Select8
     679             :     2U, // ZEXT
     680             :     0U, // ADCRdRr
     681             :     0U, // ADDRdRr
     682             :     0U, // ADIWRdK
     683             :     0U, // ANDIRdK
     684             :     0U, // ANDRdRr
     685             :     0U, // ASRRd
     686             :     0U, // BCLRs
     687             :     2U, // BLD
     688             :     6U, // BRBCsk
     689             :     6U, // BRBSsk
     690             :     0U, // BREAK
     691             :     0U, // BREQk
     692             :     0U, // BRGEk
     693             :     0U, // BRLOk
     694             :     0U, // BRLTk
     695             :     0U, // BRMIk
     696             :     0U, // BRNEk
     697             :     0U, // BRPLk
     698             :     0U, // BRSHk
     699             :     0U, // BSETs
     700             :     2U, // BST
     701             :     0U, // CALLk
     702             :     2U, // CBIAb
     703             :     0U, // CBRRdK
     704             :     0U, // COMRd
     705             :     2U, // CPCRdRr
     706             :     2U, // CPIRdK
     707             :     2U, // CPRdRr
     708             :     2U, // CPSE
     709             :     0U, // DECRd
     710             :     0U, // DESK
     711             :     0U, // EICALL
     712             :     0U, // EIJMP
     713             :     0U, // ELPM
     714             :     2U, // ELPMRdZ
     715             :     34U,        // ELPMRdZPi
     716             :     0U, // EORRdRr
     717             :     2U, // FMUL
     718             :     2U, // FMULS
     719             :     2U, // FMULSU
     720             :     0U, // ICALL
     721             :     0U, // IJMP
     722             :     0U, // INCRd
     723             :     2U, // INRdA
     724             :     0U, // JMPk
     725             :     8U, // LACZRd
     726             :     8U, // LASZRd
     727             :     8U, // LATZRd
     728             :     4U, // LDDRdPtrQ
     729             :     2U, // LDIRdK
     730             :     2U, // LDRdPtr
     731             :     0U, // LDRdPtrPd
     732             :     32U,        // LDRdPtrPi
     733             :     2U, // LDSRdK
     734             :     0U, // LPM
     735             :     2U, // LPMRdZ
     736             :     34U,        // LPMRdZPi
     737             :     0U, // LSRRd
     738             :     2U, // MOVRdRr
     739             :     2U, // MOVWRdRr
     740             :     2U, // MULRdRr
     741             :     2U, // MULSRdRr
     742             :     2U, // MULSURdRr
     743             :     0U, // NEGRd
     744             :     0U, // NOP
     745             :     0U, // ORIRdK
     746             :     0U, // ORRdRr
     747             :     2U, // OUTARr
     748             :     0U, // POPRd
     749             :     0U, // PUSHRr
     750             :     0U, // RCALLk
     751             :     0U, // RET
     752             :     0U, // RETI
     753             :     0U, // RJMPk
     754             :     0U, // RORRd
     755             :     0U, // SBCIRdK
     756             :     0U, // SBCRdRr
     757             :     2U, // SBIAb
     758             :     2U, // SBICAb
     759             :     2U, // SBISAb
     760             :     0U, // SBIWRdK
     761             :     2U, // SBRCRrB
     762             :     2U, // SBRSRrB
     763             :     0U, // SLEEP
     764             :     0U, // SPM
     765             :     1U, // SPMZPi
     766             :     0U, // STDPtrQRr
     767             :     0U, // STPtrPdRr
     768             :     0U, // STPtrPiRr
     769             :     2U, // STPtrRr
     770             :     2U, // STSKRr
     771             :     0U, // SUBIRdK
     772             :     0U, // SUBRdRr
     773             :     0U, // SWAPRd
     774             :     0U, // WDR
     775             :     8U, // XCHZRd
     776             :   };
     777             : 
     778        9094 :   O << "\t";
     779             : 
     780             :   // Emit the opcode for the instruction.
     781             :   uint32_t Bits = 0;
     782        9094 :   Bits |= OpInfo0[MI->getOpcode()] << 0;
     783        9094 :   Bits |= OpInfo1[MI->getOpcode()] << 16;
     784             :   assert(Bits != 0 && "Cannot print this instruction.");
     785        9094 :   O << AsmStrs+(Bits & 2047)-1;
     786             : 
     787             : 
     788             :   // Fragment 0 encoded into 3 bits for 5 unique commands.
     789        9094 :   switch ((Bits >> 11) & 7) {
     790           0 :   default: llvm_unreachable("Invalid command number.");
     791             :   case 0:
     792             :     // DBG_VALUE, DBG_LABEL, BUNDLE, LIFETIME_START, LIFETIME_END, FENTRY_CAL...
     793             :     return;
     794             :     break;
     795        4205 :   case 1:
     796             :     // ADCWRdRr, ADDWRdRr, ANDIWRdK, ANDWRdRr, ASRWRd, COMWRd, CPCWRdRr, CPWR...
     797        4205 :     printOperand(MI, 0, O);
     798        4205 :     break;
     799         169 :   case 2:
     800             :     // STDWPtrQRr, STDPtrQRr
     801         169 :     printMemri(MI, 0, O);
     802         169 :     O << ", ";
     803         169 :     printOperand(MI, 2, O);
     804         169 :     return;
     805             :     break;
     806          16 :   case 3:
     807             :     // STWPtrPdRr, STWPtrPiRr, LACZRd, LASZRd, LATZRd, STPtrPdRr, STPtrPiRr, ...
     808          16 :     printOperand(MI, 1, O);
     809          16 :     break;
     810         212 :   case 4:
     811             :     // BREQk, BRGEk, BRLOk, BRLTk, BRMIk, BRNEk, BRPLk, BRSHk, RCALLk, RJMPk
     812         212 :     printPCRelImm(MI, 0, O);
     813         212 :     return;
     814             :     break;
     815             :   }
     816             : 
     817             : 
     818             :   // Fragment 1 encoded into 3 bits for 5 unique commands.
     819        4221 :   switch ((Bits >> 14) & 7) {
     820           0 :   default: llvm_unreachable("Invalid command number.");
     821        3123 :   case 0:
     822             :     // ADCWRdRr, ADDWRdRr, ANDIWRdK, ANDWRdRr, CPCWRdRr, CPWRdRr, EORWRdRr, F...
     823        3123 :     O << ", ";
     824             :     break;
     825             :   case 1:
     826             :     // ASRWRd, COMWRd, LSLWRd, LSRWRd, POPWRd, PUSHWRr, ROLWRd, RORWRd, ASRRd...
     827             :     return;
     828             :     break;
     829           0 :   case 2:
     830             :     // LDWRdPtrPd, LDRdPtrPd
     831           0 :     O << ", -";
     832           0 :     printOperand(MI, 2, O);
     833           0 :     return;
     834             :     break;
     835           0 :   case 3:
     836             :     // STWPtrPiRr, STPtrPiRr
     837           0 :     O << "+, ";
     838           0 :     printOperand(MI, 2, O);
     839           0 :     return;
     840             :     break;
     841             :   case 4:
     842             :     // SPMZPi
     843             :     O << '+';
     844             :     return;
     845             :     break;
     846             :   }
     847             : 
     848             : 
     849             :   // Fragment 2 encoded into 3 bits for 5 unique commands.
     850        3123 :   switch ((Bits >> 17) & 7) {
     851           0 :   default: llvm_unreachable("Invalid command number.");
     852         625 :   case 0:
     853             :     // ADCWRdRr, ADDWRdRr, ANDIWRdK, ANDWRdRr, EORWRdRr, LDWRdPtrPi, ORIWRdK,...
     854         625 :     printOperand(MI, 2, O);
     855         625 :     break;
     856        2246 :   case 1:
     857             :     // CPCWRdRr, CPWRdRr, FRMIDX, INWRdA, LDIWRdK, LDSWRdK, LDWRdPtr, LPMWRdZ...
     858        2246 :     printOperand(MI, 1, O);
     859        2246 :     break;
     860         232 :   case 2:
     861             :     // LDDWRdPtrQ, LDDWRdYQ, LDDRdPtrQ
     862         232 :     printMemri(MI, 1, O);
     863         232 :     return;
     864             :     break;
     865           4 :   case 3:
     866             :     // BRBCsk, BRBSsk
     867           4 :     printPCRelImm(MI, 1, O);
     868           4 :     return;
     869             :     break;
     870          16 :   case 4:
     871             :     // LACZRd, LASZRd, LATZRd, XCHZRd
     872          16 :     printOperand(MI, 0, O);
     873          16 :     return;
     874             :     break;
     875             :   }
     876             : 
     877             : 
     878             :   // Fragment 3 encoded into 2 bits for 3 unique commands.
     879        2871 :   switch ((Bits >> 20) & 3) {
     880           0 :   default: llvm_unreachable("Invalid command number.");
     881             :   case 0:
     882             :     // ADCWRdRr, ADDWRdRr, ANDIWRdK, ANDWRdRr, CPCWRdRr, CPWRdRr, EORWRdRr, I...
     883             :     return;
     884             :     break;
     885           0 :   case 1:
     886             :     // FRMIDX
     887           0 :     O << ", ";
     888           0 :     printOperand(MI, 2, O);
     889           0 :     return;
     890             :     break;
     891             :   case 2:
     892             :     // LDWRdPtrPi, LPMWRdZPi, ELPMRdZPi, LDRdPtrPi, LPMRdZPi
     893             :     O << '+';
     894             :     return;
     895             :     break;
     896             :   }
     897             : 
     898             : }
     899             : 
     900             : 
     901             : /// getRegisterName - This method is automatically generated by tblgen
     902             : /// from the register set description.  This returns the assembler name
     903             : /// for the specified register.
     904        6509 : const char *AVRInstPrinter::
     905             : getRegisterName(unsigned RegNo, unsigned AltIdx) {
     906             :   assert(RegNo && RegNo < 53 && "Invalid register number!");
     907             : 
     908             :   static const char AsmStrsNoRegAltName[] = {
     909             :   /* 0 */ 'r', '1', '1', ':', 'r', '1', '0', 0,
     910             :   /* 8 */ 'r', '2', '1', ':', 'r', '2', '0', 0,
     911             :   /* 16 */ 'r', '3', '1', ':', 'r', '3', '0', 0,
     912             :   /* 24 */ 'r', '1', ':', 'r', '0', 0,
     913             :   /* 30 */ 'r', '1', '1', 0,
     914             :   /* 34 */ 'r', '2', '1', 0,
     915             :   /* 38 */ 'r', '3', '1', 0,
     916             :   /* 42 */ 'r', '1', 0,
     917             :   /* 45 */ 'r', '1', '3', ':', 'r', '1', '2', 0,
     918             :   /* 53 */ 'r', '2', '3', ':', 'r', '2', '2', 0,
     919             :   /* 61 */ 'r', '3', ':', 'r', '2', 0,
     920             :   /* 67 */ 'r', '1', '3', 0,
     921             :   /* 71 */ 'r', '2', '3', 0,
     922             :   /* 75 */ 'r', '3', 0,
     923             :   /* 78 */ 'r', '1', '5', ':', 'r', '1', '4', 0,
     924             :   /* 86 */ 'r', '2', '5', ':', 'r', '2', '4', 0,
     925             :   /* 94 */ 'r', '5', ':', 'r', '4', 0,
     926             :   /* 100 */ 'r', '1', '5', 0,
     927             :   /* 104 */ 'r', '2', '5', 0,
     928             :   /* 108 */ 'r', '5', 0,
     929             :   /* 111 */ 'r', '1', '7', ':', 'r', '1', '6', 0,
     930             :   /* 119 */ 'r', '2', '7', ':', 'r', '2', '6', 0,
     931             :   /* 127 */ 'r', '7', ':', 'r', '6', 0,
     932             :   /* 133 */ 'r', '1', '7', 0,
     933             :   /* 137 */ 'r', '2', '7', 0,
     934             :   /* 141 */ 'r', '7', 0,
     935             :   /* 144 */ 'r', '1', '9', ':', 'r', '1', '8', 0,
     936             :   /* 152 */ 'r', '2', '9', ':', 'r', '2', '8', 0,
     937             :   /* 160 */ 'r', '9', ':', 'r', '8', 0,
     938             :   /* 166 */ 'r', '1', '9', 0,
     939             :   /* 170 */ 'r', '2', '9', 0,
     940             :   /* 174 */ 'r', '9', 0,
     941             :   /* 177 */ 'S', 'P', 'H', 0,
     942             :   /* 181 */ 'S', 'P', 'L', 0,
     943             :   /* 185 */ 'S', 'P', 0,
     944             :   /* 188 */ 'F', 'L', 'A', 'G', 'S', 0,
     945             :   };
     946             : 
     947             :   static const uint8_t RegAsmOffsetNoRegAltName[] = {
     948             :     185, 177, 181, 188, 27, 42, 64, 75, 97, 108, 130, 141, 163, 174, 
     949             :     4, 30, 49, 67, 82, 100, 115, 133, 148, 166, 12, 34, 57, 71, 
     950             :     90, 104, 123, 137, 156, 170, 20, 38, 24, 61, 94, 127, 160, 0, 
     951             :     45, 78, 111, 144, 8, 53, 86, 119, 152, 16, 
     952             :   };
     953             : 
     954             :   static const char AsmStrsptr[] = {
     955             :   /* 0 */ 'X', 0,
     956             :   /* 2 */ 'Y', 0,
     957             :   /* 4 */ 'Z', 0,
     958             :   };
     959             : 
     960             :   static const uint8_t RegAsmOffsetptr[] = {
     961             :     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
     962             :     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
     963             :     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
     964             :     1, 1, 1, 1, 1, 1, 1, 0, 2, 4, 
     965             :   };
     966             : 
     967        6509 :   switch(AltIdx) {
     968           0 :   default: llvm_unreachable("Invalid register alt name index!");
     969        5936 :   case AVR::NoRegAltName:
     970             :     assert(*(AsmStrsNoRegAltName+RegAsmOffsetNoRegAltName[RegNo-1]) &&
     971             :            "Invalid alt name index for register!");
     972        5936 :     return AsmStrsNoRegAltName+RegAsmOffsetNoRegAltName[RegNo-1];
     973         573 :   case AVR::ptr:
     974             :     assert(*(AsmStrsptr+RegAsmOffsetptr[RegNo-1]) &&
     975             :            "Invalid alt name index for register!");
     976         573 :     return AsmStrsptr+RegAsmOffsetptr[RegNo-1];
     977             :   }
     978             : }
     979             : 
     980             : #ifdef PRINT_ALIAS_INSTR
     981             : #undef PRINT_ALIAS_INSTR
     982             : 
     983        9756 : bool AVRInstPrinter::printAliasInstr(const MCInst *MI, raw_ostream &OS) {
     984             :   const char *AsmString;
     985        9756 :   switch (MI->getOpcode()) {
     986             :   default: return false;
     987             :   case AVR::ADCRdRr:
     988         275 :     if (MI->getNumOperands() == 3 &&
     989         550 :         MI->getOperand(0).isReg() &&
     990         275 :         MRI.getRegClass(AVR::GPR8RegClassID).contains(MI->getOperand(0).getReg()) &&
     991         550 :         MI->getOperand(2).isReg() &&
     992         275 :         MI->getOperand(2).getReg() == MI->getOperand(0).getReg()) {
     993             :       // (ADCRdRr GPR8:$rd, GPR8:$rd)
     994             :       AsmString = "rol     $\x01";
     995             :       break;
     996             :     }
     997             :     return false;
     998             :   case AVR::ADDRdRr:
     999         282 :     if (MI->getNumOperands() == 3 &&
    1000         564 :         MI->getOperand(0).isReg() &&
    1001         282 :         MRI.getRegClass(AVR::GPR8RegClassID).contains(MI->getOperand(0).getReg()) &&
    1002         564 :         MI->getOperand(2).isReg() &&
    1003         282 :         MI->getOperand(2).getReg() == MI->getOperand(0).getReg()) {
    1004             :       // (ADDRdRr GPR8:$rd, GPR8:$rd)
    1005             :       AsmString = "lsl     $\x01";
    1006             :       break;
    1007             :     }
    1008             :     return false;
    1009             :   case AVR::ANDRdRr:
    1010          32 :     if (MI->getNumOperands() == 3 &&
    1011          64 :         MI->getOperand(0).isReg() &&
    1012          32 :         MRI.getRegClass(AVR::GPR8RegClassID).contains(MI->getOperand(0).getReg()) &&
    1013          64 :         MI->getOperand(2).isReg() &&
    1014          32 :         MI->getOperand(2).getReg() == MI->getOperand(0).getReg()) {
    1015             :       // (ANDRdRr GPR8:$rd, GPR8:$rd)
    1016             :       AsmString = "tst     $\x01";
    1017             :       break;
    1018             :     }
    1019             :     return false;
    1020             :   case AVR::BCLRs:
    1021          91 :     if (MI->getNumOperands() == 1 &&
    1022          91 :         MI->getOperand(0).isImm() &&
    1023          91 :         MI->getOperand(0).getImm() == 0) {
    1024             :       // (BCLRs 0)
    1025             :       AsmString = "clc";
    1026             :       break;
    1027             :     }
    1028          89 :     if (MI->getNumOperands() == 1 &&
    1029          89 :         MI->getOperand(0).isImm() &&
    1030          89 :         MI->getOperand(0).getImm() == 1) {
    1031             :       // (BCLRs 1)
    1032             :       AsmString = "clz";
    1033             :       break;
    1034             :     }
    1035          87 :     if (MI->getNumOperands() == 1 &&
    1036          87 :         MI->getOperand(0).isImm() &&
    1037          87 :         MI->getOperand(0).getImm() == 2) {
    1038             :       // (BCLRs 2)
    1039             :       AsmString = "cln";
    1040             :       break;
    1041             :     }
    1042          85 :     if (MI->getNumOperands() == 1 &&
    1043          85 :         MI->getOperand(0).isImm() &&
    1044          85 :         MI->getOperand(0).getImm() == 3) {
    1045             :       // (BCLRs 3)
    1046             :       AsmString = "clv";
    1047             :       break;
    1048             :     }
    1049          83 :     if (MI->getNumOperands() == 1 &&
    1050          83 :         MI->getOperand(0).isImm() &&
    1051          83 :         MI->getOperand(0).getImm() == 4) {
    1052             :       // (BCLRs 4)
    1053             :       AsmString = "cls";
    1054             :       break;
    1055             :     }
    1056          81 :     if (MI->getNumOperands() == 1 &&
    1057          81 :         MI->getOperand(0).isImm() &&
    1058          81 :         MI->getOperand(0).getImm() == 5) {
    1059             :       // (BCLRs 5)
    1060             :       AsmString = "clh";
    1061             :       break;
    1062             :     }
    1063          79 :     if (MI->getNumOperands() == 1 &&
    1064          79 :         MI->getOperand(0).isImm() &&
    1065          79 :         MI->getOperand(0).getImm() == 6) {
    1066             :       // (BCLRs 6)
    1067             :       AsmString = "clt";
    1068             :       break;
    1069             :     }
    1070          77 :     if (MI->getNumOperands() == 1 &&
    1071          77 :         MI->getOperand(0).isImm() &&
    1072          77 :         MI->getOperand(0).getImm() == 7) {
    1073             :       // (BCLRs 7)
    1074             :       AsmString = "cli";
    1075             :       break;
    1076             :     }
    1077             :     return false;
    1078             :   case AVR::BRBCsk:
    1079          20 :     if (MI->getNumOperands() == 2 &&
    1080          20 :         MI->getOperand(0).isImm() &&
    1081          20 :         MI->getOperand(0).getImm() == 0) {
    1082             :       // (BRBCsk 0, relbrtarget_7:$k)
    1083             :       AsmString = "brcc    $\xFF\x02\x01";
    1084             :       break;
    1085             :     }
    1086          15 :     if (MI->getNumOperands() == 2 &&
    1087          15 :         MI->getOperand(0).isImm() &&
    1088          15 :         MI->getOperand(0).getImm() == 5) {
    1089             :       // (BRBCsk 5, relbrtarget_7:$k)
    1090             :       AsmString = "brhc    $\xFF\x02\x01";
    1091             :       break;
    1092             :     }
    1093          12 :     if (MI->getNumOperands() == 2 &&
    1094          12 :         MI->getOperand(0).isImm() &&
    1095          12 :         MI->getOperand(0).getImm() == 6) {
    1096             :       // (BRBCsk 6, relbrtarget_7:$k)
    1097             :       AsmString = "brtc    $\xFF\x02\x01";
    1098             :       break;
    1099             :     }
    1100           9 :     if (MI->getNumOperands() == 2 &&
    1101           9 :         MI->getOperand(0).isImm() &&
    1102           9 :         MI->getOperand(0).getImm() == 3) {
    1103             :       // (BRBCsk 3, relbrtarget_7:$k)
    1104             :       AsmString = "brvc    $\xFF\x02\x01";
    1105             :       break;
    1106             :     }
    1107           5 :     if (MI->getNumOperands() == 2 &&
    1108           5 :         MI->getOperand(0).isImm() &&
    1109           5 :         MI->getOperand(0).getImm() == 7) {
    1110             :       // (BRBCsk 7, relbrtarget_7:$k)
    1111             :       AsmString = "brid    $\xFF\x02\x01";
    1112             :       break;
    1113             :     }
    1114             :     return false;
    1115             :   case AVR::BRBSsk:
    1116          20 :     if (MI->getNumOperands() == 2 &&
    1117          20 :         MI->getOperand(0).isImm() &&
    1118          20 :         MI->getOperand(0).getImm() == 0) {
    1119             :       // (BRBSsk 0, relbrtarget_7:$k)
    1120             :       AsmString = "brcs    $\xFF\x02\x01";
    1121             :       break;
    1122             :     }
    1123          15 :     if (MI->getNumOperands() == 2 &&
    1124          15 :         MI->getOperand(0).isImm() &&
    1125          15 :         MI->getOperand(0).getImm() == 5) {
    1126             :       // (BRBSsk 5, relbrtarget_7:$k)
    1127             :       AsmString = "brhs    $\xFF\x02\x01";
    1128             :       break;
    1129             :     }
    1130          12 :     if (MI->getNumOperands() == 2 &&
    1131          12 :         MI->getOperand(0).isImm() &&
    1132          12 :         MI->getOperand(0).getImm() == 6) {
    1133             :       // (BRBSsk 6, relbrtarget_7:$k)
    1134             :       AsmString = "brts    $\xFF\x02\x01";
    1135             :       break;
    1136             :     }
    1137           9 :     if (MI->getNumOperands() == 2 &&
    1138           9 :         MI->getOperand(0).isImm() &&
    1139           9 :         MI->getOperand(0).getImm() == 3) {
    1140             :       // (BRBSsk 3, relbrtarget_7:$k)
    1141             :       AsmString = "brvs    $\xFF\x02\x01";
    1142             :       break;
    1143             :     }
    1144           5 :     if (MI->getNumOperands() == 2 &&
    1145           5 :         MI->getOperand(0).isImm() &&
    1146           5 :         MI->getOperand(0).getImm() == 7) {
    1147             :       // (BRBSsk 7, relbrtarget_7:$k)
    1148             :       AsmString = "brie    $\xFF\x02\x01";
    1149             :       break;
    1150             :     }
    1151             :     return false;
    1152             :   case AVR::BSETs:
    1153          18 :     if (MI->getNumOperands() == 1 &&
    1154          18 :         MI->getOperand(0).isImm() &&
    1155          18 :         MI->getOperand(0).getImm() == 0) {
    1156             :       // (BSETs 0)
    1157             :       AsmString = "sec";
    1158             :       break;
    1159             :     }
    1160          16 :     if (MI->getNumOperands() == 1 &&
    1161          16 :         MI->getOperand(0).isImm() &&
    1162          16 :         MI->getOperand(0).getImm() == 1) {
    1163             :       // (BSETs 1)
    1164             :       AsmString = "sez";
    1165             :       break;
    1166             :     }
    1167          14 :     if (MI->getNumOperands() == 1 &&
    1168          14 :         MI->getOperand(0).isImm() &&
    1169          14 :         MI->getOperand(0).getImm() == 2) {
    1170             :       // (BSETs 2)
    1171             :       AsmString = "sen";
    1172             :       break;
    1173             :     }
    1174          12 :     if (MI->getNumOperands() == 1 &&
    1175          12 :         MI->getOperand(0).isImm() &&
    1176          12 :         MI->getOperand(0).getImm() == 3) {
    1177             :       // (BSETs 3)
    1178             :       AsmString = "sev";
    1179             :       break;
    1180             :     }
    1181          10 :     if (MI->getNumOperands() == 1 &&
    1182          10 :         MI->getOperand(0).isImm() &&
    1183          10 :         MI->getOperand(0).getImm() == 4) {
    1184             :       // (BSETs 4)
    1185             :       AsmString = "ses";
    1186             :       break;
    1187             :     }
    1188           8 :     if (MI->getNumOperands() == 1 &&
    1189           8 :         MI->getOperand(0).isImm() &&
    1190           8 :         MI->getOperand(0).getImm() == 5) {
    1191             :       // (BSETs 5)
    1192             :       AsmString = "seh";
    1193             :       break;
    1194             :     }
    1195           6 :     if (MI->getNumOperands() == 1 &&
    1196           6 :         MI->getOperand(0).isImm() &&
    1197           6 :         MI->getOperand(0).getImm() == 6) {
    1198             :       // (BSETs 6)
    1199             :       AsmString = "set";
    1200             :       break;
    1201             :     }
    1202           4 :     if (MI->getNumOperands() == 1 &&
    1203           4 :         MI->getOperand(0).isImm() &&
    1204           4 :         MI->getOperand(0).getImm() == 7) {
    1205             :       // (BSETs 7)
    1206             :       AsmString = "sei";
    1207             :       break;
    1208             :     }
    1209             :     return false;
    1210             :   case AVR::EORRdRr:
    1211          67 :     if (MI->getNumOperands() == 3 &&
    1212         134 :         MI->getOperand(0).isReg() &&
    1213          67 :         MRI.getRegClass(AVR::GPR8RegClassID).contains(MI->getOperand(0).getReg()) &&
    1214         134 :         MI->getOperand(2).isReg() &&
    1215          67 :         MI->getOperand(2).getReg() == MI->getOperand(0).getReg()) {
    1216             :       // (EORRdRr GPR8:$rd, GPR8:$rd)
    1217             :       AsmString = "clr     $\x01";
    1218             :       break;
    1219             :     }
    1220             :     return false;
    1221             :   }
    1222             : 
    1223             :   unsigned I = 0;
    1224        2131 :   while (AsmString[I] != ' ' && AsmString[I] != '\t' &&
    1225        4815 :          AsmString[I] != '$' && AsmString[I] != '\0')
    1226        2022 :     ++I;
    1227         662 :   OS << '\t' << StringRef(AsmString, I);
    1228         662 :   if (AsmString[I] != '\0') {
    1229         553 :     if (AsmString[I] == ' ' || AsmString[I] == '\t') {
    1230             :       OS << '\t';
    1231         553 :       ++I;
    1232             :     }
    1233             :     do {
    1234         553 :       if (AsmString[I] == '$') {
    1235         553 :         ++I;
    1236         553 :         if (AsmString[I] == (char)0xff) {
    1237          36 :           ++I;
    1238          36 :           int OpIdx = AsmString[I++] - 1;
    1239          36 :           int PrintMethodIdx = AsmString[I++] - 1;
    1240          36 :           printCustomAliasOperand(MI, OpIdx, PrintMethodIdx, OS);
    1241             :         } else
    1242         517 :           printOperand(MI, unsigned(AsmString[I++]) - 1, OS);
    1243             :       } else {
    1244           0 :         OS << AsmString[I++];
    1245             :       }
    1246         553 :     } while (AsmString[I] != '\0');
    1247             :   }
    1248             : 
    1249             :   return true;
    1250             : }
    1251             : 
    1252          36 : void AVRInstPrinter::printCustomAliasOperand(
    1253             :          const MCInst *MI, unsigned OpIdx,
    1254             :          unsigned PrintMethodIdx,
    1255             :          raw_ostream &OS) {
    1256          36 :   switch (PrintMethodIdx) {
    1257           0 :   default:
    1258           0 :     llvm_unreachable("Unknown PrintMethod kind");
    1259             :     break;
    1260          36 :   case 0:
    1261          36 :     printPCRelImm(MI, OpIdx, OS);
    1262             :     break;
    1263             :   }
    1264          36 : }
    1265             : 
    1266             : #endif // PRINT_ALIAS_INSTR

Generated by: LCOV version 1.13