blob: 62d42cbab2049cc2ded1e7a27923bc952a942cc8 [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 {
25public:
26 SparcInstPrinter(const MCAsmInfo &MAI,
27 const MCInstrInfo &MII,
Venkatraman Govindaraju81aae572014-03-02 03:39:39 +000028 const MCRegisterInfo &MRI,
29 const MCSubtargetInfo &sti)
Akira Hatanaka725657b2015-03-28 04:03:51 +000030 : MCInstPrinter(MAI, MII, MRI) {}
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +000031
Craig Topperb0c941b2014-04-29 07:57:13 +000032 void printRegName(raw_ostream &OS, unsigned RegNo) const override;
Akira Hatanakab46d0232015-03-27 20:36:02 +000033 void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot,
34 const MCSubtargetInfo &STI) override;
Akira Hatanaka725657b2015-03-28 04:03:51 +000035 bool printSparcAliasInstr(const MCInst *MI, const MCSubtargetInfo &STI,
36 raw_ostream &OS);
37 bool isV9(const MCSubtargetInfo &STI) const;
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +000038
39 // Autogenerated by tblgen.
Akira Hatanaka725657b2015-03-28 04:03:51 +000040 void printInstruction(const MCInst *MI, const MCSubtargetInfo &STI,
41 raw_ostream &O);
42 bool printAliasInstr(const MCInst *MI, const MCSubtargetInfo &STI,
43 raw_ostream &O);
Tim Northoveree20caa2014-05-12 18:04:06 +000044 void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx,
Akira Hatanaka725657b2015-03-28 04:03:51 +000045 unsigned PrintMethodIdx,
46 const MCSubtargetInfo &STI, raw_ostream &O);
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +000047 static const char *getRegisterName(unsigned RegNo);
48
Akira Hatanaka725657b2015-03-28 04:03:51 +000049 void printOperand(const MCInst *MI, int opNum, const MCSubtargetInfo &STI,
50 raw_ostream &OS);
51 void printMemOperand(const MCInst *MI, int opNum, const MCSubtargetInfo &STI,
52 raw_ostream &OS, const char *Modifier = nullptr);
53 void printCCOperand(const MCInst *MI, int opNum, const MCSubtargetInfo &STI,
54 raw_ostream &OS);
55 bool printGetPCX(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
56 raw_ostream &OS);
Venkatraman Govindaraju0b938652013-12-25 23:43:39 +000057};
58} // end namespace llvm
59
60#endif