PPCInstPrinter.h revision a5c177e70a42f48e4885075c4c48aad0816a2817
160d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner//===-- PPCInstPrinter.h - Convert PPC MCInst to assembly syntax ----------===// 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; 22a5c177e70a42f48e4885075c4c48aad0816a2817Bill Wendlingclass TargetMachine; 2360d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 2460d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattnerclass PPCInstPrinter : public MCInstPrinter { 250d1b7d9e3dd8512b47655af7d8ea738ea1d4ac51Chris Lattner // 0 -> AIX, 1 -> Darwin. 260d1b7d9e3dd8512b47655af7d8ea738ea1d4ac51Chris Lattner unsigned SyntaxVariant; 2760d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattnerpublic: 28a5c177e70a42f48e4885075c4c48aad0816a2817Bill Wendling PPCInstPrinter(TargetMachine &TM, const MCAsmInfo &MAI, 29a5c177e70a42f48e4885075c4c48aad0816a2817Bill Wendling unsigned syntaxVariant) 300d1b7d9e3dd8512b47655af7d8ea738ea1d4ac51Chris Lattner : MCInstPrinter(MAI), SyntaxVariant(syntaxVariant) {} 310d1b7d9e3dd8512b47655af7d8ea738ea1d4ac51Chris Lattner 320d1b7d9e3dd8512b47655af7d8ea738ea1d4ac51Chris Lattner bool isDarwinSyntax() const { 330d1b7d9e3dd8512b47655af7d8ea738ea1d4ac51Chris Lattner return SyntaxVariant == 1; 340d1b7d9e3dd8512b47655af7d8ea738ea1d4ac51Chris Lattner } 3560d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 3660d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner virtual void printInst(const MCInst *MI, raw_ostream &O); 3760d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner virtual StringRef getOpcodeName(unsigned Opcode) const; 3860d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 3960d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner static const char *getInstructionName(unsigned Opcode); 4060d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 4160d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner // Autogenerated by tblgen. 4260d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner void printInstruction(const MCInst *MI, raw_ostream &O); 4360d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner static const char *getRegisterName(unsigned RegNo); 4460d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 4560d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 460d1b7d9e3dd8512b47655af7d8ea738ea1d4ac51Chris Lattner void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 4760d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner void printPredicateOperand(const MCInst *MI, unsigned OpNo, 48b2e477f5463795de8265939300fb5c0abfdded77Chris Lattner raw_ostream &O, const char *Modifier); 4960d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 5060d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 5199889132f3d6b3f5eab80934b3a0f1687904e5a2Chris Lattner void printS5ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 5299889132f3d6b3f5eab80934b3a0f1687904e5a2Chris Lattner void printU5ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 5399889132f3d6b3f5eab80934b3a0f1687904e5a2Chris Lattner void printU6ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 5499889132f3d6b3f5eab80934b3a0f1687904e5a2Chris Lattner void printS16ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 5599889132f3d6b3f5eab80934b3a0f1687904e5a2Chris Lattner void printU16ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 5699889132f3d6b3f5eab80934b3a0f1687904e5a2Chris Lattner void printS16X4ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 571520fd60950c1c347457b225dbbd72224d4fcd19Chris Lattner void printBranchOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 58b2e477f5463795de8265939300fb5c0abfdded77Chris Lattner void printAbsAddrOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 5960d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 60fdb2ded765316ee2ee2f796b0e2befa2c23acd1dChris Lattner void printcrbitm(const MCInst *MI, unsigned OpNo, raw_ostream &O); 6160d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 62fdb2ded765316ee2ee2f796b0e2befa2c23acd1dChris Lattner void printMemRegImm(const MCInst *MI, unsigned OpNo, raw_ostream &O); 63fdb2ded765316ee2ee2f796b0e2befa2c23acd1dChris Lattner void printMemRegImmShifted(const MCInst *MI, unsigned OpNo, raw_ostream &O); 64fdb2ded765316ee2ee2f796b0e2befa2c23acd1dChris Lattner void printMemRegReg(const MCInst *MI, unsigned OpNo, raw_ostream &O); 6560d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 6660d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner // FIXME: Remove 6758d014f6031ab95b0057a54dc377e7b0d23d674fChris Lattner void printSymbolLo(const MCInst *MI, unsigned OpNo, raw_ostream &O); 6858d014f6031ab95b0057a54dc377e7b0d23d674fChris Lattner void printSymbolHi(const MCInst *MI, unsigned OpNo, raw_ostream &O); 6960d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner}; 7060d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner} // end namespace llvm 7160d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner 7260d5b5fdeec64b69c92db60242d3d90b3f978e69Chris Lattner#endif 73