136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===-- SparcInstPrinter.h - Convert Sparc MCInst to assembly syntax ------===//
236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//                     The LLVM Compiler Infrastructure
436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// This file is distributed under the University of Illinois Open Source
636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// License. See LICENSE.TXT for details.
736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===//
936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
1036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// This class prints an Sparc MCInst to a .s file.
1136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
1236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===//
1336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
1437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines#ifndef LLVM_LIB_TARGET_SPARC_INSTPRINTER_SPARCINSTPRINTER_H
1537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines#define LLVM_LIB_TARGET_SPARC_INSTPRINTER_SPARCINSTPRINTER_H
1636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
1736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include "llvm/MC/MCInstPrinter.h"
1836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
1936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesnamespace llvm {
2036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
2136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass SparcInstPrinter : public MCInstPrinter {
2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinespublic:
230c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar  SparcInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
240c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar                   const MCRegisterInfo &MRI)
250c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar      : MCInstPrinter(MAI, MII, MRI) {}
2636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
27dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  void printRegName(raw_ostream &OS, unsigned RegNo) const override;
280c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar  void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot,
290c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar                 const MCSubtargetInfo &STI) override;
300c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar  bool printSparcAliasInstr(const MCInst *MI, const MCSubtargetInfo &STI,
310c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar                            raw_ostream &OS);
320c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar  bool isV9(const MCSubtargetInfo &STI) const;
3336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
3436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  // Autogenerated by tblgen.
350c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar  void printInstruction(const MCInst *MI, const MCSubtargetInfo &STI,
360c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar                        raw_ostream &O);
370c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar  bool printAliasInstr(const MCInst *MI, const MCSubtargetInfo &STI,
380c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar                       raw_ostream &O);
39dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx,
400c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar                               unsigned PrintMethodIdx,
410c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar                               const MCSubtargetInfo &STI, raw_ostream &O);
4236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  static const char *getRegisterName(unsigned RegNo);
4336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
440c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar  void printOperand(const MCInst *MI, int opNum, const MCSubtargetInfo &STI,
450c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar                    raw_ostream &OS);
460c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar  void printMemOperand(const MCInst *MI, int opNum, const MCSubtargetInfo &STI,
470c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar                       raw_ostream &OS, const char *Modifier = nullptr);
480c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar  void printCCOperand(const MCInst *MI, int opNum, const MCSubtargetInfo &STI,
490c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar                      raw_ostream &OS);
500c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar  bool printGetPCX(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
510c7f116bb6950ef819323d855415b2f2b0aad987Pirama Arumuga Nainar                   raw_ostream &OS);
5236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines};
5336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} // end namespace llvm
5436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
5536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#endif
56