#ifndef RABBITIZER_REGISTERDESCRIPTOR_H
#define RABBITIZER_REGISTERDESCRIPTOR_H
#pragma once
#include <stdbool.h>
#include "common/Utils.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct RabbitizerRegisterDescriptor {
bool isClobberedByFuncCall; bool isReserved; bool isKernel; bool isZero; bool isAt; bool isReturnReg; bool isRa; bool isStackPointer; bool isGp; bool isTemp; bool isArg; bool isSaved; } RabbitizerRegisterDescriptor;
extern const RabbitizerRegisterDescriptor RabbitizerRegister_GprO32_Descriptors[];
extern const RabbitizerRegisterDescriptor RabbitizerRegister_GprN32_Descriptors[];
extern const RabbitizerRegisterDescriptor RabbitizerRegister_Cop0_Descriptors[];
extern const RabbitizerRegisterDescriptor RabbitizerRegister_Cop1O32_Descriptors[];
extern const RabbitizerRegisterDescriptor RabbitizerRegister_Cop1N32_Descriptors[];
extern const RabbitizerRegisterDescriptor RabbitizerRegister_Cop1N64_Descriptors[];
extern const RabbitizerRegisterDescriptor RabbitizerRegister_Cop1Control_Descriptors[];
extern const RabbitizerRegisterDescriptor RabbitizerRegister_Cop2_Descriptors[];
extern const RabbitizerRegisterDescriptor RabbitizerRegister_RspGpr_Descriptors[];
extern const RabbitizerRegisterDescriptor RabbitizerRegister_RspCop0_Descriptors[];
extern const RabbitizerRegisterDescriptor RabbitizerRegister_RspCop2_Descriptors[];
extern const RabbitizerRegisterDescriptor RabbitizerRegister_RspCop2Control_Descriptors[];
extern const RabbitizerRegisterDescriptor RabbitizerRegister_RspVector_Descriptors[];
extern const RabbitizerRegisterDescriptor RabbitizerRegister_R5900VF_Descriptors[];
extern const RabbitizerRegisterDescriptor RabbitizerRegister_R5900VI_Descriptors[];
NODISCARD NON_NULL(1) PURE
bool RabbitizerRegisterDescriptor_isClobberedByFuncCall(const RabbitizerRegisterDescriptor *self);
NODISCARD NON_NULL(1) PURE
bool RabbitizerRegisterDescriptor_isReserved(const RabbitizerRegisterDescriptor *self);
NODISCARD NON_NULL(1) PURE
bool RabbitizerRegisterDescriptor_isKernel(const RabbitizerRegisterDescriptor *self);
NODISCARD NON_NULL(1) PURE
bool RabbitizerRegisterDescriptor_isZero(const RabbitizerRegisterDescriptor *self);
NODISCARD NON_NULL(1) PURE
bool RabbitizerRegisterDescriptor_isAt(const RabbitizerRegisterDescriptor *self);
NODISCARD NON_NULL(1) PURE
bool RabbitizerRegisterDescriptor_isReturnReg(const RabbitizerRegisterDescriptor *self);
NODISCARD NON_NULL(1) PURE
bool RabbitizerRegisterDescriptor_isRa(const RabbitizerRegisterDescriptor *self);
NODISCARD NON_NULL(1) PURE
bool RabbitizerRegisterDescriptor_isStackPointer(const RabbitizerRegisterDescriptor *self);
NODISCARD NON_NULL(1) PURE
bool RabbitizerRegisterDescriptor_isGp(const RabbitizerRegisterDescriptor *self);
NODISCARD NON_NULL(1) PURE
bool RabbitizerRegisterDescriptor_isTemp(const RabbitizerRegisterDescriptor *self);
NODISCARD NON_NULL(1) PURE
bool RabbitizerRegisterDescriptor_isArg(const RabbitizerRegisterDescriptor *self);
NODISCARD NON_NULL(1) PURE
bool RabbitizerRegisterDescriptor_isSaved(const RabbitizerRegisterDescriptor *self);
#ifdef __cplusplus
}
#endif
#endif