blob: 3687ac5b4e9292b160ec68ea4ba60c27dc600917 [file] [log] [blame]
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +00001//===-- SparcInstPrinter.h - Convert Sparc MCInst to assembly syntax ------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This class prints an Sparc MCInst to a .s file.
11//
12//===----------------------------------------------------------------------===//
13
Benjamin Kramera7c40ef2014-08-13 16:26:38 +000014#ifndef LLVM_LIB_TARGET_SPARC_INSTPRINTER_SPARCINSTPRINTER_H
15#define LLVM_LIB_TARGET_SPARC_INSTPRINTER_SPARCINSTPRINTER_H
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +000016
17#include "llvm/MC/MCInstPrinter.h"
Venkatraman Govindaraju81aae572014-03-02 03:39:39 +000018#include "llvm/MC/MCSubtargetInfo.h"
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +000019
20namespace llvm {
21
22class MCOperand;
23
24class SparcInstPrinter : public MCInstPrinter {
Venkatraman Govindaraju81aae572014-03-02 03:39:39 +000025 const MCSubtargetInfo &STI;
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +000026public:
27 SparcInstPrinter(const MCAsmInfo &MAI,
28 const MCInstrInfo &MII,
Venkatraman Govindaraju81aae572014-03-02 03:39:39 +000029 const MCRegisterInfo &MRI,
30 const MCSubtargetInfo &sti)
31 : MCInstPrinter(MAI, MII, MRI), STI(sti) {}
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +000032
Craig Topperb0c941b2014-04-29 07:57:13 +000033 void printRegName(raw_ostream &OS, unsigned RegNo) const override;
Akira Hatanakab46d0232015-03-27 20:36:02 +000034 void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot,
35 const MCSubtargetInfo &STI) override;
Venkatraman Govindaraju0d288d32014-01-10 01:48:17 +000036 bool printSparcAliasInstr(const MCInst *MI, raw_ostream &OS);
Venkatraman Govindaraju81aae572014-03-02 03:39:39 +000037 bool isV9() const;
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +000038
39 // Autogenerated by tblgen.
40 void printInstruction(const MCInst *MI, raw_ostream &O);
Venkatraman Govindaraju0d288d32014-01-10 01:48:17 +000041 bool printAliasInstr(const MCInst *MI, raw_ostream &O);
Tim Northoveree20caa2014-05-12 18:04:06 +000042 void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx,
43 unsigned PrintMethodIdx, raw_ostream &O);
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +000044 static const char *getRegisterName(unsigned RegNo);
45
46 void printOperand(const MCInst *MI, int opNum, raw_ostream &OS);
47 void printMemOperand(const MCInst *MI, int opNum, raw_ostream &OS,
Craig Toppere73658d2014-04-28 04:05:08 +000048 const char *Modifier = nullptr);
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +000049 void printCCOperand(const MCInst *MI, int opNum, raw_ostream &OS);
50 bool printGetPCX(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
51
52};
53} // end namespace llvm
54
55#endif