#ifndef CS_LLVM_MC_MCREGISTERINFO_H
#define CS_LLVM_MC_MCREGISTERINFO_H
#include "capstone/platform.h"
typedef uint16_t MCPhysReg;
typedef const MCPhysReg* iterator;
typedef struct MCRegisterClass2 {
iterator RegsBegin;
const uint8_t *RegSet;
uint8_t RegsSize;
uint8_t RegSetSize;
} MCRegisterClass2;
typedef struct MCRegisterClass {
iterator RegsBegin;
const uint8_t *RegSet;
uint16_t RegSetSize;
} MCRegisterClass;
typedef struct MCRegisterDesc {
uint32_t Name; uint32_t SubRegs; uint32_t SuperRegs;
uint32_t SubRegIndices;
uint32_t RegUnits;
uint16_t RegUnitLaneMasks; } MCRegisterDesc;
typedef struct MCRegisterInfo {
const MCRegisterDesc *Desc; unsigned NumRegs; unsigned RAReg; unsigned PCReg; const MCRegisterClass *Classes; unsigned NumClasses; unsigned NumRegUnits; uint16_t (*RegUnitRoots)[2]; const MCPhysReg *DiffLists; const char *RegStrings; const uint16_t *SubRegIndices; unsigned NumSubRegIndices; const uint16_t *RegEncodingTable; } MCRegisterInfo;
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);
unsigned MCRegisterInfo_getMatchingSuperReg(const MCRegisterInfo *RI, unsigned Reg, unsigned SubIdx, const MCRegisterClass *RC);
unsigned MCRegisterInfo_getSubReg(const MCRegisterInfo *RI, unsigned Reg, unsigned Idx);
const MCRegisterClass* MCRegisterInfo_getRegClass(const MCRegisterInfo *RI, unsigned i);
bool MCRegisterClass_contains(const MCRegisterClass *c, unsigned Reg);
#endif