LLVM 22.0.0git
SPIRVInstPrinter.h
Go to the documentation of this file.
1//===-- SPIRVInstPrinter.h - Output SPIR-V MCInsts as ASM -------*- 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-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This class prints a SPIR-V MCInst to a .s file.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_LIB_TARGET_SPIRV_INSTPRINTER_SPIRVINSTPRINTER_H
14#define LLVM_LIB_TARGET_SPIRV_INSTPRINTER_SPIRVINSTPRINTER_H
15
17#include "llvm/ADT/DenseSet.h"
19#include "llvm/MC/MCRegister.h"
20
21namespace llvm {
23private:
25 void recordOpExtInstImport(const MCInst *MI);
26
27public:
29
30 void printInst(const MCInst *MI, uint64_t Address, StringRef Annot,
31 const MCSubtargetInfo &STI, raw_ostream &OS) override;
32 void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
33
34 void printStringImm(const MCInst *MI, unsigned OpNo, raw_ostream &O);
35
36 void printOpDecorate(const MCInst *MI, raw_ostream &O);
37 void printOpExtInst(const MCInst *MI, raw_ostream &O);
38 void printUnknownType(const MCInst *MI, raw_ostream &O);
39 void printRemainingVariableOps(const MCInst *MI, unsigned StartIndex,
40 raw_ostream &O, bool SkipFirstSpace = false,
41 bool SkipImmediates = false);
42 void printOpConstantVarOps(const MCInst *MI, unsigned StartIndex,
43 raw_ostream &O);
44
45 void printExtension(const MCInst *MI, unsigned OpNo, raw_ostream &O);
46 template <SPIRV::OperandCategory::OperandCategory category>
47 void printSymbolicOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
48
49 // Autogenerated by tblgen.
50 std::pair<const char *, uint64_t>
51 getMnemonic(const MCInst &MI) const override;
53 static const char *getRegisterName(MCRegister Reg);
54};
55} // namespace llvm
56
57#endif // LLVM_LIB_TARGET_SPIRV_INSTPRINTER_SPIRVINSTPRINTER_H
This file defines the DenseSet and SmallDenseSet classes.
IRTranslator LLVM IR MI
Register Reg
MCInstPrinter(const MCAsmInfo &mai, const MCInstrInfo &mii, const MCRegisterInfo &mri)
Instances of this class represent a single low-level machine instruction.
Definition MCInst.h:188
Wrapper class representing physical registers. Should be passed by value.
Definition MCRegister.h:33
Generic base class for all target subtargets.
std::pair< const char *, uint64_t > getMnemonic(const MCInst &MI) const override
Returns a pair containing the mnemonic for MI and the number of bits left for further processing by p...
void printExtension(const MCInst *MI, unsigned OpNo, raw_ostream &O)
static const char * getRegisterName(MCRegister Reg)
void printStringImm(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &O)
void printInst(const MCInst *MI, uint64_t Address, StringRef Annot, const MCSubtargetInfo &STI, raw_ostream &OS) override
Print the specified MCInst to the specified raw_ostream.
void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printOpExtInst(const MCInst *MI, raw_ostream &O)
void printOpConstantVarOps(const MCInst *MI, unsigned StartIndex, raw_ostream &O)
void printSymbolicOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printRemainingVariableOps(const MCInst *MI, unsigned StartIndex, raw_ostream &O, bool SkipFirstSpace=false, bool SkipImmediates=false)
void printOpDecorate(const MCInst *MI, raw_ostream &O)
void printUnknownType(const MCInst *MI, raw_ostream &O)
MCInstPrinter(const MCAsmInfo &mai, const MCInstrInfo &mii, const MCRegisterInfo &mri)
StringRef - Represent a constant reference to a string, i.e.
Definition StringRef.h:55
This class implements an extremely fast bulk output stream that can only output to a stream.
Definition raw_ostream.h:53
This is an optimization pass for GlobalISel generic memory operations.