131d157ae1ac2cd9c787dc3c1d28e64c682803844Jia Liu//===- PPCInstPrinter.h - Convert PPC MCInst to assembly syntax -*- C++ -*-===// 260d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner// 360d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner// The LLVM Compiler Infrastructure 460d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner// 560d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner// This file is distributed under the University of Illinois Open Source 660d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner// License. See LICENSE.TXT for details. 760d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner// 860d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner//===----------------------------------------------------------------------===// 960d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner// 1060d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner// This class prints an PPC MCInst to a .s file. 1160d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner// 1260d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner//===----------------------------------------------------------------------===// 1360d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 1460d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner#ifndef PPCINSTPRINTER_H 1560d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner#define PPCINSTPRINTER_H 1660d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 1760d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner#include "llvm/MC/MCInstPrinter.h" 1860d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 1960d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattnernamespace llvm { 20a5c177e70a42f48e4885075c4c48aad0816a2817Bill Wendling 21a5c177e70a42f48e4885075c4c48aad0816a2817Bill Wendlingclass MCOperand; 2260d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 2360d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattnerclass PPCInstPrinter : public MCInstPrinter { 24a68f58ab2bec6a024afae498e4082ddd8b01f178Ulrich Weigand bool IsDarwin; 2560d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattnerpublic: 2617463b3ef1a3d39b10619254f12e806c8c43f9e7Craig Topper PPCInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII, 27a68f58ab2bec6a024afae498e4082ddd8b01f178Ulrich Weigand const MCRegisterInfo &MRI, bool isDarwin) 28a68f58ab2bec6a024afae498e4082ddd8b01f178Ulrich Weigand : MCInstPrinter(MAI, MII, MRI), IsDarwin(isDarwin) {} 290d1b7d9e3dd8512b47655af7d8ea738ea1d4ac51Chris Lattner 300d1b7d9e3dd8512b47655af7d8ea738ea1d4ac51Chris Lattner bool isDarwinSyntax() const { 31a68f58ab2bec6a024afae498e4082ddd8b01f178Ulrich Weigand return IsDarwin; 320d1b7d9e3dd8512b47655af7d8ea738ea1d4ac51Chris Lattner } 3360d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 34dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines void printRegName(raw_ostream &OS, unsigned RegNo) const override; 35dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot) override; 3660d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 3760d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner // Autogenerated by tblgen. 3860d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner void printInstruction(const MCInst *MI, raw_ostream &O); 3960d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner static const char *getRegisterName(unsigned RegNo); 4060d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 4160d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 420d1b7d9e3dd8512b47655af7d8ea738ea1d4ac51Chris Lattner void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 4360d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner void printPredicateOperand(const MCInst *MI, unsigned OpNo, 44dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines raw_ostream &O, const char *Modifier = nullptr); 4560d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 4636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines void printU2ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 4799889132f3d6b3f5eab80934b3a0f1687904e5a2Chris Lattner void printS5ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 4899889132f3d6b3f5eab80934b3a0f1687904e5a2Chris Lattner void printU5ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 4999889132f3d6b3f5eab80934b3a0f1687904e5a2Chris Lattner void printU6ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 5099889132f3d6b3f5eab80934b3a0f1687904e5a2Chris Lattner void printS16ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 5199889132f3d6b3f5eab80934b3a0f1687904e5a2Chris Lattner void printU16ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 521520fd60950c1c347457b225dbbd72224d4fcd19Chris Lattner void printBranchOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 539679c47a07386cbf3547a0927609c7ee080b2aabUlrich Weigand void printAbsBranchOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 54a17a7e1868076a4430cfa16694bcb42884130928Ulrich Weigand void printTLSCall(const MCInst *MI, unsigned OpNo, raw_ostream &O); 5560d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 56fdb2ded765316ee2ee2f796b0e2befa2c23acd1dChris Lattner void printcrbitm(const MCInst *MI, unsigned OpNo, raw_ostream &O); 5760d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 58fdb2ded765316ee2ee2f796b0e2befa2c23acd1dChris Lattner void printMemRegImm(const MCInst *MI, unsigned OpNo, raw_ostream &O); 59fdb2ded765316ee2ee2f796b0e2befa2c23acd1dChris Lattner void printMemRegReg(const MCInst *MI, unsigned OpNo, raw_ostream &O); 6060d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner}; 6160d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner} // end namespace llvm 6260d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 6360d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner#endif 64