-//===-- PPCInstPrinter.h - Convert PPC MCInst to assembly syntax ----------===//
+//===- PPCInstPrinter.h - Convert PPC MCInst to assembly syntax -*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
//
//===----------------------------------------------------------------------===//
-#ifndef PPCINSTPRINTER_H
-#define PPCINSTPRINTER_H
+#ifndef LLVM_LIB_TARGET_POWERPC_INSTPRINTER_PPCINSTPRINTER_H
+#define LLVM_LIB_TARGET_POWERPC_INSTPRINTER_PPCINSTPRINTER_H
#include "llvm/MC/MCInstPrinter.h"
namespace llvm {
- class MCOperand;
+
+class MCOperand;
class PPCInstPrinter : public MCInstPrinter {
+ bool IsDarwin;
public:
- PPCInstPrinter(const MCAsmInfo &MAI) : MCInstPrinter(MAI) {}
+ PPCInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
+ const MCRegisterInfo &MRI, bool isDarwin)
+ : MCInstPrinter(MAI, MII, MRI), IsDarwin(isDarwin) {}
- virtual void printInst(const MCInst *MI, raw_ostream &O);
- virtual StringRef getOpcodeName(unsigned Opcode) const;
+ bool isDarwinSyntax() const {
+ return IsDarwin;
+ }
- static const char *getInstructionName(unsigned Opcode);
+ void printRegName(raw_ostream &OS, unsigned RegNo) const override;
+ void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot) override;
// Autogenerated by tblgen.
void printInstruction(const MCInst *MI, raw_ostream &O);
static const char *getRegisterName(unsigned RegNo);
- void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
+ void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
void printPredicateOperand(const MCInst *MI, unsigned OpNo,
- raw_ostream &O, const char *Modifier) {}
-
+ raw_ostream &O, const char *Modifier = nullptr);
- void printS5ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
- void printU5ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
- void printU6ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
- void printS16ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
- void printU16ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
- void printS16X4ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
- void printBranchOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
- void printCallOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
- void printAbsAddrOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
+ void printU1ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+ void printU2ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+ void printU4ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+ void printS5ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+ void printU5ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+ void printU6ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+ void printU12ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+ void printS16ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+ void printU16ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+ void printBranchOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+ void printAbsBranchOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+ void printTLSCall(const MCInst *MI, unsigned OpNo, raw_ostream &O);
- void printcrbitm(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
+ void printcrbitm(const MCInst *MI, unsigned OpNo, raw_ostream &O);
- void printMemRegImm(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
- void printMemRegImmShifted(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
- void printMemRegReg(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
-
- // FIXME: Remove
- void PrintSpecial(const MCInst *MI, raw_ostream &O, const char *Modifier) {}
- void printSymbolLo(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
- void printSymbolHi(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
- void printPICLabel(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
- void printTOCEntryLabel(const MCInst *MI, unsigned OpNo, raw_ostream &O) {}
-
+ void printMemRegImm(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+ void printMemRegReg(const MCInst *MI, unsigned OpNo, raw_ostream &O);
};
} // end namespace llvm