LLVM: lib/Target/ARC/ARCAsmPrinter.cpp Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
27
28using namespace llvm;
29
30#define DEBUG_TYPE "asm-printer"
31
32namespace {
33
34class ARCAsmPrinter : public AsmPrinter {
36
37public:
38 static char ID;
39
41 std::unique_ptr Streamer)
43 MCInstLowering(&OutContext, *this) {}
44
45 StringRef getPassName() const override { return "ARC Assembly Printer"; }
46 void emitInstruction(const MachineInstr *MI) override;
47
49};
50
51}
52
53void ARCAsmPrinter::emitInstruction(const MachineInstr *MI) {
54 ARC_MC::verifyInstructionPredicates(MI->getOpcode(),
55 getSubtargetInfo().getFeatureBits());
56
57 SmallString<128> Str;
58 raw_svector_ostream O(Str);
59
60 switch (MI->getOpcode()) {
61 case ARC::DBG_VALUE:
63 break;
64 }
65
66 MCInst TmpInst;
67 MCInstLowering.Lower(MI, TmpInst);
68 EmitToStreamer(*OutStreamer, TmpInst);
69}
70
71bool ARCAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
72
75}
76
77char ARCAsmPrinter::ID = 0;
78
79INITIALIZE_PASS(ARCAsmPrinter, "arc-asm-printer", "ARC Assmebly Printer", false,
80 false)
81
82
85}
This file contains the declaration of the ARCInstPrinter class, which is used to print ARC MCInst to ...
#define LLVM_EXTERNAL_VISIBILITY
#define INITIALIZE_PASS(passName, arg, name, cfg, analysis)
static TableGen::Emitter::OptClass< SkeletonEmitter > X("gen-skeleton-class", "Generate example skeleton class")
This class is used to lower an MachineInstr into an MCInst.
void Lower(const MachineInstr *MI, MCInst &OutMI) const
This class is intended to be used as a driving class for all asm writers.
bool runOnMachineFunction(MachineFunction &MF) override
Emit the specified function out to the OutStreamer.
void ensureAlignment(Align A)
ensureAlignment - Make sure the function is at least A bytes aligned.
Representation of each machine instruction.
StringRef - Represent a constant reference to a string, i.e.
Primary interface to the complete machine description for the target machine.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
constexpr char Align[]
Key for Kernel::Arg::Metadata::mAlign.
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
This is an optimization pass for GlobalISel generic memory operations.
Target & getTheARCTarget()
RegisterAsmPrinter - Helper template for registering a target specific assembly printer,...