brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · b2373a9 Raw
68 lines · c
1//===- LoongArchAsmPrinter.h - LoongArch LLVM Assembly Printer -*- 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-exception6//7//===----------------------------------------------------------------------===//8//9// LoongArch Assembly printer class.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_LIB_TARGET_LOONGARCH_LOONGARCHASMPRINTER_H14#define LLVM_LIB_TARGET_LOONGARCH_LOONGARCHASMPRINTER_H15 16#include "LoongArchSubtarget.h"17#include "llvm/CodeGen/AsmPrinter.h"18#include "llvm/CodeGen/StackMaps.h"19#include "llvm/MC/MCStreamer.h"20#include "llvm/Support/Compiler.h"21 22namespace llvm {23 24class LLVM_LIBRARY_VISIBILITY LoongArchAsmPrinter : public AsmPrinter {25public:26  static char ID;27 28private:29  const MCSubtargetInfo *STI;30 31public:32  explicit LoongArchAsmPrinter(TargetMachine &TM,33                               std::unique_ptr<MCStreamer> Streamer)34      : AsmPrinter(TM, std::move(Streamer), ID), STI(TM.getMCSubtargetInfo()) {}35 36  StringRef getPassName() const override {37    return "LoongArch Assembly Printer";38  }39 40  bool runOnMachineFunction(MachineFunction &MF) override;41 42  void emitInstruction(const MachineInstr *MI) override;43 44  bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,45                       const char *ExtraCode, raw_ostream &OS) override;46  bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo,47                             const char *ExtraCode, raw_ostream &OS) override;48 49  void LowerSTATEPOINT(const MachineInstr &MI);50  void LowerPATCHABLE_FUNCTION_ENTER(const MachineInstr &MI);51  void LowerPATCHABLE_FUNCTION_EXIT(const MachineInstr &MI);52  void LowerPATCHABLE_TAIL_CALL(const MachineInstr &MI);53  void emitSled(const MachineInstr &MI, SledKind Kind);54 55  // tblgen'erated function.56  bool lowerPseudoInstExpansion(const MachineInstr *MI, MCInst &Inst);57 58  // Wrapper needed for tblgenned pseudo lowering.59  bool lowerOperand(const MachineOperand &MO, MCOperand &MCOp) const {60    return lowerLoongArchMachineOperandToMCOperand(MO, MCOp, *this);61  }62  void emitJumpTableInfo() override;63};64 65} // end namespace llvm66 67#endif // LLVM_LIB_TARGET_LOONGARCH_LOONGARCHASMPRINTER_H68