61 lines · c
1//===-- VEInstPrinter.h - Convert VE MCInst to assembly syntax ------------===//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// This class prints an VE MCInst to a .s file.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_LIB_TARGET_VE_INSTPRINTER_VEINSTPRINTER_H14#define LLVM_LIB_TARGET_VE_INSTPRINTER_VEINSTPRINTER_H15 16#include "VEMCTargetDesc.h"17#include "llvm/MC/MCInstPrinter.h"18 19namespace llvm {20 21class VEInstPrinter : public MCInstPrinter {22public:23 VEInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,24 const MCRegisterInfo &MRI)25 : MCInstPrinter(MAI, MII, MRI) {}26 27 void printRegName(raw_ostream &OS, MCRegister Reg) override;28 void printInst(const MCInst *MI, uint64_t Address, StringRef Annot,29 const MCSubtargetInfo &STI, raw_ostream &OS) override;30 31 // Autogenerated by tblgen.32 std::pair<const char *, uint64_t>33 getMnemonic(const MCInst &MI) const override;34 bool printAliasInstr(const MCInst *, uint64_t Address,35 const MCSubtargetInfo &, raw_ostream &);36 void printInstruction(const MCInst *, uint64_t, const MCSubtargetInfo &,37 raw_ostream &);38 static const char *getRegisterName(MCRegister Reg,39 unsigned AltIdx = VE::NoRegAltName);40 41 void printOperand(const MCInst *MI, int OpNum, const MCSubtargetInfo &STI,42 raw_ostream &OS);43 void printMemASXOperand(const MCInst *MI, int OpNum,44 const MCSubtargetInfo &STI, raw_ostream &OS);45 void printMemASOperandASX(const MCInst *MI, int OpNum,46 const MCSubtargetInfo &STI, raw_ostream &OS);47 void printMemASOperandRRM(const MCInst *MI, int OpNum,48 const MCSubtargetInfo &STI, raw_ostream &OS);49 void printMemASOperandHM(const MCInst *MI, int OpNum,50 const MCSubtargetInfo &STI, raw_ostream &OS);51 void printMImmOperand(const MCInst *MI, int OpNum, const MCSubtargetInfo &STI,52 raw_ostream &OS);53 void printCCOperand(const MCInst *MI, int OpNum, const MCSubtargetInfo &STI,54 raw_ostream &OS);55 void printRDOperand(const MCInst *MI, int OpNum, const MCSubtargetInfo &STI,56 raw_ostream &OS);57};58} // namespace llvm59 60#endif61