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