blob: 6f06d1ddae32f9bd02cee798c018716fefb03e16 [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"
18
19namespace llvm {
20
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +000021class SparcInstPrinter : public MCInstPrinter {
22public:
Eric Christopherd639cdf2015-03-30 22:09:43 +000023 SparcInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
24 const MCRegisterInfo &MRI)
25 : MCInstPrinter(MAI, MII, MRI) {}
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +000026
Craig Topperb0c941b2014-04-29 07:57:13 +000027 void printRegName(raw_ostream &OS, unsigned RegNo) const override;
Akira Hatanakab46d0232015-03-27 20:36:02 +000028 void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot,
29 const MCSubtargetInfo &STI) override;
Akira Hatanaka725657b2015-03-28 04:03:51 +000030 bool printSparcAliasInstr(const MCInst *MI, const MCSubtargetInfo &STI,
31 raw_ostream &OS);
32 bool isV9(const MCSubtargetInfo &STI) const;
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +000033
34 // Autogenerated by tblgen.
Akira Hatanaka725657b2015-03-28 04:03:51 +000035 void printInstruction(const MCInst *MI, const MCSubtargetInfo &STI,
36 raw_ostream &O);
37 bool printAliasInstr(const MCInst *MI, const MCSubtargetInfo &STI,
38 raw_ostream &O);
Tim Northoveree20caa2014-05-12 18:04:06 +000039 void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx,
Akira Hatanaka725657b2015-03-28 04:03:51 +000040 unsigned PrintMethodIdx,
41 const MCSubtargetInfo &STI, raw_ostream &O);
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +000042 static const char *getRegisterName(unsigned RegNo);
43
Akira Hatanaka725657b2015-03-28 04:03:51 +000044 void printOperand(const MCInst *MI, int opNum, const MCSubtargetInfo &STI,
45 raw_ostream &OS);
46 void printMemOperand(const MCInst *MI, int opNum, const MCSubtargetInfo &STI,
47 raw_ostream &OS, const char *Modifier = nullptr);
48 void printCCOperand(const MCInst *MI, int opNum, const MCSubtargetInfo &STI,
49 raw_ostream &OS);
50 bool printGetPCX(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
51 raw_ostream &OS);
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +000052};
53} // end namespace llvm
54
55#endif