xref: /freebsd-src/contrib/llvm-project/llvm/lib/Target/CSKY/CSKYAsmPrinter.h (revision 0eae32dcef82f6f06de6419a0d623d7def0cc8f6)
1349cc55cSDimitry Andric //===-- CSKYAsmPrinter.h - CSKY implementation of AsmPrinter ----*- C++ -*-===//
2349cc55cSDimitry Andric //
3349cc55cSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4349cc55cSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5349cc55cSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6349cc55cSDimitry Andric //
7349cc55cSDimitry Andric //===----------------------------------------------------------------------===//
8349cc55cSDimitry Andric 
9349cc55cSDimitry Andric #ifndef LLVM_LIB_TARGET_CSKY_CSKYASMPRINTER_H
10349cc55cSDimitry Andric #define LLVM_LIB_TARGET_CSKY_CSKYASMPRINTER_H
11349cc55cSDimitry Andric 
12349cc55cSDimitry Andric #include "CSKYMCInstLower.h"
13349cc55cSDimitry Andric #include "CSKYSubtarget.h"
14349cc55cSDimitry Andric #include "llvm/CodeGen/AsmPrinter.h"
15349cc55cSDimitry Andric #include "llvm/MC/MCDirectives.h"
16349cc55cSDimitry Andric 
17349cc55cSDimitry Andric namespace llvm {
18349cc55cSDimitry Andric class LLVM_LIBRARY_VISIBILITY CSKYAsmPrinter : public AsmPrinter {
19349cc55cSDimitry Andric   CSKYMCInstLower MCInstLowering;
20349cc55cSDimitry Andric 
21349cc55cSDimitry Andric   const CSKYSubtarget *Subtarget;
22349cc55cSDimitry Andric 
23349cc55cSDimitry Andric public:
24349cc55cSDimitry Andric   explicit CSKYAsmPrinter(TargetMachine &TM,
25349cc55cSDimitry Andric                           std::unique_ptr<MCStreamer> Streamer);
26349cc55cSDimitry Andric 
27349cc55cSDimitry Andric   StringRef getPassName() const override { return "CSKY Assembly Printer"; }
28349cc55cSDimitry Andric 
29*0eae32dcSDimitry Andric   void EmitToStreamer(MCStreamer &S, const MCInst &Inst);
30*0eae32dcSDimitry Andric 
31349cc55cSDimitry Andric   /// tblgen'erated driver function for lowering simple MI->MC
32349cc55cSDimitry Andric   /// pseudo instructions.
33349cc55cSDimitry Andric   bool emitPseudoExpansionLowering(MCStreamer &OutStreamer,
34349cc55cSDimitry Andric                                    const MachineInstr *MI);
35349cc55cSDimitry Andric 
36349cc55cSDimitry Andric   void emitInstruction(const MachineInstr *MI) override;
37349cc55cSDimitry Andric 
38349cc55cSDimitry Andric   bool runOnMachineFunction(MachineFunction &MF) override;
39349cc55cSDimitry Andric };
40349cc55cSDimitry Andric } // end namespace llvm
41349cc55cSDimitry Andric 
42349cc55cSDimitry Andric #endif // LLVM_LIB_TARGET_CSKY_CSKYASMPRINTER_H
43