brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · 2fbd06c Raw
115 lines · c
1//===- PPCInstPrinter.h - Convert PPC MCInst to assembly syntax -*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This class prints an PPC MCInst to a .s file.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_LIB_TARGET_POWERPC_MCTARGETDESC_PPCINSTPRINTER_H14#define LLVM_LIB_TARGET_POWERPC_MCTARGETDESC_PPCINSTPRINTER_H15 16#include "llvm/MC/MCInstPrinter.h"17#include "llvm/TargetParser/Triple.h"18 19namespace llvm {20 21class PPCInstPrinter : public MCInstPrinter {22  Triple TT;23private:24  bool showRegistersWithPercentPrefix(const char *RegName) const;25  bool showRegistersWithPrefix() const;26  const char *getVerboseConditionRegName(MCRegister Reg,27                                         unsigned RegEncoding) const;28 29public:30  PPCInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,31                 const MCRegisterInfo &MRI, Triple T)32    : MCInstPrinter(MAI, MII, MRI), TT(T) {}33 34  void printRegName(raw_ostream &OS, MCRegister Reg) override;35  void printInst(const MCInst *MI, uint64_t Address, StringRef Annot,36                 const MCSubtargetInfo &STI, raw_ostream &O) override;37 38  // Autogenerated by tblgen.39  std::pair<const char *, uint64_t>40  getMnemonic(const MCInst &MI) const override;41  void printInstruction(const MCInst *MI, uint64_t Address,42                        const MCSubtargetInfo &STI, raw_ostream &O);43  static const char *getRegisterName(MCRegister Reg);44 45  bool printAliasInstr(const MCInst *MI, uint64_t Address,46                       const MCSubtargetInfo &STI, raw_ostream &OS);47  void printCustomAliasOperand(const MCInst *MI, uint64_t Address,48                               unsigned OpIdx, unsigned PrintMethodIdx,49                               const MCSubtargetInfo &STI, raw_ostream &OS);50 51  void printOperand(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,52                    raw_ostream &O);53  void printPredicateOperand(const MCInst *MI, unsigned OpNo,54                             const MCSubtargetInfo &STI, raw_ostream &O,55                             StringRef Modifier = {});56  void printATBitsAsHint(const MCInst *MI, unsigned OpNo,57                         const MCSubtargetInfo &STI, raw_ostream &O);58 59  void printU1ImmOperand(const MCInst *MI, unsigned OpNo,60                         const MCSubtargetInfo &STI, raw_ostream &O);61  void printU2ImmOperand(const MCInst *MI, unsigned OpNo,62                         const MCSubtargetInfo &STI, raw_ostream &O);63  void printU3ImmOperand(const MCInst *MI, unsigned OpNo,64                         const MCSubtargetInfo &STI, raw_ostream &O);65  void printU4ImmOperand(const MCInst *MI, unsigned OpNo,66                         const MCSubtargetInfo &STI, raw_ostream &O);67  void printS5ImmOperand(const MCInst *MI, unsigned OpNo,68                         const MCSubtargetInfo &STI, raw_ostream &O);69  void printU5ImmOperand(const MCInst *MI, unsigned OpNo,70                         const MCSubtargetInfo &STI, raw_ostream &O);71  void printU6ImmOperand(const MCInst *MI, unsigned OpNo,72                         const MCSubtargetInfo &STI, raw_ostream &O);73  void printU7ImmOperand(const MCInst *MI, unsigned OpNo,74                         const MCSubtargetInfo &STI, raw_ostream &O);75  void printU8ImmOperand(const MCInst *MI, unsigned OpNo,76                         const MCSubtargetInfo &STI, raw_ostream &O);77  void printU10ImmOperand(const MCInst *MI, unsigned OpNo,78                          const MCSubtargetInfo &STI, raw_ostream &O);79  void printU12ImmOperand(const MCInst *MI, unsigned OpNo,80                          const MCSubtargetInfo &STI, raw_ostream &O);81  void printS16ImmOperand(const MCInst *MI, unsigned OpNo,82                          const MCSubtargetInfo &STI, raw_ostream &O);83  void printS32ImmOperand(const MCInst *MI, unsigned OpNo,84                          const MCSubtargetInfo &STI, raw_ostream &O);85  void printS34ImmOperand(const MCInst *MI, unsigned OpNo,86                          const MCSubtargetInfo &STI, raw_ostream &O);87  void printU16ImmOperand(const MCInst *MI, unsigned OpNo,88                          const MCSubtargetInfo &STI, raw_ostream &O);89  void printImmZeroOperand(const MCInst *MI, unsigned OpNo,90                           const MCSubtargetInfo &STI, raw_ostream &O);91  void printBranchOperand(const MCInst *MI, uint64_t Address, unsigned OpNo,92                          const MCSubtargetInfo &STI, raw_ostream &O);93  void printAbsBranchOperand(const MCInst *MI, unsigned OpNo,94                             const MCSubtargetInfo &STI, raw_ostream &O);95  void printTLSCall(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,96                    raw_ostream &O);97 98  void printcrbitm(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,99                   raw_ostream &O);100 101  void printMemRegImm(const MCInst *MI, unsigned OpNo,102                      const MCSubtargetInfo &STI, raw_ostream &O);103  void printMemRegImmHash(const MCInst *MI, unsigned OpNo,104                          const MCSubtargetInfo &STI, raw_ostream &O);105  void printMemRegImm34PCRel(const MCInst *MI, unsigned OpNo,106                             const MCSubtargetInfo &STI, raw_ostream &O);107  void printMemRegImm34(const MCInst *MI, unsigned OpNo,108                        const MCSubtargetInfo &STI, raw_ostream &O);109  void printMemRegReg(const MCInst *MI, unsigned OpNo,110                      const MCSubtargetInfo &STI, raw_ostream &O);111};112} // end namespace llvm113 114#endif115