MCRegisterInfo.h
Go to the documentation of this file.
1 //=== MC/MCRegisterInfo.h - Target Register Description ---------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file describes an abstract interface used to get information about a
11 // target machines register file. This information is used for a variety of
12 // purposed, especially register allocation.
13 //
14 //===----------------------------------------------------------------------===//
15 
16 /* Capstone Disassembly Engine */
17 /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */
18 
19 #ifndef CS_LLVM_MC_MCREGISTERINFO_H
20 #define CS_LLVM_MC_MCREGISTERINFO_H
21 
22 #include "capstone/platform.h"
23 
27 typedef const MCPhysReg* iterator;
28 
29 typedef struct MCRegisterClass {
31  const uint8_t *RegSet;
36  uint16_t RegSize, Alignment; // Size & Alignment of register in bytes
40 
48 typedef struct MCRegisterDesc {
49  uint32_t Name; // Printable name for the reg (for debugging)
50  uint32_t SubRegs; // Sub-register set, described above
51  uint32_t SuperRegs; // Super-register set, described above
52 
53  // Offset into MCRI::SubRegIndices of a list of sub-register indices for each
54  // sub-register in SubRegs.
56 
57  // RegUnits - Points to the list of register units. The low 4 bits holds the
58  // Scale, the high bits hold an offset into DiffLists. See MCRegUnitIterator.
60 
65 
78 typedef struct MCRegisterInfo {
79  const MCRegisterDesc *Desc; // Pointer to the descriptor array
80  unsigned NumRegs; // Number of entries in the array
81  unsigned RAReg; // Return address register
82  unsigned PCReg; // Program counter register
83  const MCRegisterClass *Classes; // Pointer to the regclass array
84  unsigned NumClasses; // Number of entries in the array
85  unsigned NumRegUnits; // Number of regunits.
86  uint16_t (*RegUnitRoots)[2]; // Pointer to regunit root table.
87  const MCPhysReg *DiffLists; // Pointer to the difflists array
88  const char *RegStrings; // Pointer to the string table.
89  const uint16_t *SubRegIndices; // Pointer to the subreg lookup
90  // array.
91  unsigned NumSubRegIndices; // Number of subreg indices.
92  const uint16_t *RegEncodingTable; // Pointer to array of register
93  // encodings.
95 
97  const MCRegisterDesc *D, unsigned NR, unsigned RA,
98  unsigned PC,
99  const MCRegisterClass *C, unsigned NC,
100  uint16_t (*RURoots)[2],
101  unsigned NRU,
102  const MCPhysReg *DL,
103  const char *Strings,
104  const uint16_t *SubIndices,
105  unsigned NumIndices,
106  const uint16_t *RET);
107 
108 unsigned MCRegisterInfo_getMatchingSuperReg(const MCRegisterInfo *RI, unsigned Reg, unsigned SubIdx, const MCRegisterClass *RC);
109 
110 unsigned MCRegisterInfo_getSubReg(const MCRegisterInfo *RI, unsigned Reg, unsigned Idx);
111 
112 const MCRegisterClass* MCRegisterInfo_getRegClass(const MCRegisterInfo *RI, unsigned i);
113 
114 bool MCRegisterClass_contains(const MCRegisterClass *c, unsigned Reg);
115 
116 #endif
MCRegisterClass::Allocatable
bool Allocatable
Definition: MCRegisterInfo.h:38
MCRegisterInfo::NumRegUnits
unsigned NumRegUnits
Definition: MCRegisterInfo.h:85
uint16_t
unsigned short uint16_t
Definition: stdint-msvc2008.h:79
C
#define C(x)
Definition: abseil-cpp/absl/hash/internal/city_test.cc:49
MCRegisterInfo::RegEncodingTable
const uint16_t * RegEncodingTable
Definition: MCRegisterInfo.h:92
MCRegisterDesc
Definition: MCRegisterInfo.h:48
MCRegisterInfo
struct MCRegisterInfo MCRegisterInfo
MCRegisterClass_contains
bool MCRegisterClass_contains(const MCRegisterClass *c, unsigned Reg)
Definition: MCRegisterInfo.c:134
MCPhysReg
uint16_t MCPhysReg
Definition: MCRegisterInfo.h:26
MCRegisterInfo::NumRegs
unsigned NumRegs
Definition: MCRegisterInfo.h:80
MCRegisterClass::RegsSize
uint16_t RegsSize
Definition: MCRegisterInfo.h:33
MCRegisterInfo_getRegClass
const MCRegisterClass * MCRegisterInfo_getRegClass(const MCRegisterInfo *RI, unsigned i)
Definition: MCRegisterInfo.c:126
MCRegisterInfo::Desc
const MCRegisterDesc * Desc
Definition: MCRegisterInfo.h:79
MCRegisterInfo::RegStrings
const char * RegStrings
Definition: MCRegisterInfo.h:88
MCRegisterInfo::PCReg
unsigned PCReg
Definition: MCRegisterInfo.h:82
uint8_t
unsigned char uint8_t
Definition: stdint-msvc2008.h:78
iterator
const typedef MCPhysReg * iterator
Definition: MCRegisterInfo.h:27
MCRegisterInfo::RegUnitRoots
uint16_t(* RegUnitRoots)[2]
Definition: MCRegisterInfo.h:86
MCRegisterClass::RegSetSize
uint16_t RegSetSize
Definition: MCRegisterInfo.h:34
MCRegisterDesc::Name
uint32_t Name
Definition: MCRegisterInfo.h:49
MCRegisterClass::RegSize
uint16_t RegSize
Definition: MCRegisterInfo.h:36
MCRegisterDesc::SubRegIndices
uint32_t SubRegIndices
Definition: MCRegisterInfo.h:55
uint32_t
unsigned int uint32_t
Definition: stdint-msvc2008.h:80
MCRegisterInfo::NumClasses
unsigned NumClasses
Definition: MCRegisterInfo.h:84
c
void c(T a)
Definition: miscompile_with_no_unique_address_test.cc:40
MCRegisterInfo::NumSubRegIndices
unsigned NumSubRegIndices
Definition: MCRegisterInfo.h:91
MCRegisterClass::RegsBegin
iterator RegsBegin
Definition: MCRegisterInfo.h:30
MCRegisterInfo_InitMCRegisterInfo
void MCRegisterInfo_InitMCRegisterInfo(MCRegisterInfo *RI, const MCRegisterDesc *D, unsigned NR, unsigned RA, unsigned PC, const MCRegisterClass *C, unsigned NC, uint16_t(*RURoots)[2], unsigned NRU, const MCPhysReg *DL, const char *Strings, const uint16_t *SubIndices, unsigned NumIndices, const uint16_t *RET)
Definition: MCRegisterInfo.c:28
MCRegisterInfo::Classes
const MCRegisterClass * Classes
Definition: MCRegisterInfo.h:83
platform.h
MCRegisterClass
Definition: MCRegisterInfo.h:29
MCRegisterClass::Alignment
uint16_t Alignment
Definition: MCRegisterInfo.h:36
MCRegisterClass::ID
uint16_t ID
Definition: MCRegisterInfo.h:35
MCRegisterInfo::DiffLists
const MCPhysReg * DiffLists
Definition: MCRegisterInfo.h:87
MCRegisterClass::RegSet
const uint8_t * RegSet
Definition: MCRegisterInfo.h:31
MCRegisterInfo::RAReg
unsigned RAReg
Definition: MCRegisterInfo.h:81
MCRegisterClass
struct MCRegisterClass MCRegisterClass
MCRegisterDesc::SuperRegs
uint32_t SuperRegs
Definition: MCRegisterInfo.h:51
MCRegisterClass::NameIdx
uint32_t NameIdx
Definition: MCRegisterInfo.h:32
MCRegisterInfo_getSubReg
unsigned MCRegisterInfo_getSubReg(const MCRegisterInfo *RI, unsigned Reg, unsigned Idx)
Definition: MCRegisterInfo.c:108
testing::internal::Strings
::std::vector< ::std::string > Strings
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest-printers.h:872
MCRegisterDesc::RegUnitLaneMasks
uint16_t RegUnitLaneMasks
Definition: MCRegisterInfo.h:63
Reg
Reg
Definition: X86DisassemblerDecoder.h:466
MCRegisterDesc
struct MCRegisterDesc MCRegisterDesc
MCRegisterInfo
Definition: MCRegisterInfo.h:78
MCRegisterInfo_getMatchingSuperReg
unsigned MCRegisterInfo_getMatchingSuperReg(const MCRegisterInfo *RI, unsigned Reg, unsigned SubIdx, const MCRegisterClass *RC)
Definition: MCRegisterInfo.c:86
int8_t
signed char int8_t
Definition: stdint-msvc2008.h:75
MCRegisterClass::CopyCost
int8_t CopyCost
Definition: MCRegisterInfo.h:37
MCRegisterDesc::RegUnits
uint32_t RegUnits
Definition: MCRegisterInfo.h:59
MCRegisterDesc::SubRegs
uint32_t SubRegs
Definition: MCRegisterInfo.h:50
i
uint64_t i
Definition: abseil-cpp/absl/container/btree_benchmark.cc:230
MCRegisterInfo::SubRegIndices
const uint16_t * SubRegIndices
Definition: MCRegisterInfo.h:89


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:00:35