LLVM 20.0.0git
MCInstrInfo.h
Go to the documentation of this file.
1//===-- llvm/MC/MCInstrInfo.h - Target Instruction Info ---------*- 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 file describes the target machine instruction set.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_MC_MCINSTRINFO_H
14#define LLVM_MC_MCINSTRINFO_H
15
16#include "llvm/ADT/StringRef.h"
17#include "llvm/MC/MCInstrDesc.h"
18#include <cassert>
19
20namespace llvm {
21
22class MCSubtargetInfo;
23
24//---------------------------------------------------------------------------
25/// Interface to description of machine instruction set.
27public:
29 const MCSubtargetInfo &,
30 std::string &);
31
32private:
33 const MCInstrDesc *LastDesc; // Raw array to allow static init'n
34 const unsigned *InstrNameIndices; // Array for name indices in InstrNameData
35 const char *InstrNameData; // Instruction name string pool
36 // Subtarget feature that an instruction is deprecated on, if any
37 // -1 implies this is not deprecated by any single feature. It may still be
38 // deprecated due to a "complex" reason, below.
39 const uint8_t *DeprecatedFeatures;
40 // A complex method to determine if a certain instruction is deprecated or
41 // not, and return the reason for deprecation.
42 const ComplexDeprecationPredicate *ComplexDeprecationInfos;
43 unsigned NumOpcodes; // Number of entries in the desc array
44
45public:
46 /// Initialize MCInstrInfo, called by TableGen auto-generated routines.
47 /// *DO NOT USE*.
48 void InitMCInstrInfo(const MCInstrDesc *D, const unsigned *NI, const char *ND,
49 const uint8_t *DF,
50 const ComplexDeprecationPredicate *CDI, unsigned NO) {
51 LastDesc = D + NO - 1;
52 InstrNameIndices = NI;
53 InstrNameData = ND;
54 DeprecatedFeatures = DF;
55 ComplexDeprecationInfos = CDI;
56 NumOpcodes = NO;
57 }
58
59 unsigned getNumOpcodes() const { return NumOpcodes; }
60
61 /// Return the machine instruction descriptor that corresponds to the
62 /// specified instruction opcode.
63 const MCInstrDesc &get(unsigned Opcode) const {
64 assert(Opcode < NumOpcodes && "Invalid opcode!");
65 // The table is indexed backwards from the last entry.
66 return *(LastDesc - Opcode);
67 }
68
69 /// Returns the name for the instructions with the given opcode.
70 StringRef getName(unsigned Opcode) const {
71 assert(Opcode < NumOpcodes && "Invalid opcode!");
72 return StringRef(&InstrNameData[InstrNameIndices[Opcode]]);
73 }
74
75 /// Returns true if a certain instruction is deprecated and if so
76 /// returns the reason in \p Info.
78 std::string &Info) const;
79};
80
81} // End llvm namespace
82
83#endif
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
Analysis containing CSE Info
Definition: CSEInfo.cpp:27
static RegisterPass< DebugifyFunctionPass > DF("debugify-function", "Attach debug info to a function")
IRTranslator LLVM IR MI
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
Instances of this class represent a single low-level machine instruction.
Definition: MCInst.h:184
Describe properties that are true of each instruction in the target description file.
Definition: MCInstrDesc.h:198
Interface to description of machine instruction set.
Definition: MCInstrInfo.h:26
const MCInstrDesc & get(unsigned Opcode) const
Return the machine instruction descriptor that corresponds to the specified instruction opcode.
Definition: MCInstrInfo.h:63
bool(*)(MCInst &, const MCSubtargetInfo &, std::string &) ComplexDeprecationPredicate
Definition: MCInstrInfo.h:30
bool getDeprecatedInfo(MCInst &MI, const MCSubtargetInfo &STI, std::string &Info) const
Returns true if a certain instruction is deprecated and if so returns the reason in Info.
Definition: MCInstrInfo.cpp:15
unsigned getNumOpcodes() const
Definition: MCInstrInfo.h:59
StringRef getName(unsigned Opcode) const
Returns the name for the instructions with the given opcode.
Definition: MCInstrInfo.h:70
void InitMCInstrInfo(const MCInstrDesc *D, const unsigned *NI, const char *ND, const uint8_t *DF, const ComplexDeprecationPredicate *CDI, unsigned NO)
Initialize MCInstrInfo, called by TableGen auto-generated routines.
Definition: MCInstrInfo.h:48
Generic base class for all target subtargets.
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:50
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18