Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.h
35294 views
1
//===- PPCInstPrinter.h - Convert PPC MCInst to assembly syntax -*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This class prints an PPC MCInst to a .s file.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#ifndef LLVM_LIB_TARGET_POWERPC_MCTARGETDESC_PPCINSTPRINTER_H
14
#define LLVM_LIB_TARGET_POWERPC_MCTARGETDESC_PPCINSTPRINTER_H
15
16
#include "llvm/MC/MCInstPrinter.h"
17
#include "llvm/TargetParser/Triple.h"
18
19
namespace llvm {
20
21
class PPCInstPrinter : public MCInstPrinter {
22
Triple TT;
23
private:
24
bool showRegistersWithPercentPrefix(const char *RegName) const;
25
bool showRegistersWithPrefix() const;
26
const char *getVerboseConditionRegName(unsigned RegNum,
27
unsigned RegEncoding) const;
28
29
public:
30
PPCInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
31
const MCRegisterInfo &MRI, Triple T)
32
: MCInstPrinter(MAI, MII, MRI), TT(T) {}
33
34
void printRegName(raw_ostream &OS, MCRegister Reg) const override;
35
void printInst(const MCInst *MI, uint64_t Address, StringRef Annot,
36
const MCSubtargetInfo &STI, raw_ostream &O) override;
37
38
// Autogenerated by tblgen.
39
std::pair<const char *, uint64_t> getMnemonic(const MCInst *MI) override;
40
void printInstruction(const MCInst *MI, uint64_t Address,
41
const MCSubtargetInfo &STI, raw_ostream &O);
42
static const char *getRegisterName(MCRegister Reg);
43
44
bool printAliasInstr(const MCInst *MI, uint64_t Address,
45
const MCSubtargetInfo &STI, raw_ostream &OS);
46
void printCustomAliasOperand(const MCInst *MI, uint64_t Address,
47
unsigned OpIdx, unsigned PrintMethodIdx,
48
const MCSubtargetInfo &STI, raw_ostream &OS);
49
50
void printOperand(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
51
raw_ostream &O);
52
void printPredicateOperand(const MCInst *MI, unsigned OpNo,
53
const MCSubtargetInfo &STI, raw_ostream &O,
54
const char *Modifier = nullptr);
55
void printATBitsAsHint(const MCInst *MI, unsigned OpNo,
56
const MCSubtargetInfo &STI, raw_ostream &O);
57
58
void printU1ImmOperand(const MCInst *MI, unsigned OpNo,
59
const MCSubtargetInfo &STI, raw_ostream &O);
60
void printU2ImmOperand(const MCInst *MI, unsigned OpNo,
61
const MCSubtargetInfo &STI, raw_ostream &O);
62
void printU3ImmOperand(const MCInst *MI, unsigned OpNo,
63
const MCSubtargetInfo &STI, raw_ostream &O);
64
void printU4ImmOperand(const MCInst *MI, unsigned OpNo,
65
const MCSubtargetInfo &STI, raw_ostream &O);
66
void printS5ImmOperand(const MCInst *MI, unsigned OpNo,
67
const MCSubtargetInfo &STI, raw_ostream &O);
68
void printU5ImmOperand(const MCInst *MI, unsigned OpNo,
69
const MCSubtargetInfo &STI, raw_ostream &O);
70
void printU6ImmOperand(const MCInst *MI, unsigned OpNo,
71
const MCSubtargetInfo &STI, raw_ostream &O);
72
void printU7ImmOperand(const MCInst *MI, unsigned OpNo,
73
const MCSubtargetInfo &STI, raw_ostream &O);
74
void printU8ImmOperand(const MCInst *MI, unsigned OpNo,
75
const MCSubtargetInfo &STI, raw_ostream &O);
76
void printU10ImmOperand(const MCInst *MI, unsigned OpNo,
77
const MCSubtargetInfo &STI, raw_ostream &O);
78
void printU12ImmOperand(const MCInst *MI, unsigned OpNo,
79
const MCSubtargetInfo &STI, raw_ostream &O);
80
void printS16ImmOperand(const MCInst *MI, unsigned OpNo,
81
const MCSubtargetInfo &STI, raw_ostream &O);
82
void printS34ImmOperand(const MCInst *MI, unsigned OpNo,
83
const MCSubtargetInfo &STI, raw_ostream &O);
84
void printU16ImmOperand(const MCInst *MI, unsigned OpNo,
85
const MCSubtargetInfo &STI, raw_ostream &O);
86
void printImmZeroOperand(const MCInst *MI, unsigned OpNo,
87
const MCSubtargetInfo &STI, raw_ostream &O);
88
void printBranchOperand(const MCInst *MI, uint64_t Address, unsigned OpNo,
89
const MCSubtargetInfo &STI, raw_ostream &O);
90
void printAbsBranchOperand(const MCInst *MI, unsigned OpNo,
91
const MCSubtargetInfo &STI, raw_ostream &O);
92
void printTLSCall(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
93
raw_ostream &O);
94
95
void printcrbitm(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
96
raw_ostream &O);
97
98
void printMemRegImm(const MCInst *MI, unsigned OpNo,
99
const MCSubtargetInfo &STI, raw_ostream &O);
100
void printMemRegImmHash(const MCInst *MI, unsigned OpNo,
101
const MCSubtargetInfo &STI, raw_ostream &O);
102
void printMemRegImm34PCRel(const MCInst *MI, unsigned OpNo,
103
const MCSubtargetInfo &STI, raw_ostream &O);
104
void printMemRegImm34(const MCInst *MI, unsigned OpNo,
105
const MCSubtargetInfo &STI, raw_ostream &O);
106
void printMemRegReg(const MCInst *MI, unsigned OpNo,
107
const MCSubtargetInfo &STI, raw_ostream &O);
108
};
109
} // end namespace llvm
110
111
#endif
112
113