LCOV - code coverage report
Current view: top level - lib/Target/ARM/InstPrinter - ARMInstPrinter.h (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 1 1 100.0 %
Date: 2018-07-13 00:08:38 Functions: 1 2 50.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===- ARMInstPrinter.h - Convert ARM MCInst to assembly syntax -*- C++ -*-===//
       2             : //
       3             : //                     The LLVM Compiler Infrastructure
       4             : //
       5             : // This file is distributed under the University of Illinois Open Source
       6             : // License. See LICENSE.TXT for details.
       7             : //
       8             : //===----------------------------------------------------------------------===//
       9             : //
      10             : // This class prints an ARM MCInst to a .s file.
      11             : //
      12             : //===----------------------------------------------------------------------===//
      13             : 
      14             : #ifndef LLVM_LIB_TARGET_ARM_INSTPRINTER_ARMINSTPRINTER_H
      15             : #define LLVM_LIB_TARGET_ARM_INSTPRINTER_ARMINSTPRINTER_H
      16             : 
      17             : #include "llvm/MC/MCInstPrinter.h"
      18             : 
      19             : namespace llvm {
      20             : 
      21        3531 : class ARMInstPrinter : public MCInstPrinter {
      22             : public:
      23             :   ARMInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
      24             :                  const MCRegisterInfo &MRI);
      25             : 
      26             :   void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot,
      27             :                  const MCSubtargetInfo &STI) override;
      28             :   void printRegName(raw_ostream &OS, unsigned RegNo) const override;
      29             : 
      30             :   // Autogenerated by tblgen.
      31             :   void printInstruction(const MCInst *MI, const MCSubtargetInfo &STI,
      32             :                         raw_ostream &O);
      33             :   virtual bool printAliasInstr(const MCInst *MI, const MCSubtargetInfo &STI,
      34             :                                raw_ostream &O);
      35             :   virtual void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx,
      36             :                                        unsigned PrintMethodIdx,
      37             :                                        const MCSubtargetInfo &STI,
      38             :                                        raw_ostream &O);
      39             :   static const char *getRegisterName(unsigned RegNo);
      40             : 
      41             :   void printOperand(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
      42             :                     raw_ostream &O);
      43             : 
      44             :   void printSORegRegOperand(const MCInst *MI, unsigned OpNum,
      45             :                             const MCSubtargetInfo &STI, raw_ostream &O);
      46             :   void printSORegImmOperand(const MCInst *MI, unsigned OpNum,
      47             :                             const MCSubtargetInfo &STI, raw_ostream &O);
      48             : 
      49             :   void printAddrModeTBB(const MCInst *MI, unsigned OpNum,
      50             :                         const MCSubtargetInfo &STI, raw_ostream &O);
      51             :   void printAddrModeTBH(const MCInst *MI, unsigned OpNum,
      52             :                         const MCSubtargetInfo &STI, raw_ostream &O);
      53             :   void printAddrMode2Operand(const MCInst *MI, unsigned OpNum,
      54             :                              const MCSubtargetInfo &STI, raw_ostream &O);
      55             :   void printAM2PostIndexOp(const MCInst *MI, unsigned OpNum,
      56             :                            const MCSubtargetInfo &STI, raw_ostream &O);
      57             :   void printAM2PreOrOffsetIndexOp(const MCInst *MI, unsigned OpNum,
      58             :                                   const MCSubtargetInfo &STI, raw_ostream &O);
      59             :   void printAddrMode2OffsetOperand(const MCInst *MI, unsigned OpNum,
      60             :                                    const MCSubtargetInfo &STI, raw_ostream &O);
      61             :   template <bool AlwaysPrintImm0>
      62             :   void printAddrMode3Operand(const MCInst *MI, unsigned OpNum,
      63             :                              const MCSubtargetInfo &STI, raw_ostream &O);
      64             :   void printAddrMode3OffsetOperand(const MCInst *MI, unsigned OpNum,
      65             :                                    const MCSubtargetInfo &STI, raw_ostream &O);
      66             :   void printAM3PreOrOffsetIndexOp(const MCInst *MI, unsigned Op, raw_ostream &O,
      67             :                                   bool AlwaysPrintImm0);
      68             :   void printPostIdxImm8Operand(const MCInst *MI, unsigned OpNum,
      69             :                                const MCSubtargetInfo &STI, raw_ostream &O);
      70             :   void printPostIdxRegOperand(const MCInst *MI, unsigned OpNum,
      71             :                               const MCSubtargetInfo &STI, raw_ostream &O);
      72             :   void printPostIdxImm8s4Operand(const MCInst *MI, unsigned OpNum,
      73             :                                  const MCSubtargetInfo &STI, raw_ostream &O);
      74             : 
      75             :   void printLdStmModeOperand(const MCInst *MI, unsigned OpNum,
      76             :                              const MCSubtargetInfo &STI, raw_ostream &O);
      77             :   template <bool AlwaysPrintImm0>
      78             :   void printAddrMode5Operand(const MCInst *MI, unsigned OpNum,
      79             :                              const MCSubtargetInfo &STI, raw_ostream &O);
      80             :   template <bool AlwaysPrintImm0>
      81             :   void printAddrMode5FP16Operand(const MCInst *MI, unsigned OpNum,
      82             :                                  const MCSubtargetInfo &STI, raw_ostream &O);
      83             :   void printAddrMode6Operand(const MCInst *MI, unsigned OpNum,
      84             :                              const MCSubtargetInfo &STI, raw_ostream &O);
      85             :   void printAddrMode7Operand(const MCInst *MI, unsigned OpNum,
      86             :                              const MCSubtargetInfo &STI, raw_ostream &O);
      87             :   void printAddrMode6OffsetOperand(const MCInst *MI, unsigned OpNum,
      88             :                                    const MCSubtargetInfo &STI, raw_ostream &O);
      89             : 
      90             :   void printBitfieldInvMaskImmOperand(const MCInst *MI, unsigned OpNum,
      91             :                                       const MCSubtargetInfo &STI,
      92             :                                       raw_ostream &O);
      93             :   void printMemBOption(const MCInst *MI, unsigned OpNum,
      94             :                        const MCSubtargetInfo &STI, raw_ostream &O);
      95             :   void printInstSyncBOption(const MCInst *MI, unsigned OpNum,
      96             :                             const MCSubtargetInfo &STI, raw_ostream &O);
      97             :   void printTraceSyncBOption(const MCInst *MI, unsigned OpNum,
      98             :                              const MCSubtargetInfo &STI, raw_ostream &O);
      99             :   void printShiftImmOperand(const MCInst *MI, unsigned OpNum,
     100             :                             const MCSubtargetInfo &STI, raw_ostream &O);
     101             :   void printPKHLSLShiftImm(const MCInst *MI, unsigned OpNum,
     102             :                            const MCSubtargetInfo &STI, raw_ostream &O);
     103             :   void printPKHASRShiftImm(const MCInst *MI, unsigned OpNum,
     104             :                            const MCSubtargetInfo &STI, raw_ostream &O);
     105             : 
     106             :   template <unsigned scale>
     107             :   void printAdrLabelOperand(const MCInst *MI, unsigned OpNum,
     108             :                             const MCSubtargetInfo &STI, raw_ostream &O);
     109             :   void printThumbS4ImmOperand(const MCInst *MI, unsigned OpNum,
     110             :                               const MCSubtargetInfo &STI, raw_ostream &O);
     111             :   void printThumbSRImm(const MCInst *MI, unsigned OpNum,
     112             :                        const MCSubtargetInfo &STI, raw_ostream &O);
     113             :   void printThumbITMask(const MCInst *MI, unsigned OpNum,
     114             :                         const MCSubtargetInfo &STI, raw_ostream &O);
     115             :   void printThumbAddrModeRROperand(const MCInst *MI, unsigned OpNum,
     116             :                                    const MCSubtargetInfo &STI, raw_ostream &O);
     117             :   void printThumbAddrModeImm5SOperand(const MCInst *MI, unsigned OpNum,
     118             :                                       const MCSubtargetInfo &STI,
     119             :                                       raw_ostream &O, unsigned Scale);
     120             :   void printThumbAddrModeImm5S1Operand(const MCInst *MI, unsigned OpNum,
     121             :                                        const MCSubtargetInfo &STI,
     122             :                                        raw_ostream &O);
     123             :   void printThumbAddrModeImm5S2Operand(const MCInst *MI, unsigned OpNum,
     124             :                                        const MCSubtargetInfo &STI,
     125             :                                        raw_ostream &O);
     126             :   void printThumbAddrModeImm5S4Operand(const MCInst *MI, unsigned OpNum,
     127             :                                        const MCSubtargetInfo &STI,
     128             :                                        raw_ostream &O);
     129             :   void printThumbAddrModeSPOperand(const MCInst *MI, unsigned OpNum,
     130             :                                    const MCSubtargetInfo &STI, raw_ostream &O);
     131             : 
     132             :   void printT2SOOperand(const MCInst *MI, unsigned OpNum,
     133             :                         const MCSubtargetInfo &STI, raw_ostream &O);
     134             :   template <bool AlwaysPrintImm0>
     135             :   void printAddrModeImm12Operand(const MCInst *MI, unsigned OpNum,
     136             :                                  const MCSubtargetInfo &STI, raw_ostream &O);
     137             :   template <bool AlwaysPrintImm0>
     138             :   void printT2AddrModeImm8Operand(const MCInst *MI, unsigned OpNum,
     139             :                                   const MCSubtargetInfo &STI, raw_ostream &O);
     140             :   template <bool AlwaysPrintImm0>
     141             :   void printT2AddrModeImm8s4Operand(const MCInst *MI, unsigned OpNum,
     142             :                                     const MCSubtargetInfo &STI, raw_ostream &O);
     143             :   void printT2AddrModeImm0_1020s4Operand(const MCInst *MI, unsigned OpNum,
     144             :                                          const MCSubtargetInfo &STI,
     145             :                                          raw_ostream &O);
     146             :   void printT2AddrModeImm8OffsetOperand(const MCInst *MI, unsigned OpNum,
     147             :                                         const MCSubtargetInfo &STI,
     148             :                                         raw_ostream &O);
     149             :   void printT2AddrModeImm8s4OffsetOperand(const MCInst *MI, unsigned OpNum,
     150             :                                           const MCSubtargetInfo &STI,
     151             :                                           raw_ostream &O);
     152             :   void printT2AddrModeSoRegOperand(const MCInst *MI, unsigned OpNum,
     153             :                                    const MCSubtargetInfo &STI, raw_ostream &O);
     154             : 
     155             :   void printSetendOperand(const MCInst *MI, unsigned OpNum,
     156             :                           const MCSubtargetInfo &STI, raw_ostream &O);
     157             :   void printCPSIMod(const MCInst *MI, unsigned OpNum,
     158             :                     const MCSubtargetInfo &STI, raw_ostream &O);
     159             :   void printCPSIFlag(const MCInst *MI, unsigned OpNum,
     160             :                      const MCSubtargetInfo &STI, raw_ostream &O);
     161             :   void printMSRMaskOperand(const MCInst *MI, unsigned OpNum,
     162             :                            const MCSubtargetInfo &STI, raw_ostream &O);
     163             :   void printBankedRegOperand(const MCInst *MI, unsigned OpNum,
     164             :                              const MCSubtargetInfo &STI, raw_ostream &O);
     165             :   void printPredicateOperand(const MCInst *MI, unsigned OpNum,
     166             :                              const MCSubtargetInfo &STI, raw_ostream &O);
     167             :   void printMandatoryPredicateOperand(const MCInst *MI, unsigned OpNum,
     168             :                                       const MCSubtargetInfo &STI,
     169             :                                       raw_ostream &O);
     170             :   void printSBitModifierOperand(const MCInst *MI, unsigned OpNum,
     171             :                                 const MCSubtargetInfo &STI, raw_ostream &O);
     172             :   void printRegisterList(const MCInst *MI, unsigned OpNum,
     173             :                          const MCSubtargetInfo &STI, raw_ostream &O);
     174             :   void printNoHashImmediate(const MCInst *MI, unsigned OpNum,
     175             :                             const MCSubtargetInfo &STI, raw_ostream &O);
     176             :   void printPImmediate(const MCInst *MI, unsigned OpNum,
     177             :                        const MCSubtargetInfo &STI, raw_ostream &O);
     178             :   void printCImmediate(const MCInst *MI, unsigned OpNum,
     179             :                        const MCSubtargetInfo &STI, raw_ostream &O);
     180             :   void printCoprocOptionImm(const MCInst *MI, unsigned OpNum,
     181             :                             const MCSubtargetInfo &STI, raw_ostream &O);
     182             :   void printFPImmOperand(const MCInst *MI, unsigned OpNum,
     183             :                          const MCSubtargetInfo &STI, raw_ostream &O);
     184             :   void printNEONModImmOperand(const MCInst *MI, unsigned OpNum,
     185             :                               const MCSubtargetInfo &STI, raw_ostream &O);
     186             :   void printImmPlusOneOperand(const MCInst *MI, unsigned OpNum,
     187             :                               const MCSubtargetInfo &STI, raw_ostream &O);
     188             :   void printRotImmOperand(const MCInst *MI, unsigned OpNum,
     189             :                           const MCSubtargetInfo &STI, raw_ostream &O);
     190             :   void printModImmOperand(const MCInst *MI, unsigned OpNum,
     191             :                           const MCSubtargetInfo &STI, raw_ostream &O);
     192             :   void printGPRPairOperand(const MCInst *MI, unsigned OpNum,
     193             :                            const MCSubtargetInfo &STI, raw_ostream &O);
     194             : 
     195             :   void printPCLabel(const MCInst *MI, unsigned OpNum,
     196             :                     const MCSubtargetInfo &STI, raw_ostream &O);
     197             :   void printThumbLdrLabelOperand(const MCInst *MI, unsigned OpNum,
     198             :                                  const MCSubtargetInfo &STI, raw_ostream &O);
     199             :   void printFBits16(const MCInst *MI, unsigned OpNum,
     200             :                     const MCSubtargetInfo &STI, raw_ostream &O);
     201             :   void printFBits32(const MCInst *MI, unsigned OpNum,
     202             :                     const MCSubtargetInfo &STI, raw_ostream &O);
     203             :   void printVectorIndex(const MCInst *MI, unsigned OpNum,
     204             :                         const MCSubtargetInfo &STI, raw_ostream &O);
     205             :   void printVectorListOne(const MCInst *MI, unsigned OpNum,
     206             :                           const MCSubtargetInfo &STI, raw_ostream &O);
     207             :   void printVectorListTwo(const MCInst *MI, unsigned OpNum,
     208             :                           const MCSubtargetInfo &STI, raw_ostream &O);
     209             :   void printVectorListTwoSpaced(const MCInst *MI, unsigned OpNum,
     210             :                                 const MCSubtargetInfo &STI, raw_ostream &O);
     211             :   void printVectorListThree(const MCInst *MI, unsigned OpNum,
     212             :                             const MCSubtargetInfo &STI, raw_ostream &O);
     213             :   void printVectorListFour(const MCInst *MI, unsigned OpNum,
     214             :                            const MCSubtargetInfo &STI, raw_ostream &O);
     215             :   void printVectorListOneAllLanes(const MCInst *MI, unsigned OpNum,
     216             :                                   const MCSubtargetInfo &STI, raw_ostream &O);
     217             :   void printVectorListTwoAllLanes(const MCInst *MI, unsigned OpNum,
     218             :                                   const MCSubtargetInfo &STI, raw_ostream &O);
     219             :   void printVectorListThreeAllLanes(const MCInst *MI, unsigned OpNum,
     220             :                                     const MCSubtargetInfo &STI, raw_ostream &O);
     221             :   void printVectorListFourAllLanes(const MCInst *MI, unsigned OpNum,
     222             :                                    const MCSubtargetInfo &STI, raw_ostream &O);
     223             :   void printVectorListTwoSpacedAllLanes(const MCInst *MI, unsigned OpNum,
     224             :                                         const MCSubtargetInfo &STI,
     225             :                                         raw_ostream &O);
     226             :   void printVectorListThreeSpacedAllLanes(const MCInst *MI, unsigned OpNum,
     227             :                                           const MCSubtargetInfo &STI,
     228             :                                           raw_ostream &O);
     229             :   void printVectorListFourSpacedAllLanes(const MCInst *MI, unsigned OpNum,
     230             :                                          const MCSubtargetInfo &STI,
     231             :                                          raw_ostream &O);
     232             :   void printVectorListThreeSpaced(const MCInst *MI, unsigned OpNum,
     233             :                                   const MCSubtargetInfo &STI, raw_ostream &O);
     234             :   void printVectorListFourSpaced(const MCInst *MI, unsigned OpNum,
     235             :                                  const MCSubtargetInfo &STI, raw_ostream &O);
     236             :   template<int64_t Angle, int64_t Remainder>
     237             :   void printComplexRotationOp(const MCInst *MI, unsigned OpNum,
     238             :                               const MCSubtargetInfo &STI, raw_ostream &O);
     239             : };
     240             : 
     241             : } // end namespace llvm
     242             : 
     243             : #endif // LLVM_LIB_TARGET_ARM_INSTPRINTER_ARMINSTPRINTER_H

Generated by: LCOV version 1.13