Pregenerate every table

This commit is contained in:
angie 2022-12-16 15:37:46 -03:00
parent 12537e6706
commit 3735d91fcc
51 changed files with 5150 additions and 425 deletions

View File

@ -68,7 +68,7 @@ OXX_FILES := $(foreach f,$(CXX_FILES:.cpp=.o),build/$f)
DEP_FILES := $(O_FILES:%.o=%.d) $(OXX_FILES:%.o=%.d)
TABLE_DIRS := $(shell find include rabbitizer -type d)
TABLE_DIRS := $(shell find include src cplusplus rabbitizer -type d)
TABLE_TEMPLATES := $(foreach dir,$(TABLE_DIRS),$(wildcard $(dir)/*.table.template))
TABLE_GENERATED := $(TABLE_TEMPLATES:%.table.template=%.table.h)
@ -140,17 +140,17 @@ build/%.a:
build/%.so:
$(CC) -shared -o $@ $^
build/%.o: %.c $(TABLE_GENERATED)
build/%.o: %.c | $(TABLE_GENERATED)
# The -MMD flags additionaly creates a .d file with the same name as the .o file.
$(CC) -MMD -MP -c $(CSTD) $(OPTFLAGS) $(IINC) $(WARNINGS) $(WARNINGS_C) $(CFLAGS) -o $@ $<
build/%.o: %.cpp $(TABLE_GENERATED)
build/%.o: %.cpp | $(TABLE_GENERATED)
# The -MMD flags additionaly creates a .d file with the same name as the .o file.
$(CXX) -MMD -MP -c $(CXXSTD) $(OPTFLAGS) $(IINC_XX) $(WARNINGS) $(WARNINGS_CXX) $(CXXFLAGS) -o $@ $<
%.table.h: %.table.template
$(CC) -x c -MMD -MP -fsyntax-only -o $@ $<
cpp -P $(IINC) -M -MM -MMD -MP -MF $(@:.table.h=.table.d) $<
$(TABLE_GEN) $< $@ $(@F)

View File

@ -7,15 +7,7 @@
namespace rabbitizer {
#define RAB_DEF_ACCESSTYPE(name) name,
enum class AccessType {
#include "instructions/AccessType.inc"
RAB_DEF_ACCESSTYPE(MAX)
};
#undef RAB_DEF_ACCESSTYPE
#include "AccessType_enum_class.table.h"
};

View File

@ -0,0 +1,20 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Automatically generated. DO NOT MODIFY */
#ifndef AccessType_enum_class_table_h_automatic
#define AccessType_enum_class_table_h_automatic
enum class AccessType {
INVALID,
BYTE,
SHORT,
WORD,
DOUBLEWORD,
FLOAT,
DOUBLEFLOAT,
MAX,
};
#endif

View File

@ -0,0 +1,12 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RAB_DEF_ACCESSTYPE(name) name,
enum class AccessType {
#include "instructions/AccessType.inc"
RAB_DEF_ACCESSTYPE(MAX)
};
#undef RAB_DEF_ACCESSTYPE

View File

@ -10,25 +10,7 @@
namespace rabbitizer {
namespace InstrId {
#define RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, ...) \
prefix##_##name,
#define RABBITIZER_DEF_INSTR_ID_ALTNAME(prefix, caseBits, name, altname, ...) \
RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, __VA_ARGS__)
enum class UniqueId {
#include "instructions/instr_id/RabbitizerInstrId_cpu.inc"
#include "instructions/instr_id/RabbitizerInstrId_rsp.inc"
#include "instructions/instr_id/RabbitizerInstrId_r5900.inc"
ALL_MAX = RABBITIZER_DEF_INSTR_ID(r5900, , MAX, )
};
#undef RABBITIZER_DEF_INSTR_ID
#undef RABBITIZER_DEF_INSTR_ID_ALTNAME
#include "UniqueId_enum_class.table.h"
std::string getOpcodeName(UniqueId uniqueId);
};

View File

@ -7,20 +7,7 @@
namespace rabbitizer {
#define RAB_DEF_OPERAND(prefix, operand) \
prefix##_##operand,
enum class OperandType {
RAB_DEF_OPERAND(ALL, INVALID)
#include "instructions/operands/RabbitizerOperandType_cpu.inc"
#include "instructions/operands/RabbitizerOperandType_rsp.inc"
#include "instructions/operands/RabbitizerOperandType_r5900.inc"
RAB_DEF_OPERAND(ALL, MAX)
};
#undef RAB_DEF_OPERAND
#include "OperandType_enum_class.table.h"
};

View File

@ -0,0 +1,78 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Automatically generated. DO NOT MODIFY */
#ifndef OperandType_enum_class_table_h_automatic
#define OperandType_enum_class_table_h_automatic
enum class OperandType {
ALL_INVALID,
cpu_rs,
cpu_rt,
cpu_rd,
cpu_sa,
cpu_zero,
cpu_cop0d,
cpu_fs,
cpu_ft,
cpu_fd,
cpu_cop1cs,
cpu_cop2t,
cpu_op,
cpu_code,
cpu_code_lower,
cpu_copraw,
cpu_label,
cpu_immediate,
cpu_branch_target_label,
cpu_immediate_base,
rsp_rs,
rsp_rt,
rsp_rd,
rsp_cop0d,
rsp_cop2t,
rsp_cop2cd,
rsp_vs,
rsp_vt,
rsp_vd,
rsp_vt_elementhigh,
rsp_vt_elementlow,
rsp_vd_de,
rsp_vs_index,
rsp_offset_rs,
rsp_immediate_base,
r5900_I,
r5900_Q,
r5900_R,
r5900_ACC,
r5900_ACCxyzw,
r5900_vfs,
r5900_vft,
r5900_vfd,
r5900_vfsxyzw,
r5900_vftxyzw,
r5900_vfdxyzw,
r5900_vfsn,
r5900_vftn,
r5900_vfdn,
r5900_vfsl,
r5900_vftl,
r5900_vfdl,
r5900_vfsm,
r5900_vftm,
r5900_vfdm,
r5900_vis,
r5900_vit,
r5900_vid,
r5900_vis_predecr,
r5900_vit_predecr,
r5900_vid_predecr,
r5900_vis_postincr,
r5900_vit_postincr,
r5900_vid_postincr,
r5900_immediate5,
ALL_MAX,
};
#endif

View File

@ -0,0 +1,17 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RAB_DEF_OPERAND(prefix, operand) \
prefix##_##operand,
enum class OperandType {
RAB_DEF_OPERAND(ALL, INVALID)
#include "instructions/operands/RabbitizerOperandType_cpu.inc"
#include "instructions/operands/RabbitizerOperandType_rsp.inc"
#include "instructions/operands/RabbitizerOperandType_r5900.inc"
RAB_DEF_OPERAND(ALL, MAX)
};
#undef RAB_DEF_OPERAND

View File

@ -7,86 +7,8 @@
namespace rabbitizer {
namespace Registers {
#define RABBITIZER_DEF_REG(prefix, name, numeric) \
prefix##_##name
#define RABBITIZER_DEF_REG_NODOLLAR(prefix, name, numeric) \
prefix##_##name
namespace Cpu {
enum class GprO32 {
#include "instructions/registers/RabbitizerRegister_GprO32.inc"
};
enum class GprN32 {
#include "instructions/registers/RabbitizerRegister_GprN32.inc"
};
enum class Cop0 {
#include "instructions/registers/RabbitizerRegister_Cop0.inc"
};
// Float registers
enum class Cop1O32 {
#include "instructions/registers/RabbitizerRegister_Cop1O32.inc"
};
enum class Cop1N32 {
#include "instructions/registers/RabbitizerRegister_Cop1N32.inc"
};
enum class Cop1N64 {
#include "instructions/registers/RabbitizerRegister_Cop1N64.inc"
};
enum class Cop1Control {
#include "instructions/registers/RabbitizerRegister_Cop1Control.inc"
};
enum class Cop2 {
#include "instructions/registers/RabbitizerRegister_Cop2.inc"
};
};
namespace Rsp {
enum class Gpr {
#include "instructions/registers/RabbitizerRegister_RspGpr.inc"
};
enum class Cop0 {
#include "instructions/registers/RabbitizerRegister_RspCop0.inc"
};
enum class Cop2 {
#include "instructions/registers/RabbitizerRegister_RspCop2.inc"
};
enum class Cop2Control {
#include "instructions/registers/RabbitizerRegister_RspCop2Control.inc"
};
enum class Vector {
#include "instructions/registers/RabbitizerRegister_RspVector.inc"
};
};
namespace R5900 {
enum class VF {
#include "instructions/registers/RabbitizerRegister_R5900VF.inc"
};
enum class VI {
#include "instructions/registers/RabbitizerRegister_R5900VI.inc"
};
};
#undef RABBITIZER_DEF_REG
#undef RABBITIZER_DEF_REG_NODOLLAR
#include "Registers_enum_classes.table.h"
};
};

View File

@ -0,0 +1,510 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Automatically generated. DO NOT MODIFY */
#ifndef Registers_enum_classes_table_h_automatic
#define Registers_enum_classes_table_h_automatic
namespace Cpu {
enum class GprO32 {
GPR_O32_zero,
GPR_O32_at,
GPR_O32_v0,
GPR_O32_v1,
GPR_O32_a0,
GPR_O32_a1,
GPR_O32_a2,
GPR_O32_a3,
GPR_O32_t0,
GPR_O32_t1,
GPR_O32_t2,
GPR_O32_t3,
GPR_O32_t4,
GPR_O32_t5,
GPR_O32_t6,
GPR_O32_t7,
GPR_O32_s0,
GPR_O32_s1,
GPR_O32_s2,
GPR_O32_s3,
GPR_O32_s4,
GPR_O32_s5,
GPR_O32_s6,
GPR_O32_s7,
GPR_O32_t8,
GPR_O32_t9,
GPR_O32_k0,
GPR_O32_k1,
GPR_O32_gp,
GPR_O32_sp,
GPR_O32_fp,
GPR_O32_ra,
};
enum class GprN32 {
GPR_N32_zero,
GPR_N32_at,
GPR_N32_v0,
GPR_N32_v1,
GPR_N32_a0,
GPR_N32_a1,
GPR_N32_a2,
GPR_N32_a3,
GPR_N32_a4,
GPR_N32_a5,
GPR_N32_a6,
GPR_N32_a7,
GPR_N32_t0,
GPR_N32_t1,
GPR_N32_t2,
GPR_N32_t3,
GPR_N32_s0,
GPR_N32_s1,
GPR_N32_s2,
GPR_N32_s3,
GPR_N32_s4,
GPR_N32_s5,
GPR_N32_s6,
GPR_N32_s7,
GPR_N32_t8,
GPR_N32_t9,
GPR_N32_k0,
GPR_N32_k1,
GPR_N32_gp,
GPR_N32_sp,
GPR_N32_fp,
GPR_N32_ra,
};
enum class Cop0 {
COP0_Index,
COP0_Random,
COP0_EntryLo0,
COP0_EntryLo1,
COP0_Context,
COP0_PageMask,
COP0_Wired,
COP0_Reserved07,
COP0_BadVaddr,
COP0_Count,
COP0_EntryHi,
COP0_Compare,
COP0_Status,
COP0_Cause,
COP0_EPC,
COP0_PRevID,
COP0_Config,
COP0_LLAddr,
COP0_WatchLo,
COP0_WatchHi,
COP0_XContext,
COP0_Reserved21,
COP0_Reserved22,
COP0_Reserved23,
COP0_Reserved24,
COP0_Reserved25,
COP0_PErr,
COP0_CacheErr,
COP0_TagLo,
COP0_TagHi,
COP0_ErrorEPC,
COP0_Reserved31,
};
enum class Cop1O32 {
COP1_O32_fv0,
COP1_O32_fv0f,
COP1_O32_fv1,
COP1_O32_fv1f,
COP1_O32_ft0,
COP1_O32_ft0f,
COP1_O32_ft1,
COP1_O32_ft1f,
COP1_O32_ft2,
COP1_O32_ft2f,
COP1_O32_ft3,
COP1_O32_ft3f,
COP1_O32_fa0,
COP1_O32_fa0f,
COP1_O32_fa1,
COP1_O32_fa1f,
COP1_O32_ft4,
COP1_O32_ft4f,
COP1_O32_ft5,
COP1_O32_ft5f,
COP1_O32_fs0,
COP1_O32_fs0f,
COP1_O32_fs1,
COP1_O32_fs1f,
COP1_O32_fs2,
COP1_O32_fs2f,
COP1_O32_fs3,
COP1_O32_fs3f,
COP1_O32_fs4,
COP1_O32_fs4f,
COP1_O32_fs5,
COP1_O32_fs5f,
};
enum class Cop1N32 {
COP1_N32_fv0,
COP1_N32_ft14,
COP1_N32_fv1,
COP1_N32_ft15,
COP1_N32_ft0,
COP1_N32_ft1,
COP1_N32_ft2,
COP1_N32_ft3,
COP1_N32_ft4,
COP1_N32_ft5,
COP1_N32_ft6,
COP1_N32_ft7,
COP1_N32_fa0,
COP1_N32_fa1,
COP1_N32_fa2,
COP1_N32_fa3,
COP1_N32_fa4,
COP1_N32_fa5,
COP1_N32_fa6,
COP1_N32_fa7,
COP1_N32_fs0,
COP1_N32_ft8,
COP1_N32_fs1,
COP1_N32_ft9,
COP1_N32_fs2,
COP1_N32_ft10,
COP1_N32_fs3,
COP1_N32_ft11,
COP1_N32_fs4,
COP1_N32_ft12,
COP1_N32_fs5,
COP1_N32_ft13,
};
enum class Cop1N64 {
COP1_N64_fv0,
COP1_N64_ft12,
COP1_N64_fv1,
COP1_N64_ft13,
COP1_N64_ft0,
COP1_N64_ft1,
COP1_N64_ft2,
COP1_N64_ft3,
COP1_N64_ft4,
COP1_N64_ft5,
COP1_N64_ft6,
COP1_N64_ft7,
COP1_N64_fa0,
COP1_N64_fa1,
COP1_N64_fa2,
COP1_N64_fa3,
COP1_N64_fa4,
COP1_N64_fa5,
COP1_N64_fa6,
COP1_N64_fa7,
COP1_N64_ft8,
COP1_N64_ft9,
COP1_N64_ft10,
COP1_N64_ft11,
COP1_N64_fs0,
COP1_N64_fs1,
COP1_N64_fs2,
COP1_N64_fs3,
COP1_N64_fs4,
COP1_N64_fs5,
COP1_N64_fs6,
COP1_N64_fs7,
};
enum class Cop1Control {
COP1_CONTROL_0,
COP1_CONTROL_1,
COP1_CONTROL_2,
COP1_CONTROL_3,
COP1_CONTROL_4,
COP1_CONTROL_5,
COP1_CONTROL_6,
COP1_CONTROL_7,
COP1_CONTROL_8,
COP1_CONTROL_9,
COP1_CONTROL_10,
COP1_CONTROL_11,
COP1_CONTROL_12,
COP1_CONTROL_13,
COP1_CONTROL_14,
COP1_CONTROL_15,
COP1_CONTROL_16,
COP1_CONTROL_17,
COP1_CONTROL_18,
COP1_CONTROL_19,
COP1_CONTROL_20,
COP1_CONTROL_21,
COP1_CONTROL_22,
COP1_CONTROL_23,
COP1_CONTROL_24,
COP1_CONTROL_25,
COP1_CONTROL_26,
COP1_CONTROL_27,
COP1_CONTROL_28,
COP1_CONTROL_29,
COP1_CONTROL_30,
COP1_CONTROL_FpcCsr,
};
enum class Cop2 {
COP2_0,
COP2_1,
COP2_2,
COP2_3,
COP2_4,
COP2_5,
COP2_6,
COP2_7,
COP2_8,
COP2_9,
COP2_10,
COP2_11,
COP2_12,
COP2_13,
COP2_14,
COP2_15,
COP2_16,
COP2_17,
COP2_18,
COP2_19,
COP2_20,
COP2_21,
COP2_22,
COP2_23,
COP2_24,
COP2_25,
COP2_26,
COP2_27,
COP2_28,
COP2_29,
COP2_30,
COP2_31,
};
};
namespace Rsp {
enum class Gpr {
RSP_GPR_zero,
RSP_GPR_1,
RSP_GPR_2,
RSP_GPR_3,
RSP_GPR_4,
RSP_GPR_5,
RSP_GPR_6,
RSP_GPR_7,
RSP_GPR_8,
RSP_GPR_9,
RSP_GPR_10,
RSP_GPR_11,
RSP_GPR_12,
RSP_GPR_13,
RSP_GPR_14,
RSP_GPR_15,
RSP_GPR_16,
RSP_GPR_17,
RSP_GPR_18,
RSP_GPR_19,
RSP_GPR_20,
RSP_GPR_21,
RSP_GPR_22,
RSP_GPR_23,
RSP_GPR_24,
RSP_GPR_25,
RSP_GPR_26,
RSP_GPR_27,
RSP_GPR_28,
RSP_GPR_29,
RSP_GPR_30,
RSP_GPR_ra,
};
enum class Cop0 {
RSP_COP0_SP_MEM_ADDR,
RSP_COP0_SP_DRAM_ADDR,
RSP_COP0_SP_RD_LEN,
RSP_COP0_SP_WR_LEN,
RSP_COP0_SP_STATUS,
RSP_COP0_SP_DMA_FULL,
RSP_COP0_SP_DMA_BUSY,
RSP_COP0_SP_SEMAPHORE,
RSP_COP0_DPC_START,
RSP_COP0_DPC_END,
RSP_COP0_DPC_CURRENT,
RSP_COP0_DPC_STATUS,
RSP_COP0_DPC_CLOCK,
RSP_COP0_DPC_BUFBUSY,
RSP_COP0_DPC_PIPEBUSY,
RSP_COP0_DPC_TMEM,
};
enum class Cop2 {
RSP_COP2_0,
RSP_COP2_1,
RSP_COP2_2,
RSP_COP2_3,
RSP_COP2_4,
RSP_COP2_5,
RSP_COP2_6,
RSP_COP2_7,
RSP_COP2_8,
RSP_COP2_9,
RSP_COP2_10,
RSP_COP2_11,
RSP_COP2_12,
RSP_COP2_13,
RSP_COP2_14,
RSP_COP2_15,
RSP_COP2_16,
RSP_COP2_17,
RSP_COP2_18,
RSP_COP2_19,
RSP_COP2_20,
RSP_COP2_21,
RSP_COP2_22,
RSP_COP2_23,
RSP_COP2_24,
RSP_COP2_25,
RSP_COP2_26,
RSP_COP2_27,
RSP_COP2_28,
RSP_COP2_29,
RSP_COP2_30,
RSP_COP2_31,
};
enum class Cop2Control {
RSP_COP2_CONTROL_0,
RSP_COP2_CONTROL_1,
RSP_COP2_CONTROL_2,
RSP_COP2_CONTROL_3,
RSP_COP2_CONTROL_4,
RSP_COP2_CONTROL_5,
RSP_COP2_CONTROL_6,
RSP_COP2_CONTROL_7,
RSP_COP2_CONTROL_8,
RSP_COP2_CONTROL_9,
RSP_COP2_CONTROL_10,
RSP_COP2_CONTROL_11,
RSP_COP2_CONTROL_12,
RSP_COP2_CONTROL_13,
RSP_COP2_CONTROL_14,
RSP_COP2_CONTROL_15,
RSP_COP2_CONTROL_16,
RSP_COP2_CONTROL_17,
RSP_COP2_CONTROL_18,
RSP_COP2_CONTROL_19,
RSP_COP2_CONTROL_20,
RSP_COP2_CONTROL_21,
RSP_COP2_CONTROL_22,
RSP_COP2_CONTROL_23,
RSP_COP2_CONTROL_24,
RSP_COP2_CONTROL_25,
RSP_COP2_CONTROL_26,
RSP_COP2_CONTROL_27,
RSP_COP2_CONTROL_28,
RSP_COP2_CONTROL_29,
RSP_COP2_CONTROL_30,
COP1_CONTROL_31,
};
enum class Vector {
RSP_VECTOR_v0,
RSP_VECTOR_v1,
RSP_VECTOR_v2,
RSP_VECTOR_v3,
RSP_VECTOR_v4,
RSP_VECTOR_v5,
RSP_VECTOR_v6,
RSP_VECTOR_v7,
RSP_VECTOR_v8,
RSP_VECTOR_v9,
RSP_VECTOR_v10,
RSP_VECTOR_v11,
RSP_VECTOR_v12,
RSP_VECTOR_v13,
RSP_VECTOR_v14,
RSP_VECTOR_v15,
RSP_VECTOR_v16,
RSP_VECTOR_v17,
RSP_VECTOR_v18,
RSP_VECTOR_v19,
RSP_VECTOR_v20,
RSP_VECTOR_v21,
RSP_VECTOR_v22,
RSP_VECTOR_v23,
RSP_VECTOR_v24,
RSP_VECTOR_v25,
RSP_VECTOR_v26,
RSP_VECTOR_v27,
RSP_VECTOR_v28,
RSP_VECTOR_v29,
RSP_VECTOR_v30,
RSP_VECTOR_v31,
};
};
namespace R5900 {
enum class VF {
R5900_VF_vf0,
R5900_VF_vf1,
R5900_VF_vf2,
R5900_VF_vf3,
R5900_VF_vf4,
R5900_VF_vf5,
R5900_VF_vf6,
R5900_VF_vf7,
R5900_VF_vf8,
R5900_VF_vf9,
R5900_VF_vf10,
R5900_VF_vf11,
R5900_VF_vf12,
R5900_VF_vf13,
R5900_VF_vf14,
R5900_VF_vf15,
R5900_VF_vf16,
R5900_VF_vf17,
R5900_VF_vf18,
R5900_VF_vf19,
R5900_VF_vf20,
R5900_VF_vf21,
R5900_VF_vf22,
R5900_VF_vf23,
R5900_VF_vf24,
R5900_VF_vf25,
R5900_VF_vf26,
R5900_VF_vf27,
R5900_VF_vf28,
R5900_VF_vf29,
R5900_VF_vf30,
R5900_VF_vf31,
};
enum class VI {
R5900_VI_vi0,
R5900_VI_vi1,
R5900_VI_vi2,
R5900_VI_vi3,
R5900_VI_vi4,
R5900_VI_vi5,
R5900_VI_vi6,
R5900_VI_vi7,
R5900_VI_vi8,
R5900_VI_vi9,
R5900_VI_vi10,
R5900_VI_vi11,
R5900_VI_vi12,
R5900_VI_vi13,
R5900_VI_vi14,
R5900_VI_vi15,
R5900_VI_vi16,
R5900_VI_vi17,
R5900_VI_vi18,
R5900_VI_vi19,
R5900_VI_vi20,
R5900_VI_vi21,
R5900_VI_vi22,
R5900_VI_vi23,
R5900_VI_vi24,
R5900_VI_vi25,
R5900_VI_vi26,
R5900_VI_vi27,
R5900_VI_vi28,
R5900_VI_vi29,
R5900_VI_vi30,
R5900_VI_vi31,
};
};
#endif

View File

@ -0,0 +1,81 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RABBITIZER_DEF_REG(prefix, name, numeric) \
prefix##_##name
#define RABBITIZER_DEF_REG_NODOLLAR(prefix, name, numeric) \
prefix##_##name
namespace Cpu {
enum class GprO32 {
#include "instructions/registers/RabbitizerRegister_GprO32.inc"
};
enum class GprN32 {
#include "instructions/registers/RabbitizerRegister_GprN32.inc"
};
enum class Cop0 {
#include "instructions/registers/RabbitizerRegister_Cop0.inc"
};
// Float registers
enum class Cop1O32 {
#include "instructions/registers/RabbitizerRegister_Cop1O32.inc"
};
enum class Cop1N32 {
#include "instructions/registers/RabbitizerRegister_Cop1N32.inc"
};
enum class Cop1N64 {
#include "instructions/registers/RabbitizerRegister_Cop1N64.inc"
};
enum class Cop1Control {
#include "instructions/registers/RabbitizerRegister_Cop1Control.inc"
};
enum class Cop2 {
#include "instructions/registers/RabbitizerRegister_Cop2.inc"
};
};
namespace Rsp {
enum class Gpr {
#include "instructions/registers/RabbitizerRegister_RspGpr.inc"
};
enum class Cop0 {
#include "instructions/registers/RabbitizerRegister_RspCop0.inc"
};
enum class Cop2 {
#include "instructions/registers/RabbitizerRegister_RspCop2.inc"
};
enum class Cop2Control {
#include "instructions/registers/RabbitizerRegister_RspCop2Control.inc"
};
enum class Vector {
#include "instructions/registers/RabbitizerRegister_RspVector.inc"
};
};
namespace R5900 {
enum class VF {
#include "instructions/registers/RabbitizerRegister_R5900VF.inc"
};
enum class VI {
#include "instructions/registers/RabbitizerRegister_R5900VI.inc"
};
};
#undef RABBITIZER_DEF_REG
#undef RABBITIZER_DEF_REG_NODOLLAR

View File

@ -0,0 +1,693 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Automatically generated. DO NOT MODIFY */
#ifndef UniqueId_enum_class_table_h_automatic
#define UniqueId_enum_class_table_h_automatic
enum class UniqueId {
cpu_INVALID,
cpu_j,
cpu_jal,
cpu_beq,
cpu_bne,
cpu_beql,
cpu_bnel,
cpu_blez,
cpu_blezl,
cpu_bgtz,
cpu_bgtzl,
cpu_addi,
cpu_addiu,
cpu_slti,
cpu_sltiu,
cpu_andi,
cpu_ori,
cpu_xori,
cpu_daddi,
cpu_daddiu,
cpu_lui,
cpu_ldl,
cpu_ldr,
cpu_lb,
cpu_lh,
cpu_lwl,
cpu_lw,
cpu_lbu,
cpu_lhu,
cpu_lwr,
cpu_lwu,
cpu_sb,
cpu_sh,
cpu_swl,
cpu_sw,
cpu_sdl,
cpu_sdr,
cpu_swr,
cpu_ll,
cpu_pref,
cpu_lld,
cpu_ld,
cpu_sc,
cpu_scd,
cpu_sd,
cpu_cache,
cpu_lwc1,
cpu_ldc1,
cpu_swc1,
cpu_sdc1,
cpu_lwc2,
cpu_ldc2,
cpu_swc2,
cpu_sdc2,
cpu_b,
cpu_beqz,
cpu_bnez,
cpu_sll,
cpu_srl,
cpu_sra,
cpu_dsll,
cpu_dsrl,
cpu_dsra,
cpu_dsll32,
cpu_dsrl32,
cpu_dsra32,
cpu_dsllv,
cpu_dsrlv,
cpu_dsrav,
cpu_sllv,
cpu_srlv,
cpu_srav,
cpu_mthi,
cpu_mtlo,
cpu_jr,
cpu_jalr,
cpu_jalr_rd,
cpu_mfhi,
cpu_mflo,
cpu_movz,
cpu_movn,
cpu_div,
cpu_divu,
cpu_sn64_div,
cpu_sn64_divu,
cpu_ddiv,
cpu_ddivu,
cpu_add,
cpu_addu,
cpu_sub,
cpu_subu,
cpu_and,
cpu_or,
cpu_xor,
cpu_nor,
cpu_slt,
cpu_sltu,
cpu_dadd,
cpu_daddu,
cpu_dsub,
cpu_dsubu,
cpu_syscall,
cpu_break,
cpu_sync,
cpu_mult,
cpu_multu,
cpu_dmult,
cpu_dmultu,
cpu_tge,
cpu_tgeu,
cpu_tlt,
cpu_tltu,
cpu_teq,
cpu_tne,
cpu_nop,
cpu_move,
cpu_not,
cpu_negu,
cpu_bltz,
cpu_bgez,
cpu_bltzl,
cpu_bgezl,
cpu_tgei,
cpu_tgeiu,
cpu_tlti,
cpu_tltiu,
cpu_teqi,
cpu_tnei,
cpu_bltzal,
cpu_bgezal,
cpu_bltzall,
cpu_bgezall,
cpu_bal,
cpu_mfc0,
cpu_dmfc0,
cpu_cfc0,
cpu_mtc0,
cpu_dmtc0,
cpu_ctc0,
cpu_bc0f,
cpu_bc0t,
cpu_bc0fl,
cpu_bc0tl,
cpu_tlbr,
cpu_tlbwi,
cpu_tlbwr,
cpu_tlbp,
cpu_eret,
cpu_mfc1,
cpu_dmfc1,
cpu_mtc1,
cpu_dmtc1,
cpu_cfc1,
cpu_ctc1,
cpu_bc1f,
cpu_bc1t,
cpu_bc1fl,
cpu_bc1tl,
cpu_add_s,
cpu_sub_s,
cpu_mul_s,
cpu_div_s,
cpu_sqrt_s,
cpu_abs_s,
cpu_mov_s,
cpu_neg_s,
cpu_round_l_s,
cpu_trunc_l_s,
cpu_ceil_l_s,
cpu_floor_l_s,
cpu_round_w_s,
cpu_trunc_w_s,
cpu_ceil_w_s,
cpu_floor_w_s,
cpu_cvt_d_s,
cpu_cvt_w_s,
cpu_cvt_l_s,
cpu_c_f_s,
cpu_c_un_s,
cpu_c_eq_s,
cpu_c_ueq_s,
cpu_c_olt_s,
cpu_c_ult_s,
cpu_c_ole_s,
cpu_c_ule_s,
cpu_c_sf_s,
cpu_c_ngle_s,
cpu_c_seq_s,
cpu_c_ngl_s,
cpu_c_lt_s,
cpu_c_nge_s,
cpu_c_le_s,
cpu_c_ngt_s,
cpu_add_d,
cpu_sub_d,
cpu_mul_d,
cpu_div_d,
cpu_sqrt_d,
cpu_abs_d,
cpu_mov_d,
cpu_neg_d,
cpu_round_l_d,
cpu_trunc_l_d,
cpu_ceil_l_d,
cpu_floor_l_d,
cpu_round_w_d,
cpu_trunc_w_d,
cpu_ceil_w_d,
cpu_floor_w_d,
cpu_cvt_s_d,
cpu_cvt_w_d,
cpu_cvt_l_d,
cpu_c_f_d,
cpu_c_un_d,
cpu_c_eq_d,
cpu_c_ueq_d,
cpu_c_olt_d,
cpu_c_ult_d,
cpu_c_ole_d,
cpu_c_ule_d,
cpu_c_df_d,
cpu_c_ngle_d,
cpu_c_deq_d,
cpu_c_ngl_d,
cpu_c_lt_d,
cpu_c_nge_d,
cpu_c_le_d,
cpu_c_ngt_d,
cpu_cvt_s_w,
cpu_cvt_d_w,
cpu_cvt_s_l,
cpu_cvt_d_l,
cpu_USERDEF_00,
cpu_USERDEF_01,
cpu_USERDEF_02,
cpu_USERDEF_03,
cpu_USERDEF_04,
cpu_USERDEF_05,
cpu_USERDEF_06,
cpu_USERDEF_07,
cpu_USERDEF_08,
cpu_USERDEF_09,
cpu_USERDEF_10,
cpu_USERDEF_11,
cpu_USERDEF_12,
cpu_USERDEF_13,
cpu_USERDEF_14,
cpu_USERDEF_15,
cpu_USERDEF_16,
cpu_USERDEF_17,
cpu_USERDEF_18,
cpu_USERDEF_19,
cpu_MAX,
rsp_INVALID,
rsp_mfc2,
rsp_mtc2,
rsp_cfc2,
rsp_ctc2,
rsp_vmulf,
rsp_vmulu,
rsp_vrndp,
rsp_vmulq,
rsp_vmudl,
rsp_vmudm,
rsp_vmudn,
rsp_vmudh,
rsp_vmacf,
rsp_vmacu,
rsp_vrndn,
rsp_vmacq,
rsp_vmadl,
rsp_vmadm,
rsp_vmadn,
rsp_vmadh,
rsp_vadd,
rsp_vsub,
rsp_vabs,
rsp_vaddc,
rsp_vsubc,
rsp_vsar,
rsp_vand,
rsp_vnand,
rsp_vor,
rsp_vnor,
rsp_vxor,
rsp_vnxor,
rsp_vlt,
rsp_veq,
rsp_vne,
rsp_vge,
rsp_vcl,
rsp_vch,
rsp_vcr,
rsp_vmrg,
rsp_vrcp,
rsp_vrcpl,
rsp_vrcph,
rsp_vmov,
rsp_vrsq,
rsp_vrsql,
rsp_vrsqh,
rsp_vnop,
rsp_lbv,
rsp_lsv,
rsp_llv,
rsp_ldv,
rsp_lqv,
rsp_lrv,
rsp_lpv,
rsp_luv,
rsp_lhv,
rsp_lfv,
rsp_ltv,
rsp_sbv,
rsp_ssv,
rsp_slv,
rsp_sdv,
rsp_sqv,
rsp_srv,
rsp_spv,
rsp_suv,
rsp_shv,
rsp_sfv,
rsp_stv,
rsp_swv,
rsp_j,
rsp_jal,
rsp_beq,
rsp_bne,
rsp_blez,
rsp_bgtz,
rsp_addi,
rsp_addiu,
rsp_slti,
rsp_sltiu,
rsp_andi,
rsp_ori,
rsp_xori,
rsp_lui,
rsp_lb,
rsp_lh,
rsp_lw,
rsp_lbu,
rsp_lhu,
rsp_sb,
rsp_sh,
rsp_sw,
rsp_pref,
rsp_b,
rsp_beqz,
rsp_bnez,
rsp_sll,
rsp_srl,
rsp_sra,
rsp_sllv,
rsp_srlv,
rsp_srav,
rsp_jr,
rsp_jalr,
rsp_jalr_rd,
rsp_movz,
rsp_movn,
rsp_add,
rsp_addu,
rsp_sub,
rsp_subu,
rsp_and,
rsp_or,
rsp_xor,
rsp_nor,
rsp_slt,
rsp_sltu,
rsp_break,
rsp_nop,
rsp_move,
rsp_not,
rsp_negu,
rsp_bltz,
rsp_bgez,
rsp_bltzal,
rsp_bgezal,
rsp_bal,
rsp_mfc0,
rsp_mtc0,
rsp_USERDEF_00,
rsp_USERDEF_01,
rsp_USERDEF_02,
rsp_USERDEF_03,
rsp_USERDEF_04,
rsp_USERDEF_05,
rsp_USERDEF_06,
rsp_USERDEF_07,
rsp_USERDEF_08,
rsp_USERDEF_09,
rsp_USERDEF_10,
rsp_USERDEF_11,
rsp_USERDEF_12,
rsp_USERDEF_13,
rsp_USERDEF_14,
rsp_USERDEF_15,
rsp_USERDEF_16,
rsp_USERDEF_17,
rsp_USERDEF_18,
rsp_USERDEF_19,
rsp_MAX,
r5900_INVALID,
r5900_lq,
r5900_sq,
r5900_lqc2,
r5900_sqc2,
r5900_sync_p,
r5900_mult,
r5900_mfsa,
r5900_mtsa,
r5900_mtsab,
r5900_mtsah,
r5900_madd,
r5900_maddu,
r5900_plzcw,
r5900_mfhi1,
r5900_mthi1,
r5900_mflo1,
r5900_mtlo1,
r5900_mult1,
r5900_multu1,
r5900_div1,
r5900_divu1,
r5900_madd1,
r5900_maddu1,
r5900_pmfhl,
r5900_pmthl,
r5900_psllh,
r5900_psrlh,
r5900_psrah,
r5900_psllw,
r5900_psrlw,
r5900_psraw,
r5900_paddw,
r5900_psubw,
r5900_pcgtw,
r5900_pmaxw,
r5900_paddh,
r5900_psubh,
r5900_pcgth,
r5900_pmaxh,
r5900_paddb,
r5900_psubb,
r5900_pcgtb,
r5900_paddsw,
r5900_psubsw,
r5900_pextlw,
r5900_ppacw,
r5900_paddsh,
r5900_psubsh,
r5900_pextlh,
r5900_ppach,
r5900_paddsb,
r5900_psubsb,
r5900_pextlb,
r5900_ppacb,
r5900_pext5,
r5900_ppac5,
r5900_pabsw,
r5900_pceqw,
r5900_pminw,
r5900_padsbh,
r5900_pabsh,
r5900_pceqh,
r5900_pminh,
r5900_pceqb,
r5900_padduw,
r5900_psubuw,
r5900_pextuw,
r5900_padduh,
r5900_psubuh,
r5900_pextuh,
r5900_paddub,
r5900_psubub,
r5900_pextub,
r5900_qfsrv,
r5900_pmaddw,
r5900_psllvw,
r5900_psrlvw,
r5900_pmsubw,
r5900_pmfhi,
r5900_pmflo,
r5900_pinth,
r5900_pmultw,
r5900_pdivw,
r5900_pcpyld,
r5900_pmaddh,
r5900_phmadh,
r5900_pand,
r5900_pxor,
r5900_pmsubh,
r5900_phmsbh,
r5900_pexeh,
r5900_prevh,
r5900_pmulth,
r5900_pdivbw,
r5900_pexew,
r5900_prot3w,
r5900_pmadduw,
r5900_psravw,
r5900_pmthi,
r5900_pmtlo,
r5900_pinteh,
r5900_pmultuw,
r5900_pdivuw,
r5900_pcpyud,
r5900_por,
r5900_pnor,
r5900_pexch,
r5900_pcpyh,
r5900_pexcw,
r5900_ei,
r5900_di,
r5900_c1__sqrt_s,
r5900_rsqrt_s,
r5900_adda_s,
r5900_suba_s,
r5900_mula_s,
r5900_madd_s,
r5900_msub_s,
r5900_madda_s,
r5900_msuba_s,
r5900_max_s,
r5900_min_s,
r5900_trunc_w_s,
r5900_c_lt_s,
r5900_c_le_s,
r5900_qmfc2,
r5900_cfc2,
r5900_qmtc2,
r5900_ctc2,
r5900_bc2f,
r5900_bc2t,
r5900_bc2fl,
r5900_bc2tl,
r5900_vaddx,
r5900_vaddy,
r5900_vaddz,
r5900_vaddw,
r5900_vsubx,
r5900_vsuby,
r5900_vsubz,
r5900_vsubw,
r5900_vmaddx,
r5900_vmaddy,
r5900_vmaddz,
r5900_vmaddw,
r5900_vmsubx,
r5900_vmsuby,
r5900_vmsubz,
r5900_vmsubw,
r5900_vmaxx,
r5900_vmaxy,
r5900_vmaxz,
r5900_vmaxw,
r5900_vminix,
r5900_vminiy,
r5900_vminiz,
r5900_vminiw,
r5900_vmulx,
r5900_vmuly,
r5900_vmulz,
r5900_vmulw,
r5900_vmulq,
r5900_vmaxi,
r5900_vmuli,
r5900_vminii,
r5900_vaddq,
r5900_vmaddq,
r5900_vaddi,
r5900_vmaddi,
r5900_vsubq,
r5900_vmsubq,
r5900_vsubi,
r5900_vmsubi,
r5900_vadd,
r5900_vmadd,
r5900_vmul,
r5900_vmax,
r5900_vsub,
r5900_vmsub,
r5900_vopmsub,
r5900_vmini,
r5900_viadd,
r5900_visub,
r5900_viaddi,
r5900_viand,
r5900_vior,
r5900_vcallms,
r5900_vcallmsr,
r5900_vaddax,
r5900_vadday,
r5900_vaddaz,
r5900_vaddaw,
r5900_vsubax,
r5900_vsubay,
r5900_vsubaz,
r5900_vsubaw,
r5900_vmaddax,
r5900_vmadday,
r5900_vmaddaz,
r5900_vmaddaw,
r5900_vmsubax,
r5900_vmsubay,
r5900_vmsubaz,
r5900_vmsubaw,
r5900_vitof0,
r5900_vitof4,
r5900_vitof12,
r5900_vitof15,
r5900_vftoi0,
r5900_vftoi4,
r5900_vftoi12,
r5900_vftoi15,
r5900_vmulax,
r5900_vmulay,
r5900_vmulaz,
r5900_vmulaw,
r5900_vmulaq,
r5900_vabs,
r5900_vmulai,
r5900_vclipw,
r5900_vaddaq,
r5900_vmaddaq,
r5900_vaddai,
r5900_vmaddai,
r5900_vsubaq,
r5900_vmsubaq,
r5900_vsubai,
r5900_vmsubai,
r5900_vadda,
r5900_vmadda,
r5900_vmula,
r5900_vsuba,
r5900_vmsuba,
r5900_vopmula,
r5900_vnop,
r5900_vmove,
r5900_vmr32,
r5900_vlqi,
r5900_vsqi,
r5900_vlqd,
r5900_vsqd,
r5900_vdiv,
r5900_vsqrt,
r5900_vrsqrt,
r5900_vwaitq,
r5900_vmtir,
r5900_vmfir,
r5900_vilwr,
r5900_viswr,
r5900_vrnext,
r5900_vrget,
r5900_vrinit,
r5900_vrxor,
r5900_USERDEF_00,
r5900_USERDEF_01,
r5900_USERDEF_02,
r5900_USERDEF_03,
r5900_USERDEF_04,
r5900_USERDEF_05,
r5900_USERDEF_06,
r5900_USERDEF_07,
r5900_USERDEF_08,
r5900_USERDEF_09,
r5900_USERDEF_10,
r5900_USERDEF_11,
r5900_USERDEF_12,
r5900_USERDEF_13,
r5900_USERDEF_14,
r5900_USERDEF_15,
r5900_USERDEF_16,
r5900_USERDEF_17,
r5900_USERDEF_18,
r5900_USERDEF_19,
r5900_MAX,
ALL_MAX = r5900_MAX,
};
#endif

View File

@ -0,0 +1,21 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, ...) \
prefix##_##name,
#define RABBITIZER_DEF_INSTR_ID_ALTNAME(prefix, caseBits, name, altname, ...) \
RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, __VA_ARGS__)
enum class UniqueId {
#include "instructions/instr_id/RabbitizerInstrId_cpu.inc"
#include "instructions/instr_id/RabbitizerInstrId_rsp.inc"
#include "instructions/instr_id/RabbitizerInstrId_r5900.inc"
ALL_MAX = RABBITIZER_DEF_INSTR_ID(r5900, , MAX, )
};
#undef RABBITIZER_DEF_INSTR_ID
#undef RABBITIZER_DEF_INSTR_ID_ALTNAME

View File

@ -1,8 +1,11 @@
#ifndef Abi_enum_table_h_automatic
#define Abi_enum_table_h_automatic
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Automatically generated. DO NOT MODIFY */
#ifndef Abi_enum_table_h_automatic
#define Abi_enum_table_h_automatic
typedef enum RabbitizerAbi {
RABBITIZER_ABI_NUMERIC,
RABBITIZER_ABI_O32,

View File

@ -1,3 +1,5 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RABBITIZER_DEF_ABI(name) RABBITIZER_ABI_##name

View File

@ -0,0 +1,20 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Automatically generated. DO NOT MODIFY */
#ifndef AccessType_enum_table_h_automatic
#define AccessType_enum_table_h_automatic
typedef enum RabbitizerAccessType {
RAB_ACCESSTYPE_INVALID,
RAB_ACCESSTYPE_BYTE,
RAB_ACCESSTYPE_SHORT,
RAB_ACCESSTYPE_WORD,
RAB_ACCESSTYPE_DOUBLEWORD,
RAB_ACCESSTYPE_FLOAT,
RAB_ACCESSTYPE_DOUBLEFLOAT,
RAB_ACCESSTYPE_MAX,
} RabbitizerAccessType;
#endif

View File

@ -0,0 +1,12 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RAB_DEF_ACCESSTYPE(name) RAB_ACCESSTYPE_##name,
typedef enum RabbitizerAccessType {
#include "AccessType.inc"
RAB_DEF_ACCESSTYPE(MAX)
} RabbitizerAccessType;
#undef RAB_DEF_ACCESSTYPE

View File

@ -0,0 +1,16 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Automatically generated. DO NOT MODIFY */
#ifndef InstrCategory_enum_table_h_automatic
#define InstrCategory_enum_table_h_automatic
typedef enum RabbitizerInstrCategory {
RABBITIZER_INSTRCAT_CPU,
RABBITIZER_INSTRCAT_RSP,
RABBITIZER_INSTRCAT_R5900,
RABBITIZER_INSTRCAT_MAX,
} RabbitizerInstrCategory;
#endif

View File

@ -0,0 +1,12 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RABBITIZER_DEF_INSTR_CATEGORY(name) RABBITIZER_INSTRCAT_##name
typedef enum RabbitizerInstrCategory {
#include "InstrCategory.inc"
RABBITIZER_DEF_INSTR_CATEGORY(MAX),
} RabbitizerInstrCategory;
#undef RABBITIZER_DEF_INSTR_CATEGORY

View File

@ -0,0 +1,693 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Automatically generated. DO NOT MODIFY */
#ifndef InstrId_enum_table_h_automatic
#define InstrId_enum_table_h_automatic
typedef enum RabbitizerInstrId {
RABBITIZER_INSTR_ID_cpu_INVALID,
RABBITIZER_INSTR_ID_cpu_j,
RABBITIZER_INSTR_ID_cpu_jal,
RABBITIZER_INSTR_ID_cpu_beq,
RABBITIZER_INSTR_ID_cpu_bne,
RABBITIZER_INSTR_ID_cpu_beql,
RABBITIZER_INSTR_ID_cpu_bnel,
RABBITIZER_INSTR_ID_cpu_blez,
RABBITIZER_INSTR_ID_cpu_blezl,
RABBITIZER_INSTR_ID_cpu_bgtz,
RABBITIZER_INSTR_ID_cpu_bgtzl,
RABBITIZER_INSTR_ID_cpu_addi,
RABBITIZER_INSTR_ID_cpu_addiu,
RABBITIZER_INSTR_ID_cpu_slti,
RABBITIZER_INSTR_ID_cpu_sltiu,
RABBITIZER_INSTR_ID_cpu_andi,
RABBITIZER_INSTR_ID_cpu_ori,
RABBITIZER_INSTR_ID_cpu_xori,
RABBITIZER_INSTR_ID_cpu_daddi,
RABBITIZER_INSTR_ID_cpu_daddiu,
RABBITIZER_INSTR_ID_cpu_lui,
RABBITIZER_INSTR_ID_cpu_ldl,
RABBITIZER_INSTR_ID_cpu_ldr,
RABBITIZER_INSTR_ID_cpu_lb,
RABBITIZER_INSTR_ID_cpu_lh,
RABBITIZER_INSTR_ID_cpu_lwl,
RABBITIZER_INSTR_ID_cpu_lw,
RABBITIZER_INSTR_ID_cpu_lbu,
RABBITIZER_INSTR_ID_cpu_lhu,
RABBITIZER_INSTR_ID_cpu_lwr,
RABBITIZER_INSTR_ID_cpu_lwu,
RABBITIZER_INSTR_ID_cpu_sb,
RABBITIZER_INSTR_ID_cpu_sh,
RABBITIZER_INSTR_ID_cpu_swl,
RABBITIZER_INSTR_ID_cpu_sw,
RABBITIZER_INSTR_ID_cpu_sdl,
RABBITIZER_INSTR_ID_cpu_sdr,
RABBITIZER_INSTR_ID_cpu_swr,
RABBITIZER_INSTR_ID_cpu_ll,
RABBITIZER_INSTR_ID_cpu_pref,
RABBITIZER_INSTR_ID_cpu_lld,
RABBITIZER_INSTR_ID_cpu_ld,
RABBITIZER_INSTR_ID_cpu_sc,
RABBITIZER_INSTR_ID_cpu_scd,
RABBITIZER_INSTR_ID_cpu_sd,
RABBITIZER_INSTR_ID_cpu_cache,
RABBITIZER_INSTR_ID_cpu_lwc1,
RABBITIZER_INSTR_ID_cpu_ldc1,
RABBITIZER_INSTR_ID_cpu_swc1,
RABBITIZER_INSTR_ID_cpu_sdc1,
RABBITIZER_INSTR_ID_cpu_lwc2,
RABBITIZER_INSTR_ID_cpu_ldc2,
RABBITIZER_INSTR_ID_cpu_swc2,
RABBITIZER_INSTR_ID_cpu_sdc2,
RABBITIZER_INSTR_ID_cpu_b,
RABBITIZER_INSTR_ID_cpu_beqz,
RABBITIZER_INSTR_ID_cpu_bnez,
RABBITIZER_INSTR_ID_cpu_sll,
RABBITIZER_INSTR_ID_cpu_srl,
RABBITIZER_INSTR_ID_cpu_sra,
RABBITIZER_INSTR_ID_cpu_dsll,
RABBITIZER_INSTR_ID_cpu_dsrl,
RABBITIZER_INSTR_ID_cpu_dsra,
RABBITIZER_INSTR_ID_cpu_dsll32,
RABBITIZER_INSTR_ID_cpu_dsrl32,
RABBITIZER_INSTR_ID_cpu_dsra32,
RABBITIZER_INSTR_ID_cpu_dsllv,
RABBITIZER_INSTR_ID_cpu_dsrlv,
RABBITIZER_INSTR_ID_cpu_dsrav,
RABBITIZER_INSTR_ID_cpu_sllv,
RABBITIZER_INSTR_ID_cpu_srlv,
RABBITIZER_INSTR_ID_cpu_srav,
RABBITIZER_INSTR_ID_cpu_mthi,
RABBITIZER_INSTR_ID_cpu_mtlo,
RABBITIZER_INSTR_ID_cpu_jr,
RABBITIZER_INSTR_ID_cpu_jalr,
RABBITIZER_INSTR_ID_cpu_jalr_rd,
RABBITIZER_INSTR_ID_cpu_mfhi,
RABBITIZER_INSTR_ID_cpu_mflo,
RABBITIZER_INSTR_ID_cpu_movz,
RABBITIZER_INSTR_ID_cpu_movn,
RABBITIZER_INSTR_ID_cpu_div,
RABBITIZER_INSTR_ID_cpu_divu,
RABBITIZER_INSTR_ID_cpu_sn64_div,
RABBITIZER_INSTR_ID_cpu_sn64_divu,
RABBITIZER_INSTR_ID_cpu_ddiv,
RABBITIZER_INSTR_ID_cpu_ddivu,
RABBITIZER_INSTR_ID_cpu_add,
RABBITIZER_INSTR_ID_cpu_addu,
RABBITIZER_INSTR_ID_cpu_sub,
RABBITIZER_INSTR_ID_cpu_subu,
RABBITIZER_INSTR_ID_cpu_and,
RABBITIZER_INSTR_ID_cpu_or,
RABBITIZER_INSTR_ID_cpu_xor,
RABBITIZER_INSTR_ID_cpu_nor,
RABBITIZER_INSTR_ID_cpu_slt,
RABBITIZER_INSTR_ID_cpu_sltu,
RABBITIZER_INSTR_ID_cpu_dadd,
RABBITIZER_INSTR_ID_cpu_daddu,
RABBITIZER_INSTR_ID_cpu_dsub,
RABBITIZER_INSTR_ID_cpu_dsubu,
RABBITIZER_INSTR_ID_cpu_syscall,
RABBITIZER_INSTR_ID_cpu_break,
RABBITIZER_INSTR_ID_cpu_sync,
RABBITIZER_INSTR_ID_cpu_mult,
RABBITIZER_INSTR_ID_cpu_multu,
RABBITIZER_INSTR_ID_cpu_dmult,
RABBITIZER_INSTR_ID_cpu_dmultu,
RABBITIZER_INSTR_ID_cpu_tge,
RABBITIZER_INSTR_ID_cpu_tgeu,
RABBITIZER_INSTR_ID_cpu_tlt,
RABBITIZER_INSTR_ID_cpu_tltu,
RABBITIZER_INSTR_ID_cpu_teq,
RABBITIZER_INSTR_ID_cpu_tne,
RABBITIZER_INSTR_ID_cpu_nop,
RABBITIZER_INSTR_ID_cpu_move,
RABBITIZER_INSTR_ID_cpu_not,
RABBITIZER_INSTR_ID_cpu_negu,
RABBITIZER_INSTR_ID_cpu_bltz,
RABBITIZER_INSTR_ID_cpu_bgez,
RABBITIZER_INSTR_ID_cpu_bltzl,
RABBITIZER_INSTR_ID_cpu_bgezl,
RABBITIZER_INSTR_ID_cpu_tgei,
RABBITIZER_INSTR_ID_cpu_tgeiu,
RABBITIZER_INSTR_ID_cpu_tlti,
RABBITIZER_INSTR_ID_cpu_tltiu,
RABBITIZER_INSTR_ID_cpu_teqi,
RABBITIZER_INSTR_ID_cpu_tnei,
RABBITIZER_INSTR_ID_cpu_bltzal,
RABBITIZER_INSTR_ID_cpu_bgezal,
RABBITIZER_INSTR_ID_cpu_bltzall,
RABBITIZER_INSTR_ID_cpu_bgezall,
RABBITIZER_INSTR_ID_cpu_bal,
RABBITIZER_INSTR_ID_cpu_mfc0,
RABBITIZER_INSTR_ID_cpu_dmfc0,
RABBITIZER_INSTR_ID_cpu_cfc0,
RABBITIZER_INSTR_ID_cpu_mtc0,
RABBITIZER_INSTR_ID_cpu_dmtc0,
RABBITIZER_INSTR_ID_cpu_ctc0,
RABBITIZER_INSTR_ID_cpu_bc0f,
RABBITIZER_INSTR_ID_cpu_bc0t,
RABBITIZER_INSTR_ID_cpu_bc0fl,
RABBITIZER_INSTR_ID_cpu_bc0tl,
RABBITIZER_INSTR_ID_cpu_tlbr,
RABBITIZER_INSTR_ID_cpu_tlbwi,
RABBITIZER_INSTR_ID_cpu_tlbwr,
RABBITIZER_INSTR_ID_cpu_tlbp,
RABBITIZER_INSTR_ID_cpu_eret,
RABBITIZER_INSTR_ID_cpu_mfc1,
RABBITIZER_INSTR_ID_cpu_dmfc1,
RABBITIZER_INSTR_ID_cpu_mtc1,
RABBITIZER_INSTR_ID_cpu_dmtc1,
RABBITIZER_INSTR_ID_cpu_cfc1,
RABBITIZER_INSTR_ID_cpu_ctc1,
RABBITIZER_INSTR_ID_cpu_bc1f,
RABBITIZER_INSTR_ID_cpu_bc1t,
RABBITIZER_INSTR_ID_cpu_bc1fl,
RABBITIZER_INSTR_ID_cpu_bc1tl,
RABBITIZER_INSTR_ID_cpu_add_s,
RABBITIZER_INSTR_ID_cpu_sub_s,
RABBITIZER_INSTR_ID_cpu_mul_s,
RABBITIZER_INSTR_ID_cpu_div_s,
RABBITIZER_INSTR_ID_cpu_sqrt_s,
RABBITIZER_INSTR_ID_cpu_abs_s,
RABBITIZER_INSTR_ID_cpu_mov_s,
RABBITIZER_INSTR_ID_cpu_neg_s,
RABBITIZER_INSTR_ID_cpu_round_l_s,
RABBITIZER_INSTR_ID_cpu_trunc_l_s,
RABBITIZER_INSTR_ID_cpu_ceil_l_s,
RABBITIZER_INSTR_ID_cpu_floor_l_s,
RABBITIZER_INSTR_ID_cpu_round_w_s,
RABBITIZER_INSTR_ID_cpu_trunc_w_s,
RABBITIZER_INSTR_ID_cpu_ceil_w_s,
RABBITIZER_INSTR_ID_cpu_floor_w_s,
RABBITIZER_INSTR_ID_cpu_cvt_d_s,
RABBITIZER_INSTR_ID_cpu_cvt_w_s,
RABBITIZER_INSTR_ID_cpu_cvt_l_s,
RABBITIZER_INSTR_ID_cpu_c_f_s,
RABBITIZER_INSTR_ID_cpu_c_un_s,
RABBITIZER_INSTR_ID_cpu_c_eq_s,
RABBITIZER_INSTR_ID_cpu_c_ueq_s,
RABBITIZER_INSTR_ID_cpu_c_olt_s,
RABBITIZER_INSTR_ID_cpu_c_ult_s,
RABBITIZER_INSTR_ID_cpu_c_ole_s,
RABBITIZER_INSTR_ID_cpu_c_ule_s,
RABBITIZER_INSTR_ID_cpu_c_sf_s,
RABBITIZER_INSTR_ID_cpu_c_ngle_s,
RABBITIZER_INSTR_ID_cpu_c_seq_s,
RABBITIZER_INSTR_ID_cpu_c_ngl_s,
RABBITIZER_INSTR_ID_cpu_c_lt_s,
RABBITIZER_INSTR_ID_cpu_c_nge_s,
RABBITIZER_INSTR_ID_cpu_c_le_s,
RABBITIZER_INSTR_ID_cpu_c_ngt_s,
RABBITIZER_INSTR_ID_cpu_add_d,
RABBITIZER_INSTR_ID_cpu_sub_d,
RABBITIZER_INSTR_ID_cpu_mul_d,
RABBITIZER_INSTR_ID_cpu_div_d,
RABBITIZER_INSTR_ID_cpu_sqrt_d,
RABBITIZER_INSTR_ID_cpu_abs_d,
RABBITIZER_INSTR_ID_cpu_mov_d,
RABBITIZER_INSTR_ID_cpu_neg_d,
RABBITIZER_INSTR_ID_cpu_round_l_d,
RABBITIZER_INSTR_ID_cpu_trunc_l_d,
RABBITIZER_INSTR_ID_cpu_ceil_l_d,
RABBITIZER_INSTR_ID_cpu_floor_l_d,
RABBITIZER_INSTR_ID_cpu_round_w_d,
RABBITIZER_INSTR_ID_cpu_trunc_w_d,
RABBITIZER_INSTR_ID_cpu_ceil_w_d,
RABBITIZER_INSTR_ID_cpu_floor_w_d,
RABBITIZER_INSTR_ID_cpu_cvt_s_d,
RABBITIZER_INSTR_ID_cpu_cvt_w_d,
RABBITIZER_INSTR_ID_cpu_cvt_l_d,
RABBITIZER_INSTR_ID_cpu_c_f_d,
RABBITIZER_INSTR_ID_cpu_c_un_d,
RABBITIZER_INSTR_ID_cpu_c_eq_d,
RABBITIZER_INSTR_ID_cpu_c_ueq_d,
RABBITIZER_INSTR_ID_cpu_c_olt_d,
RABBITIZER_INSTR_ID_cpu_c_ult_d,
RABBITIZER_INSTR_ID_cpu_c_ole_d,
RABBITIZER_INSTR_ID_cpu_c_ule_d,
RABBITIZER_INSTR_ID_cpu_c_df_d,
RABBITIZER_INSTR_ID_cpu_c_ngle_d,
RABBITIZER_INSTR_ID_cpu_c_deq_d,
RABBITIZER_INSTR_ID_cpu_c_ngl_d,
RABBITIZER_INSTR_ID_cpu_c_lt_d,
RABBITIZER_INSTR_ID_cpu_c_nge_d,
RABBITIZER_INSTR_ID_cpu_c_le_d,
RABBITIZER_INSTR_ID_cpu_c_ngt_d,
RABBITIZER_INSTR_ID_cpu_cvt_s_w,
RABBITIZER_INSTR_ID_cpu_cvt_d_w,
RABBITIZER_INSTR_ID_cpu_cvt_s_l,
RABBITIZER_INSTR_ID_cpu_cvt_d_l,
RABBITIZER_INSTR_ID_cpu_USERDEF_00,
RABBITIZER_INSTR_ID_cpu_USERDEF_01,
RABBITIZER_INSTR_ID_cpu_USERDEF_02,
RABBITIZER_INSTR_ID_cpu_USERDEF_03,
RABBITIZER_INSTR_ID_cpu_USERDEF_04,
RABBITIZER_INSTR_ID_cpu_USERDEF_05,
RABBITIZER_INSTR_ID_cpu_USERDEF_06,
RABBITIZER_INSTR_ID_cpu_USERDEF_07,
RABBITIZER_INSTR_ID_cpu_USERDEF_08,
RABBITIZER_INSTR_ID_cpu_USERDEF_09,
RABBITIZER_INSTR_ID_cpu_USERDEF_10,
RABBITIZER_INSTR_ID_cpu_USERDEF_11,
RABBITIZER_INSTR_ID_cpu_USERDEF_12,
RABBITIZER_INSTR_ID_cpu_USERDEF_13,
RABBITIZER_INSTR_ID_cpu_USERDEF_14,
RABBITIZER_INSTR_ID_cpu_USERDEF_15,
RABBITIZER_INSTR_ID_cpu_USERDEF_16,
RABBITIZER_INSTR_ID_cpu_USERDEF_17,
RABBITIZER_INSTR_ID_cpu_USERDEF_18,
RABBITIZER_INSTR_ID_cpu_USERDEF_19,
RABBITIZER_INSTR_ID_cpu_MAX,
RABBITIZER_INSTR_ID_rsp_INVALID,
RABBITIZER_INSTR_ID_rsp_mfc2,
RABBITIZER_INSTR_ID_rsp_mtc2,
RABBITIZER_INSTR_ID_rsp_cfc2,
RABBITIZER_INSTR_ID_rsp_ctc2,
RABBITIZER_INSTR_ID_rsp_vmulf,
RABBITIZER_INSTR_ID_rsp_vmulu,
RABBITIZER_INSTR_ID_rsp_vrndp,
RABBITIZER_INSTR_ID_rsp_vmulq,
RABBITIZER_INSTR_ID_rsp_vmudl,
RABBITIZER_INSTR_ID_rsp_vmudm,
RABBITIZER_INSTR_ID_rsp_vmudn,
RABBITIZER_INSTR_ID_rsp_vmudh,
RABBITIZER_INSTR_ID_rsp_vmacf,
RABBITIZER_INSTR_ID_rsp_vmacu,
RABBITIZER_INSTR_ID_rsp_vrndn,
RABBITIZER_INSTR_ID_rsp_vmacq,
RABBITIZER_INSTR_ID_rsp_vmadl,
RABBITIZER_INSTR_ID_rsp_vmadm,
RABBITIZER_INSTR_ID_rsp_vmadn,
RABBITIZER_INSTR_ID_rsp_vmadh,
RABBITIZER_INSTR_ID_rsp_vadd,
RABBITIZER_INSTR_ID_rsp_vsub,
RABBITIZER_INSTR_ID_rsp_vabs,
RABBITIZER_INSTR_ID_rsp_vaddc,
RABBITIZER_INSTR_ID_rsp_vsubc,
RABBITIZER_INSTR_ID_rsp_vsar,
RABBITIZER_INSTR_ID_rsp_vand,
RABBITIZER_INSTR_ID_rsp_vnand,
RABBITIZER_INSTR_ID_rsp_vor,
RABBITIZER_INSTR_ID_rsp_vnor,
RABBITIZER_INSTR_ID_rsp_vxor,
RABBITIZER_INSTR_ID_rsp_vnxor,
RABBITIZER_INSTR_ID_rsp_vlt,
RABBITIZER_INSTR_ID_rsp_veq,
RABBITIZER_INSTR_ID_rsp_vne,
RABBITIZER_INSTR_ID_rsp_vge,
RABBITIZER_INSTR_ID_rsp_vcl,
RABBITIZER_INSTR_ID_rsp_vch,
RABBITIZER_INSTR_ID_rsp_vcr,
RABBITIZER_INSTR_ID_rsp_vmrg,
RABBITIZER_INSTR_ID_rsp_vrcp,
RABBITIZER_INSTR_ID_rsp_vrcpl,
RABBITIZER_INSTR_ID_rsp_vrcph,
RABBITIZER_INSTR_ID_rsp_vmov,
RABBITIZER_INSTR_ID_rsp_vrsq,
RABBITIZER_INSTR_ID_rsp_vrsql,
RABBITIZER_INSTR_ID_rsp_vrsqh,
RABBITIZER_INSTR_ID_rsp_vnop,
RABBITIZER_INSTR_ID_rsp_lbv,
RABBITIZER_INSTR_ID_rsp_lsv,
RABBITIZER_INSTR_ID_rsp_llv,
RABBITIZER_INSTR_ID_rsp_ldv,
RABBITIZER_INSTR_ID_rsp_lqv,
RABBITIZER_INSTR_ID_rsp_lrv,
RABBITIZER_INSTR_ID_rsp_lpv,
RABBITIZER_INSTR_ID_rsp_luv,
RABBITIZER_INSTR_ID_rsp_lhv,
RABBITIZER_INSTR_ID_rsp_lfv,
RABBITIZER_INSTR_ID_rsp_ltv,
RABBITIZER_INSTR_ID_rsp_sbv,
RABBITIZER_INSTR_ID_rsp_ssv,
RABBITIZER_INSTR_ID_rsp_slv,
RABBITIZER_INSTR_ID_rsp_sdv,
RABBITIZER_INSTR_ID_rsp_sqv,
RABBITIZER_INSTR_ID_rsp_srv,
RABBITIZER_INSTR_ID_rsp_spv,
RABBITIZER_INSTR_ID_rsp_suv,
RABBITIZER_INSTR_ID_rsp_shv,
RABBITIZER_INSTR_ID_rsp_sfv,
RABBITIZER_INSTR_ID_rsp_stv,
RABBITIZER_INSTR_ID_rsp_swv,
RABBITIZER_INSTR_ID_rsp_j,
RABBITIZER_INSTR_ID_rsp_jal,
RABBITIZER_INSTR_ID_rsp_beq,
RABBITIZER_INSTR_ID_rsp_bne,
RABBITIZER_INSTR_ID_rsp_blez,
RABBITIZER_INSTR_ID_rsp_bgtz,
RABBITIZER_INSTR_ID_rsp_addi,
RABBITIZER_INSTR_ID_rsp_addiu,
RABBITIZER_INSTR_ID_rsp_slti,
RABBITIZER_INSTR_ID_rsp_sltiu,
RABBITIZER_INSTR_ID_rsp_andi,
RABBITIZER_INSTR_ID_rsp_ori,
RABBITIZER_INSTR_ID_rsp_xori,
RABBITIZER_INSTR_ID_rsp_lui,
RABBITIZER_INSTR_ID_rsp_lb,
RABBITIZER_INSTR_ID_rsp_lh,
RABBITIZER_INSTR_ID_rsp_lw,
RABBITIZER_INSTR_ID_rsp_lbu,
RABBITIZER_INSTR_ID_rsp_lhu,
RABBITIZER_INSTR_ID_rsp_sb,
RABBITIZER_INSTR_ID_rsp_sh,
RABBITIZER_INSTR_ID_rsp_sw,
RABBITIZER_INSTR_ID_rsp_pref,
RABBITIZER_INSTR_ID_rsp_b,
RABBITIZER_INSTR_ID_rsp_beqz,
RABBITIZER_INSTR_ID_rsp_bnez,
RABBITIZER_INSTR_ID_rsp_sll,
RABBITIZER_INSTR_ID_rsp_srl,
RABBITIZER_INSTR_ID_rsp_sra,
RABBITIZER_INSTR_ID_rsp_sllv,
RABBITIZER_INSTR_ID_rsp_srlv,
RABBITIZER_INSTR_ID_rsp_srav,
RABBITIZER_INSTR_ID_rsp_jr,
RABBITIZER_INSTR_ID_rsp_jalr,
RABBITIZER_INSTR_ID_rsp_jalr_rd,
RABBITIZER_INSTR_ID_rsp_movz,
RABBITIZER_INSTR_ID_rsp_movn,
RABBITIZER_INSTR_ID_rsp_add,
RABBITIZER_INSTR_ID_rsp_addu,
RABBITIZER_INSTR_ID_rsp_sub,
RABBITIZER_INSTR_ID_rsp_subu,
RABBITIZER_INSTR_ID_rsp_and,
RABBITIZER_INSTR_ID_rsp_or,
RABBITIZER_INSTR_ID_rsp_xor,
RABBITIZER_INSTR_ID_rsp_nor,
RABBITIZER_INSTR_ID_rsp_slt,
RABBITIZER_INSTR_ID_rsp_sltu,
RABBITIZER_INSTR_ID_rsp_break,
RABBITIZER_INSTR_ID_rsp_nop,
RABBITIZER_INSTR_ID_rsp_move,
RABBITIZER_INSTR_ID_rsp_not,
RABBITIZER_INSTR_ID_rsp_negu,
RABBITIZER_INSTR_ID_rsp_bltz,
RABBITIZER_INSTR_ID_rsp_bgez,
RABBITIZER_INSTR_ID_rsp_bltzal,
RABBITIZER_INSTR_ID_rsp_bgezal,
RABBITIZER_INSTR_ID_rsp_bal,
RABBITIZER_INSTR_ID_rsp_mfc0,
RABBITIZER_INSTR_ID_rsp_mtc0,
RABBITIZER_INSTR_ID_rsp_USERDEF_00,
RABBITIZER_INSTR_ID_rsp_USERDEF_01,
RABBITIZER_INSTR_ID_rsp_USERDEF_02,
RABBITIZER_INSTR_ID_rsp_USERDEF_03,
RABBITIZER_INSTR_ID_rsp_USERDEF_04,
RABBITIZER_INSTR_ID_rsp_USERDEF_05,
RABBITIZER_INSTR_ID_rsp_USERDEF_06,
RABBITIZER_INSTR_ID_rsp_USERDEF_07,
RABBITIZER_INSTR_ID_rsp_USERDEF_08,
RABBITIZER_INSTR_ID_rsp_USERDEF_09,
RABBITIZER_INSTR_ID_rsp_USERDEF_10,
RABBITIZER_INSTR_ID_rsp_USERDEF_11,
RABBITIZER_INSTR_ID_rsp_USERDEF_12,
RABBITIZER_INSTR_ID_rsp_USERDEF_13,
RABBITIZER_INSTR_ID_rsp_USERDEF_14,
RABBITIZER_INSTR_ID_rsp_USERDEF_15,
RABBITIZER_INSTR_ID_rsp_USERDEF_16,
RABBITIZER_INSTR_ID_rsp_USERDEF_17,
RABBITIZER_INSTR_ID_rsp_USERDEF_18,
RABBITIZER_INSTR_ID_rsp_USERDEF_19,
RABBITIZER_INSTR_ID_rsp_MAX,
RABBITIZER_INSTR_ID_r5900_INVALID,
RABBITIZER_INSTR_ID_r5900_lq,
RABBITIZER_INSTR_ID_r5900_sq,
RABBITIZER_INSTR_ID_r5900_lqc2,
RABBITIZER_INSTR_ID_r5900_sqc2,
RABBITIZER_INSTR_ID_r5900_sync_p,
RABBITIZER_INSTR_ID_r5900_mult,
RABBITIZER_INSTR_ID_r5900_mfsa,
RABBITIZER_INSTR_ID_r5900_mtsa,
RABBITIZER_INSTR_ID_r5900_mtsab,
RABBITIZER_INSTR_ID_r5900_mtsah,
RABBITIZER_INSTR_ID_r5900_madd,
RABBITIZER_INSTR_ID_r5900_maddu,
RABBITIZER_INSTR_ID_r5900_plzcw,
RABBITIZER_INSTR_ID_r5900_mfhi1,
RABBITIZER_INSTR_ID_r5900_mthi1,
RABBITIZER_INSTR_ID_r5900_mflo1,
RABBITIZER_INSTR_ID_r5900_mtlo1,
RABBITIZER_INSTR_ID_r5900_mult1,
RABBITIZER_INSTR_ID_r5900_multu1,
RABBITIZER_INSTR_ID_r5900_div1,
RABBITIZER_INSTR_ID_r5900_divu1,
RABBITIZER_INSTR_ID_r5900_madd1,
RABBITIZER_INSTR_ID_r5900_maddu1,
RABBITIZER_INSTR_ID_r5900_pmfhl,
RABBITIZER_INSTR_ID_r5900_pmthl,
RABBITIZER_INSTR_ID_r5900_psllh,
RABBITIZER_INSTR_ID_r5900_psrlh,
RABBITIZER_INSTR_ID_r5900_psrah,
RABBITIZER_INSTR_ID_r5900_psllw,
RABBITIZER_INSTR_ID_r5900_psrlw,
RABBITIZER_INSTR_ID_r5900_psraw,
RABBITIZER_INSTR_ID_r5900_paddw,
RABBITIZER_INSTR_ID_r5900_psubw,
RABBITIZER_INSTR_ID_r5900_pcgtw,
RABBITIZER_INSTR_ID_r5900_pmaxw,
RABBITIZER_INSTR_ID_r5900_paddh,
RABBITIZER_INSTR_ID_r5900_psubh,
RABBITIZER_INSTR_ID_r5900_pcgth,
RABBITIZER_INSTR_ID_r5900_pmaxh,
RABBITIZER_INSTR_ID_r5900_paddb,
RABBITIZER_INSTR_ID_r5900_psubb,
RABBITIZER_INSTR_ID_r5900_pcgtb,
RABBITIZER_INSTR_ID_r5900_paddsw,
RABBITIZER_INSTR_ID_r5900_psubsw,
RABBITIZER_INSTR_ID_r5900_pextlw,
RABBITIZER_INSTR_ID_r5900_ppacw,
RABBITIZER_INSTR_ID_r5900_paddsh,
RABBITIZER_INSTR_ID_r5900_psubsh,
RABBITIZER_INSTR_ID_r5900_pextlh,
RABBITIZER_INSTR_ID_r5900_ppach,
RABBITIZER_INSTR_ID_r5900_paddsb,
RABBITIZER_INSTR_ID_r5900_psubsb,
RABBITIZER_INSTR_ID_r5900_pextlb,
RABBITIZER_INSTR_ID_r5900_ppacb,
RABBITIZER_INSTR_ID_r5900_pext5,
RABBITIZER_INSTR_ID_r5900_ppac5,
RABBITIZER_INSTR_ID_r5900_pabsw,
RABBITIZER_INSTR_ID_r5900_pceqw,
RABBITIZER_INSTR_ID_r5900_pminw,
RABBITIZER_INSTR_ID_r5900_padsbh,
RABBITIZER_INSTR_ID_r5900_pabsh,
RABBITIZER_INSTR_ID_r5900_pceqh,
RABBITIZER_INSTR_ID_r5900_pminh,
RABBITIZER_INSTR_ID_r5900_pceqb,
RABBITIZER_INSTR_ID_r5900_padduw,
RABBITIZER_INSTR_ID_r5900_psubuw,
RABBITIZER_INSTR_ID_r5900_pextuw,
RABBITIZER_INSTR_ID_r5900_padduh,
RABBITIZER_INSTR_ID_r5900_psubuh,
RABBITIZER_INSTR_ID_r5900_pextuh,
RABBITIZER_INSTR_ID_r5900_paddub,
RABBITIZER_INSTR_ID_r5900_psubub,
RABBITIZER_INSTR_ID_r5900_pextub,
RABBITIZER_INSTR_ID_r5900_qfsrv,
RABBITIZER_INSTR_ID_r5900_pmaddw,
RABBITIZER_INSTR_ID_r5900_psllvw,
RABBITIZER_INSTR_ID_r5900_psrlvw,
RABBITIZER_INSTR_ID_r5900_pmsubw,
RABBITIZER_INSTR_ID_r5900_pmfhi,
RABBITIZER_INSTR_ID_r5900_pmflo,
RABBITIZER_INSTR_ID_r5900_pinth,
RABBITIZER_INSTR_ID_r5900_pmultw,
RABBITIZER_INSTR_ID_r5900_pdivw,
RABBITIZER_INSTR_ID_r5900_pcpyld,
RABBITIZER_INSTR_ID_r5900_pmaddh,
RABBITIZER_INSTR_ID_r5900_phmadh,
RABBITIZER_INSTR_ID_r5900_pand,
RABBITIZER_INSTR_ID_r5900_pxor,
RABBITIZER_INSTR_ID_r5900_pmsubh,
RABBITIZER_INSTR_ID_r5900_phmsbh,
RABBITIZER_INSTR_ID_r5900_pexeh,
RABBITIZER_INSTR_ID_r5900_prevh,
RABBITIZER_INSTR_ID_r5900_pmulth,
RABBITIZER_INSTR_ID_r5900_pdivbw,
RABBITIZER_INSTR_ID_r5900_pexew,
RABBITIZER_INSTR_ID_r5900_prot3w,
RABBITIZER_INSTR_ID_r5900_pmadduw,
RABBITIZER_INSTR_ID_r5900_psravw,
RABBITIZER_INSTR_ID_r5900_pmthi,
RABBITIZER_INSTR_ID_r5900_pmtlo,
RABBITIZER_INSTR_ID_r5900_pinteh,
RABBITIZER_INSTR_ID_r5900_pmultuw,
RABBITIZER_INSTR_ID_r5900_pdivuw,
RABBITIZER_INSTR_ID_r5900_pcpyud,
RABBITIZER_INSTR_ID_r5900_por,
RABBITIZER_INSTR_ID_r5900_pnor,
RABBITIZER_INSTR_ID_r5900_pexch,
RABBITIZER_INSTR_ID_r5900_pcpyh,
RABBITIZER_INSTR_ID_r5900_pexcw,
RABBITIZER_INSTR_ID_r5900_ei,
RABBITIZER_INSTR_ID_r5900_di,
RABBITIZER_INSTR_ID_r5900_c1__sqrt_s,
RABBITIZER_INSTR_ID_r5900_rsqrt_s,
RABBITIZER_INSTR_ID_r5900_adda_s,
RABBITIZER_INSTR_ID_r5900_suba_s,
RABBITIZER_INSTR_ID_r5900_mula_s,
RABBITIZER_INSTR_ID_r5900_madd_s,
RABBITIZER_INSTR_ID_r5900_msub_s,
RABBITIZER_INSTR_ID_r5900_madda_s,
RABBITIZER_INSTR_ID_r5900_msuba_s,
RABBITIZER_INSTR_ID_r5900_max_s,
RABBITIZER_INSTR_ID_r5900_min_s,
RABBITIZER_INSTR_ID_r5900_trunc_w_s,
RABBITIZER_INSTR_ID_r5900_c_lt_s,
RABBITIZER_INSTR_ID_r5900_c_le_s,
RABBITIZER_INSTR_ID_r5900_qmfc2,
RABBITIZER_INSTR_ID_r5900_cfc2,
RABBITIZER_INSTR_ID_r5900_qmtc2,
RABBITIZER_INSTR_ID_r5900_ctc2,
RABBITIZER_INSTR_ID_r5900_bc2f,
RABBITIZER_INSTR_ID_r5900_bc2t,
RABBITIZER_INSTR_ID_r5900_bc2fl,
RABBITIZER_INSTR_ID_r5900_bc2tl,
RABBITIZER_INSTR_ID_r5900_vaddx,
RABBITIZER_INSTR_ID_r5900_vaddy,
RABBITIZER_INSTR_ID_r5900_vaddz,
RABBITIZER_INSTR_ID_r5900_vaddw,
RABBITIZER_INSTR_ID_r5900_vsubx,
RABBITIZER_INSTR_ID_r5900_vsuby,
RABBITIZER_INSTR_ID_r5900_vsubz,
RABBITIZER_INSTR_ID_r5900_vsubw,
RABBITIZER_INSTR_ID_r5900_vmaddx,
RABBITIZER_INSTR_ID_r5900_vmaddy,
RABBITIZER_INSTR_ID_r5900_vmaddz,
RABBITIZER_INSTR_ID_r5900_vmaddw,
RABBITIZER_INSTR_ID_r5900_vmsubx,
RABBITIZER_INSTR_ID_r5900_vmsuby,
RABBITIZER_INSTR_ID_r5900_vmsubz,
RABBITIZER_INSTR_ID_r5900_vmsubw,
RABBITIZER_INSTR_ID_r5900_vmaxx,
RABBITIZER_INSTR_ID_r5900_vmaxy,
RABBITIZER_INSTR_ID_r5900_vmaxz,
RABBITIZER_INSTR_ID_r5900_vmaxw,
RABBITIZER_INSTR_ID_r5900_vminix,
RABBITIZER_INSTR_ID_r5900_vminiy,
RABBITIZER_INSTR_ID_r5900_vminiz,
RABBITIZER_INSTR_ID_r5900_vminiw,
RABBITIZER_INSTR_ID_r5900_vmulx,
RABBITIZER_INSTR_ID_r5900_vmuly,
RABBITIZER_INSTR_ID_r5900_vmulz,
RABBITIZER_INSTR_ID_r5900_vmulw,
RABBITIZER_INSTR_ID_r5900_vmulq,
RABBITIZER_INSTR_ID_r5900_vmaxi,
RABBITIZER_INSTR_ID_r5900_vmuli,
RABBITIZER_INSTR_ID_r5900_vminii,
RABBITIZER_INSTR_ID_r5900_vaddq,
RABBITIZER_INSTR_ID_r5900_vmaddq,
RABBITIZER_INSTR_ID_r5900_vaddi,
RABBITIZER_INSTR_ID_r5900_vmaddi,
RABBITIZER_INSTR_ID_r5900_vsubq,
RABBITIZER_INSTR_ID_r5900_vmsubq,
RABBITIZER_INSTR_ID_r5900_vsubi,
RABBITIZER_INSTR_ID_r5900_vmsubi,
RABBITIZER_INSTR_ID_r5900_vadd,
RABBITIZER_INSTR_ID_r5900_vmadd,
RABBITIZER_INSTR_ID_r5900_vmul,
RABBITIZER_INSTR_ID_r5900_vmax,
RABBITIZER_INSTR_ID_r5900_vsub,
RABBITIZER_INSTR_ID_r5900_vmsub,
RABBITIZER_INSTR_ID_r5900_vopmsub,
RABBITIZER_INSTR_ID_r5900_vmini,
RABBITIZER_INSTR_ID_r5900_viadd,
RABBITIZER_INSTR_ID_r5900_visub,
RABBITIZER_INSTR_ID_r5900_viaddi,
RABBITIZER_INSTR_ID_r5900_viand,
RABBITIZER_INSTR_ID_r5900_vior,
RABBITIZER_INSTR_ID_r5900_vcallms,
RABBITIZER_INSTR_ID_r5900_vcallmsr,
RABBITIZER_INSTR_ID_r5900_vaddax,
RABBITIZER_INSTR_ID_r5900_vadday,
RABBITIZER_INSTR_ID_r5900_vaddaz,
RABBITIZER_INSTR_ID_r5900_vaddaw,
RABBITIZER_INSTR_ID_r5900_vsubax,
RABBITIZER_INSTR_ID_r5900_vsubay,
RABBITIZER_INSTR_ID_r5900_vsubaz,
RABBITIZER_INSTR_ID_r5900_vsubaw,
RABBITIZER_INSTR_ID_r5900_vmaddax,
RABBITIZER_INSTR_ID_r5900_vmadday,
RABBITIZER_INSTR_ID_r5900_vmaddaz,
RABBITIZER_INSTR_ID_r5900_vmaddaw,
RABBITIZER_INSTR_ID_r5900_vmsubax,
RABBITIZER_INSTR_ID_r5900_vmsubay,
RABBITIZER_INSTR_ID_r5900_vmsubaz,
RABBITIZER_INSTR_ID_r5900_vmsubaw,
RABBITIZER_INSTR_ID_r5900_vitof0,
RABBITIZER_INSTR_ID_r5900_vitof4,
RABBITIZER_INSTR_ID_r5900_vitof12,
RABBITIZER_INSTR_ID_r5900_vitof15,
RABBITIZER_INSTR_ID_r5900_vftoi0,
RABBITIZER_INSTR_ID_r5900_vftoi4,
RABBITIZER_INSTR_ID_r5900_vftoi12,
RABBITIZER_INSTR_ID_r5900_vftoi15,
RABBITIZER_INSTR_ID_r5900_vmulax,
RABBITIZER_INSTR_ID_r5900_vmulay,
RABBITIZER_INSTR_ID_r5900_vmulaz,
RABBITIZER_INSTR_ID_r5900_vmulaw,
RABBITIZER_INSTR_ID_r5900_vmulaq,
RABBITIZER_INSTR_ID_r5900_vabs,
RABBITIZER_INSTR_ID_r5900_vmulai,
RABBITIZER_INSTR_ID_r5900_vclipw,
RABBITIZER_INSTR_ID_r5900_vaddaq,
RABBITIZER_INSTR_ID_r5900_vmaddaq,
RABBITIZER_INSTR_ID_r5900_vaddai,
RABBITIZER_INSTR_ID_r5900_vmaddai,
RABBITIZER_INSTR_ID_r5900_vsubaq,
RABBITIZER_INSTR_ID_r5900_vmsubaq,
RABBITIZER_INSTR_ID_r5900_vsubai,
RABBITIZER_INSTR_ID_r5900_vmsubai,
RABBITIZER_INSTR_ID_r5900_vadda,
RABBITIZER_INSTR_ID_r5900_vmadda,
RABBITIZER_INSTR_ID_r5900_vmula,
RABBITIZER_INSTR_ID_r5900_vsuba,
RABBITIZER_INSTR_ID_r5900_vmsuba,
RABBITIZER_INSTR_ID_r5900_vopmula,
RABBITIZER_INSTR_ID_r5900_vnop,
RABBITIZER_INSTR_ID_r5900_vmove,
RABBITIZER_INSTR_ID_r5900_vmr32,
RABBITIZER_INSTR_ID_r5900_vlqi,
RABBITIZER_INSTR_ID_r5900_vsqi,
RABBITIZER_INSTR_ID_r5900_vlqd,
RABBITIZER_INSTR_ID_r5900_vsqd,
RABBITIZER_INSTR_ID_r5900_vdiv,
RABBITIZER_INSTR_ID_r5900_vsqrt,
RABBITIZER_INSTR_ID_r5900_vrsqrt,
RABBITIZER_INSTR_ID_r5900_vwaitq,
RABBITIZER_INSTR_ID_r5900_vmtir,
RABBITIZER_INSTR_ID_r5900_vmfir,
RABBITIZER_INSTR_ID_r5900_vilwr,
RABBITIZER_INSTR_ID_r5900_viswr,
RABBITIZER_INSTR_ID_r5900_vrnext,
RABBITIZER_INSTR_ID_r5900_vrget,
RABBITIZER_INSTR_ID_r5900_vrinit,
RABBITIZER_INSTR_ID_r5900_vrxor,
RABBITIZER_INSTR_ID_r5900_USERDEF_00,
RABBITIZER_INSTR_ID_r5900_USERDEF_01,
RABBITIZER_INSTR_ID_r5900_USERDEF_02,
RABBITIZER_INSTR_ID_r5900_USERDEF_03,
RABBITIZER_INSTR_ID_r5900_USERDEF_04,
RABBITIZER_INSTR_ID_r5900_USERDEF_05,
RABBITIZER_INSTR_ID_r5900_USERDEF_06,
RABBITIZER_INSTR_ID_r5900_USERDEF_07,
RABBITIZER_INSTR_ID_r5900_USERDEF_08,
RABBITIZER_INSTR_ID_r5900_USERDEF_09,
RABBITIZER_INSTR_ID_r5900_USERDEF_10,
RABBITIZER_INSTR_ID_r5900_USERDEF_11,
RABBITIZER_INSTR_ID_r5900_USERDEF_12,
RABBITIZER_INSTR_ID_r5900_USERDEF_13,
RABBITIZER_INSTR_ID_r5900_USERDEF_14,
RABBITIZER_INSTR_ID_r5900_USERDEF_15,
RABBITIZER_INSTR_ID_r5900_USERDEF_16,
RABBITIZER_INSTR_ID_r5900_USERDEF_17,
RABBITIZER_INSTR_ID_r5900_USERDEF_18,
RABBITIZER_INSTR_ID_r5900_USERDEF_19,
RABBITIZER_INSTR_ID_r5900_MAX,
RABBITIZER_INSTR_ID_ALL_MAX = RABBITIZER_INSTR_ID_r5900_MAX,
} RabbitizerInstrId;
#endif

View File

@ -0,0 +1,21 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, ...) \
RABBITIZER_INSTR_ID_##prefix##_##name,
#define RABBITIZER_DEF_INSTR_ID_ALTNAME(prefix, caseBits, name, altname, ...) \
RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, __VA_ARGS__)
typedef enum RabbitizerInstrId {
#include "instr_id/RabbitizerInstrId_cpu.inc"
#include "instr_id/RabbitizerInstrId_rsp.inc"
#include "instr_id/RabbitizerInstrId_r5900.inc"
RABBITIZER_INSTR_ID_ALL_MAX = RABBITIZER_DEF_INSTR_ID(r5900, , MAX, )
} RabbitizerInstrId;
#undef RABBITIZER_DEF_INSTR_ID
#undef RABBITIZER_DEF_INSTR_ID_ALTNAME

View File

@ -0,0 +1,78 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Automatically generated. DO NOT MODIFY */
#ifndef OperandType_enum_table_h_automatic
#define OperandType_enum_table_h_automatic
typedef enum RabbitizerOperandType {
RAB_OPERAND_ALL_INVALID,
RAB_OPERAND_cpu_rs,
RAB_OPERAND_cpu_rt,
RAB_OPERAND_cpu_rd,
RAB_OPERAND_cpu_sa,
RAB_OPERAND_cpu_zero,
RAB_OPERAND_cpu_cop0d,
RAB_OPERAND_cpu_fs,
RAB_OPERAND_cpu_ft,
RAB_OPERAND_cpu_fd,
RAB_OPERAND_cpu_cop1cs,
RAB_OPERAND_cpu_cop2t,
RAB_OPERAND_cpu_op,
RAB_OPERAND_cpu_code,
RAB_OPERAND_cpu_code_lower,
RAB_OPERAND_cpu_copraw,
RAB_OPERAND_cpu_label,
RAB_OPERAND_cpu_immediate,
RAB_OPERAND_cpu_branch_target_label,
RAB_OPERAND_cpu_immediate_base,
RAB_OPERAND_rsp_rs,
RAB_OPERAND_rsp_rt,
RAB_OPERAND_rsp_rd,
RAB_OPERAND_rsp_cop0d,
RAB_OPERAND_rsp_cop2t,
RAB_OPERAND_rsp_cop2cd,
RAB_OPERAND_rsp_vs,
RAB_OPERAND_rsp_vt,
RAB_OPERAND_rsp_vd,
RAB_OPERAND_rsp_vt_elementhigh,
RAB_OPERAND_rsp_vt_elementlow,
RAB_OPERAND_rsp_vd_de,
RAB_OPERAND_rsp_vs_index,
RAB_OPERAND_rsp_offset_rs,
RAB_OPERAND_rsp_immediate_base,
RAB_OPERAND_r5900_I,
RAB_OPERAND_r5900_Q,
RAB_OPERAND_r5900_R,
RAB_OPERAND_r5900_ACC,
RAB_OPERAND_r5900_ACCxyzw,
RAB_OPERAND_r5900_vfs,
RAB_OPERAND_r5900_vft,
RAB_OPERAND_r5900_vfd,
RAB_OPERAND_r5900_vfsxyzw,
RAB_OPERAND_r5900_vftxyzw,
RAB_OPERAND_r5900_vfdxyzw,
RAB_OPERAND_r5900_vfsn,
RAB_OPERAND_r5900_vftn,
RAB_OPERAND_r5900_vfdn,
RAB_OPERAND_r5900_vfsl,
RAB_OPERAND_r5900_vftl,
RAB_OPERAND_r5900_vfdl,
RAB_OPERAND_r5900_vfsm,
RAB_OPERAND_r5900_vftm,
RAB_OPERAND_r5900_vfdm,
RAB_OPERAND_r5900_vis,
RAB_OPERAND_r5900_vit,
RAB_OPERAND_r5900_vid,
RAB_OPERAND_r5900_vis_predecr,
RAB_OPERAND_r5900_vit_predecr,
RAB_OPERAND_r5900_vid_predecr,
RAB_OPERAND_r5900_vis_postincr,
RAB_OPERAND_r5900_vit_postincr,
RAB_OPERAND_r5900_vid_postincr,
RAB_OPERAND_r5900_immediate5,
RAB_OPERAND_ALL_MAX,
} RabbitizerOperandType;
#endif

View File

@ -0,0 +1,17 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RAB_DEF_OPERAND(prefix, operand) \
RAB_OPERAND_##prefix##_##operand,
typedef enum RabbitizerOperandType {
RAB_DEF_OPERAND(ALL, INVALID)
#include "operands/RabbitizerOperandType_cpu.inc"
#include "operands/RabbitizerOperandType_rsp.inc"
#include "operands/RabbitizerOperandType_r5900.inc"
RAB_DEF_OPERAND(ALL, MAX)
} RabbitizerOperandType;
#undef RAB_DEF_OPERAND

View File

@ -0,0 +1,74 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Automatically generated. DO NOT MODIFY */
#ifndef OperandType_function_declarations_table_h_automatic
#define OperandType_function_declarations_table_h_automatic
size_t RabbitizerOperandType_process_cpu_rs (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_rt (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_rd (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_sa (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_zero (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_cop0d (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_fs (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_ft (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_fd (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_cop1cs (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_cop2t (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_op (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_code (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_code_lower (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_copraw (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_label (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_immediate (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_branch_target_label (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_cpu_immediate_base (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_rsp_rs (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_rsp_rt (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_rsp_rd (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_rsp_cop0d (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_rsp_cop2t (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_rsp_cop2cd (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_rsp_vs (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_rsp_vt (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_rsp_vd (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_rsp_vt_elementhigh (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_rsp_vt_elementlow (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_rsp_vd_de (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_rsp_vs_index (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_rsp_offset_rs (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_rsp_immediate_base (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_I (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_Q (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_R (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_ACC (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_ACCxyzw (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vfs (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vft (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vfd (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vfsxyzw (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vftxyzw (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vfdxyzw (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vfsn (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vftn (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vfdn (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vfsl (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vftl (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vfdl (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vfsm (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vftm (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vfdm (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vis (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vit (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vid (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vis_predecr (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vit_predecr (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vid_predecr (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vis_postincr (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vit_postincr (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_vid_postincr (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r5900_immediate5 (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
#endif

View File

@ -0,0 +1,10 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RAB_DEF_OPERAND(prefix, operand) size_t RabbitizerOperandType_process_##prefix##_##operand (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
#include "operands/RabbitizerOperandType_cpu.inc"
#include "operands/RabbitizerOperandType_rsp.inc"
#include "operands/RabbitizerOperandType_r5900.inc"
#undef RAB_DEF_OPERAND

View File

@ -9,17 +9,7 @@
extern "C" {
#endif
#define RAB_DEF_ACCESSTYPE(name) RAB_ACCESSTYPE_##name,
typedef enum RabbitizerAccessType {
#include "instructions/AccessType.inc"
RAB_DEF_ACCESSTYPE(MAX)
} RabbitizerAccessType;
#undef RAB_DEF_ACCESSTYPE
#include "AccessType_enum.table.h"
#ifdef __cplusplus
}

View File

@ -10,15 +10,7 @@ extern "C" {
#endif
#define RABBITIZER_DEF_INSTR_CATEGORY(name) RABBITIZER_INSTRCAT_##name
typedef enum RabbitizerInstrCategory {
#include "instructions/InstrCategory.inc"
RABBITIZER_DEF_INSTR_CATEGORY(MAX),
} RabbitizerInstrCategory;
#undef RABBITIZER_DEF_INSTR_CATEGORY
#include "InstrCategory_enum.table.h"
extern const char *const RabbitizerInstrCategory_Names[];

View File

@ -13,26 +13,7 @@
extern "C" {
#endif
#define RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, ...) \
RABBITIZER_INSTR_ID_##prefix##_##name,
#define RABBITIZER_DEF_INSTR_ID_ALTNAME(prefix, caseBits, name, altname, ...) \
RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, __VA_ARGS__)
typedef enum RabbitizerInstrId {
#include "instructions/instr_id/RabbitizerInstrId_cpu.inc"
#include "instructions/instr_id/RabbitizerInstrId_rsp.inc"
#include "instructions/instr_id/RabbitizerInstrId_r5900.inc"
RABBITIZER_INSTR_ID_ALL_MAX = RABBITIZER_DEF_INSTR_ID(r5900, , MAX, )
} RabbitizerInstrId;
#undef RABBITIZER_DEF_INSTR_ID
#undef RABBITIZER_DEF_INSTR_ID_ALTNAME
#include "InstrId_enum.table.h"
extern const char *RabbitizerInstrId_Names[];

View File

@ -11,22 +11,7 @@
extern "C" {
#endif
#define RAB_DEF_OPERAND(prefix, operand) \
RAB_OPERAND_##prefix##_##operand,
typedef enum RabbitizerOperandType {
RAB_DEF_OPERAND(ALL, INVALID)
#include "operands/RabbitizerOperandType_cpu.inc"
#include "operands/RabbitizerOperandType_rsp.inc"
#include "operands/RabbitizerOperandType_r5900.inc"
RAB_DEF_OPERAND(ALL, MAX)
} RabbitizerOperandType;
#undef RAB_DEF_OPERAND
#include "OperandType_enum.table.h"
struct RabbitizerInstruction;
@ -34,15 +19,7 @@ typedef size_t (*OperandCallback)(const struct RabbitizerInstruction *self, char
extern const OperandCallback instrOpercandCallbacks[];
#define RAB_DEF_OPERAND(prefix, operand) size_t RabbitizerOperandType_process_##prefix##_##operand (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
#include "instructions/operands/RabbitizerOperandType_cpu.inc"
#include "instructions/operands/RabbitizerOperandType_rsp.inc"
#include "instructions/operands/RabbitizerOperandType_r5900.inc"
#undef RAB_DEF_OPERAND
#include "OperandType_function_declarations.table.h"
#ifdef __cplusplus
}

View File

@ -14,87 +14,7 @@ extern "C" {
#endif
#define RABBITIZER_DEF_REG(prefix, name, numeric) \
RABBITIZER_REG_##prefix##_##name
#define RABBITIZER_DEF_REG_NODOLLAR(prefix, name, numeric) \
RABBITIZER_REG_##prefix##_##name
typedef enum RabbitizerRegister_GprO32 {
#include "instructions/registers/RabbitizerRegister_GprO32.inc"
} RabbitizerRegister_GprO32;
typedef enum RabbitizerRegister_GprN32 {
#include "instructions/registers/RabbitizerRegister_GprN32.inc"
} RabbitizerRegister_GprN32;
typedef enum RabbitizerRegister_Cop0 {
#include "instructions/registers/RabbitizerRegister_Cop0.inc"
} RabbitizerRegister_Cop0;
// Float registers
typedef enum RabbitizerRegister_Cop1O32 {
#include "instructions/registers/RabbitizerRegister_Cop1O32.inc"
} RabbitizerRegister_Cop1O32;
typedef enum RabbitizerRegister_Cop1N32 {
#include "instructions/registers/RabbitizerRegister_Cop1N32.inc"
} RabbitizerRegister_Cop1N32;
typedef enum RabbitizerRegister_Cop1N64 {
#include "instructions/registers/RabbitizerRegister_Cop1N64.inc"
} RabbitizerRegister_Cop1N64;
typedef enum RabbitizerRegister_Cop1Control {
#include "instructions/registers/RabbitizerRegister_Cop1Control.inc"
} RabbitizerRegister_Cop1Control;
typedef enum RabbitizerRegister_Cop2 {
#include "instructions/registers/RabbitizerRegister_Cop2.inc"
} RabbitizerRegister_Cop2;
/* RSP */
typedef enum RabbitizerRegister_RspGpr {
#include "instructions/registers/RabbitizerRegister_RspGpr.inc"
} RabbitizerRegister_RspGpr;
typedef enum RabbitizerRegister_RspCop0 {
#include "instructions/registers/RabbitizerRegister_RspCop0.inc"
} RabbitizerRegister_RspCop0;
typedef enum RabbitizerRegister_RspCop2 {
#include "instructions/registers/RabbitizerRegister_RspCop2.inc"
} RabbitizerRegister_RspCop2;
typedef enum RabbitizerRegister_RspCop2Control {
#include "instructions/registers/RabbitizerRegister_RspCop2Control.inc"
} RabbitizerRegister_RspCop2Control;
typedef enum RabbitizerRegister_RspVector {
#include "instructions/registers/RabbitizerRegister_RspVector.inc"
} RabbitizerRegister_RspVector;
/* RSP */
/* R5900 */
typedef enum RabbitizerRegister_R5900VF {
#include "instructions/registers/RabbitizerRegister_R5900VF.inc"
} RabbitizerRegister_R5900VF;
typedef enum RabbitizerRegister_R5900VI {
#include "instructions/registers/RabbitizerRegister_R5900VI.inc"
} RabbitizerRegister_R5900VI;
/* R5900 */
#undef RABBITIZER_DEF_REG
#undef RABBITIZER_DEF_REG_NODOLLAR
#include "Registers_enums.table.h"
extern const char *RabbitizerRegister_GprO32_Names[][2];
extern const char *RabbitizerRegister_GprN32_Names[][2];

View File

@ -0,0 +1,504 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Automatically generated. DO NOT MODIFY */
#ifndef Registers_enums_table_h_automatic
#define Registers_enums_table_h_automatic
typedef enum RabbitizerRegister_GprO32 {
RABBITIZER_REG_GPR_O32_zero,
RABBITIZER_REG_GPR_O32_at,
RABBITIZER_REG_GPR_O32_v0,
RABBITIZER_REG_GPR_O32_v1,
RABBITIZER_REG_GPR_O32_a0,
RABBITIZER_REG_GPR_O32_a1,
RABBITIZER_REG_GPR_O32_a2,
RABBITIZER_REG_GPR_O32_a3,
RABBITIZER_REG_GPR_O32_t0,
RABBITIZER_REG_GPR_O32_t1,
RABBITIZER_REG_GPR_O32_t2,
RABBITIZER_REG_GPR_O32_t3,
RABBITIZER_REG_GPR_O32_t4,
RABBITIZER_REG_GPR_O32_t5,
RABBITIZER_REG_GPR_O32_t6,
RABBITIZER_REG_GPR_O32_t7,
RABBITIZER_REG_GPR_O32_s0,
RABBITIZER_REG_GPR_O32_s1,
RABBITIZER_REG_GPR_O32_s2,
RABBITIZER_REG_GPR_O32_s3,
RABBITIZER_REG_GPR_O32_s4,
RABBITIZER_REG_GPR_O32_s5,
RABBITIZER_REG_GPR_O32_s6,
RABBITIZER_REG_GPR_O32_s7,
RABBITIZER_REG_GPR_O32_t8,
RABBITIZER_REG_GPR_O32_t9,
RABBITIZER_REG_GPR_O32_k0,
RABBITIZER_REG_GPR_O32_k1,
RABBITIZER_REG_GPR_O32_gp,
RABBITIZER_REG_GPR_O32_sp,
RABBITIZER_REG_GPR_O32_fp,
RABBITIZER_REG_GPR_O32_ra,
} RabbitizerRegister_GprO32;
typedef enum RabbitizerRegister_GprN32 {
RABBITIZER_REG_GPR_N32_zero,
RABBITIZER_REG_GPR_N32_at,
RABBITIZER_REG_GPR_N32_v0,
RABBITIZER_REG_GPR_N32_v1,
RABBITIZER_REG_GPR_N32_a0,
RABBITIZER_REG_GPR_N32_a1,
RABBITIZER_REG_GPR_N32_a2,
RABBITIZER_REG_GPR_N32_a3,
RABBITIZER_REG_GPR_N32_a4,
RABBITIZER_REG_GPR_N32_a5,
RABBITIZER_REG_GPR_N32_a6,
RABBITIZER_REG_GPR_N32_a7,
RABBITIZER_REG_GPR_N32_t0,
RABBITIZER_REG_GPR_N32_t1,
RABBITIZER_REG_GPR_N32_t2,
RABBITIZER_REG_GPR_N32_t3,
RABBITIZER_REG_GPR_N32_s0,
RABBITIZER_REG_GPR_N32_s1,
RABBITIZER_REG_GPR_N32_s2,
RABBITIZER_REG_GPR_N32_s3,
RABBITIZER_REG_GPR_N32_s4,
RABBITIZER_REG_GPR_N32_s5,
RABBITIZER_REG_GPR_N32_s6,
RABBITIZER_REG_GPR_N32_s7,
RABBITIZER_REG_GPR_N32_t8,
RABBITIZER_REG_GPR_N32_t9,
RABBITIZER_REG_GPR_N32_k0,
RABBITIZER_REG_GPR_N32_k1,
RABBITIZER_REG_GPR_N32_gp,
RABBITIZER_REG_GPR_N32_sp,
RABBITIZER_REG_GPR_N32_fp,
RABBITIZER_REG_GPR_N32_ra,
} RabbitizerRegister_GprN32;
typedef enum RabbitizerRegister_Cop0 {
RABBITIZER_REG_COP0_Index,
RABBITIZER_REG_COP0_Random,
RABBITIZER_REG_COP0_EntryLo0,
RABBITIZER_REG_COP0_EntryLo1,
RABBITIZER_REG_COP0_Context,
RABBITIZER_REG_COP0_PageMask,
RABBITIZER_REG_COP0_Wired,
RABBITIZER_REG_COP0_Reserved07,
RABBITIZER_REG_COP0_BadVaddr,
RABBITIZER_REG_COP0_Count,
RABBITIZER_REG_COP0_EntryHi,
RABBITIZER_REG_COP0_Compare,
RABBITIZER_REG_COP0_Status,
RABBITIZER_REG_COP0_Cause,
RABBITIZER_REG_COP0_EPC,
RABBITIZER_REG_COP0_PRevID,
RABBITIZER_REG_COP0_Config,
RABBITIZER_REG_COP0_LLAddr,
RABBITIZER_REG_COP0_WatchLo,
RABBITIZER_REG_COP0_WatchHi,
RABBITIZER_REG_COP0_XContext,
RABBITIZER_REG_COP0_Reserved21,
RABBITIZER_REG_COP0_Reserved22,
RABBITIZER_REG_COP0_Reserved23,
RABBITIZER_REG_COP0_Reserved24,
RABBITIZER_REG_COP0_Reserved25,
RABBITIZER_REG_COP0_PErr,
RABBITIZER_REG_COP0_CacheErr,
RABBITIZER_REG_COP0_TagLo,
RABBITIZER_REG_COP0_TagHi,
RABBITIZER_REG_COP0_ErrorEPC,
RABBITIZER_REG_COP0_Reserved31,
} RabbitizerRegister_Cop0;
typedef enum RabbitizerRegister_Cop1O32 {
RABBITIZER_REG_COP1_O32_fv0,
RABBITIZER_REG_COP1_O32_fv0f,
RABBITIZER_REG_COP1_O32_fv1,
RABBITIZER_REG_COP1_O32_fv1f,
RABBITIZER_REG_COP1_O32_ft0,
RABBITIZER_REG_COP1_O32_ft0f,
RABBITIZER_REG_COP1_O32_ft1,
RABBITIZER_REG_COP1_O32_ft1f,
RABBITIZER_REG_COP1_O32_ft2,
RABBITIZER_REG_COP1_O32_ft2f,
RABBITIZER_REG_COP1_O32_ft3,
RABBITIZER_REG_COP1_O32_ft3f,
RABBITIZER_REG_COP1_O32_fa0,
RABBITIZER_REG_COP1_O32_fa0f,
RABBITIZER_REG_COP1_O32_fa1,
RABBITIZER_REG_COP1_O32_fa1f,
RABBITIZER_REG_COP1_O32_ft4,
RABBITIZER_REG_COP1_O32_ft4f,
RABBITIZER_REG_COP1_O32_ft5,
RABBITIZER_REG_COP1_O32_ft5f,
RABBITIZER_REG_COP1_O32_fs0,
RABBITIZER_REG_COP1_O32_fs0f,
RABBITIZER_REG_COP1_O32_fs1,
RABBITIZER_REG_COP1_O32_fs1f,
RABBITIZER_REG_COP1_O32_fs2,
RABBITIZER_REG_COP1_O32_fs2f,
RABBITIZER_REG_COP1_O32_fs3,
RABBITIZER_REG_COP1_O32_fs3f,
RABBITIZER_REG_COP1_O32_fs4,
RABBITIZER_REG_COP1_O32_fs4f,
RABBITIZER_REG_COP1_O32_fs5,
RABBITIZER_REG_COP1_O32_fs5f,
} RabbitizerRegister_Cop1O32;
typedef enum RabbitizerRegister_Cop1N32 {
RABBITIZER_REG_COP1_N32_fv0,
RABBITIZER_REG_COP1_N32_ft14,
RABBITIZER_REG_COP1_N32_fv1,
RABBITIZER_REG_COP1_N32_ft15,
RABBITIZER_REG_COP1_N32_ft0,
RABBITIZER_REG_COP1_N32_ft1,
RABBITIZER_REG_COP1_N32_ft2,
RABBITIZER_REG_COP1_N32_ft3,
RABBITIZER_REG_COP1_N32_ft4,
RABBITIZER_REG_COP1_N32_ft5,
RABBITIZER_REG_COP1_N32_ft6,
RABBITIZER_REG_COP1_N32_ft7,
RABBITIZER_REG_COP1_N32_fa0,
RABBITIZER_REG_COP1_N32_fa1,
RABBITIZER_REG_COP1_N32_fa2,
RABBITIZER_REG_COP1_N32_fa3,
RABBITIZER_REG_COP1_N32_fa4,
RABBITIZER_REG_COP1_N32_fa5,
RABBITIZER_REG_COP1_N32_fa6,
RABBITIZER_REG_COP1_N32_fa7,
RABBITIZER_REG_COP1_N32_fs0,
RABBITIZER_REG_COP1_N32_ft8,
RABBITIZER_REG_COP1_N32_fs1,
RABBITIZER_REG_COP1_N32_ft9,
RABBITIZER_REG_COP1_N32_fs2,
RABBITIZER_REG_COP1_N32_ft10,
RABBITIZER_REG_COP1_N32_fs3,
RABBITIZER_REG_COP1_N32_ft11,
RABBITIZER_REG_COP1_N32_fs4,
RABBITIZER_REG_COP1_N32_ft12,
RABBITIZER_REG_COP1_N32_fs5,
RABBITIZER_REG_COP1_N32_ft13,
} RabbitizerRegister_Cop1N32;
typedef enum RabbitizerRegister_Cop1N64 {
RABBITIZER_REG_COP1_N64_fv0,
RABBITIZER_REG_COP1_N64_ft12,
RABBITIZER_REG_COP1_N64_fv1,
RABBITIZER_REG_COP1_N64_ft13,
RABBITIZER_REG_COP1_N64_ft0,
RABBITIZER_REG_COP1_N64_ft1,
RABBITIZER_REG_COP1_N64_ft2,
RABBITIZER_REG_COP1_N64_ft3,
RABBITIZER_REG_COP1_N64_ft4,
RABBITIZER_REG_COP1_N64_ft5,
RABBITIZER_REG_COP1_N64_ft6,
RABBITIZER_REG_COP1_N64_ft7,
RABBITIZER_REG_COP1_N64_fa0,
RABBITIZER_REG_COP1_N64_fa1,
RABBITIZER_REG_COP1_N64_fa2,
RABBITIZER_REG_COP1_N64_fa3,
RABBITIZER_REG_COP1_N64_fa4,
RABBITIZER_REG_COP1_N64_fa5,
RABBITIZER_REG_COP1_N64_fa6,
RABBITIZER_REG_COP1_N64_fa7,
RABBITIZER_REG_COP1_N64_ft8,
RABBITIZER_REG_COP1_N64_ft9,
RABBITIZER_REG_COP1_N64_ft10,
RABBITIZER_REG_COP1_N64_ft11,
RABBITIZER_REG_COP1_N64_fs0,
RABBITIZER_REG_COP1_N64_fs1,
RABBITIZER_REG_COP1_N64_fs2,
RABBITIZER_REG_COP1_N64_fs3,
RABBITIZER_REG_COP1_N64_fs4,
RABBITIZER_REG_COP1_N64_fs5,
RABBITIZER_REG_COP1_N64_fs6,
RABBITIZER_REG_COP1_N64_fs7,
} RabbitizerRegister_Cop1N64;
typedef enum RabbitizerRegister_Cop1Control {
RABBITIZER_REG_COP1_CONTROL_0,
RABBITIZER_REG_COP1_CONTROL_1,
RABBITIZER_REG_COP1_CONTROL_2,
RABBITIZER_REG_COP1_CONTROL_3,
RABBITIZER_REG_COP1_CONTROL_4,
RABBITIZER_REG_COP1_CONTROL_5,
RABBITIZER_REG_COP1_CONTROL_6,
RABBITIZER_REG_COP1_CONTROL_7,
RABBITIZER_REG_COP1_CONTROL_8,
RABBITIZER_REG_COP1_CONTROL_9,
RABBITIZER_REG_COP1_CONTROL_10,
RABBITIZER_REG_COP1_CONTROL_11,
RABBITIZER_REG_COP1_CONTROL_12,
RABBITIZER_REG_COP1_CONTROL_13,
RABBITIZER_REG_COP1_CONTROL_14,
RABBITIZER_REG_COP1_CONTROL_15,
RABBITIZER_REG_COP1_CONTROL_16,
RABBITIZER_REG_COP1_CONTROL_17,
RABBITIZER_REG_COP1_CONTROL_18,
RABBITIZER_REG_COP1_CONTROL_19,
RABBITIZER_REG_COP1_CONTROL_20,
RABBITIZER_REG_COP1_CONTROL_21,
RABBITIZER_REG_COP1_CONTROL_22,
RABBITIZER_REG_COP1_CONTROL_23,
RABBITIZER_REG_COP1_CONTROL_24,
RABBITIZER_REG_COP1_CONTROL_25,
RABBITIZER_REG_COP1_CONTROL_26,
RABBITIZER_REG_COP1_CONTROL_27,
RABBITIZER_REG_COP1_CONTROL_28,
RABBITIZER_REG_COP1_CONTROL_29,
RABBITIZER_REG_COP1_CONTROL_30,
RABBITIZER_REG_COP1_CONTROL_FpcCsr,
} RabbitizerRegister_Cop1Control;
typedef enum RabbitizerRegister_Cop2 {
RABBITIZER_REG_COP2_0,
RABBITIZER_REG_COP2_1,
RABBITIZER_REG_COP2_2,
RABBITIZER_REG_COP2_3,
RABBITIZER_REG_COP2_4,
RABBITIZER_REG_COP2_5,
RABBITIZER_REG_COP2_6,
RABBITIZER_REG_COP2_7,
RABBITIZER_REG_COP2_8,
RABBITIZER_REG_COP2_9,
RABBITIZER_REG_COP2_10,
RABBITIZER_REG_COP2_11,
RABBITIZER_REG_COP2_12,
RABBITIZER_REG_COP2_13,
RABBITIZER_REG_COP2_14,
RABBITIZER_REG_COP2_15,
RABBITIZER_REG_COP2_16,
RABBITIZER_REG_COP2_17,
RABBITIZER_REG_COP2_18,
RABBITIZER_REG_COP2_19,
RABBITIZER_REG_COP2_20,
RABBITIZER_REG_COP2_21,
RABBITIZER_REG_COP2_22,
RABBITIZER_REG_COP2_23,
RABBITIZER_REG_COP2_24,
RABBITIZER_REG_COP2_25,
RABBITIZER_REG_COP2_26,
RABBITIZER_REG_COP2_27,
RABBITIZER_REG_COP2_28,
RABBITIZER_REG_COP2_29,
RABBITIZER_REG_COP2_30,
RABBITIZER_REG_COP2_31,
} RabbitizerRegister_Cop2;
typedef enum RabbitizerRegister_RspGpr {
RABBITIZER_REG_RSP_GPR_zero,
RABBITIZER_REG_RSP_GPR_1,
RABBITIZER_REG_RSP_GPR_2,
RABBITIZER_REG_RSP_GPR_3,
RABBITIZER_REG_RSP_GPR_4,
RABBITIZER_REG_RSP_GPR_5,
RABBITIZER_REG_RSP_GPR_6,
RABBITIZER_REG_RSP_GPR_7,
RABBITIZER_REG_RSP_GPR_8,
RABBITIZER_REG_RSP_GPR_9,
RABBITIZER_REG_RSP_GPR_10,
RABBITIZER_REG_RSP_GPR_11,
RABBITIZER_REG_RSP_GPR_12,
RABBITIZER_REG_RSP_GPR_13,
RABBITIZER_REG_RSP_GPR_14,
RABBITIZER_REG_RSP_GPR_15,
RABBITIZER_REG_RSP_GPR_16,
RABBITIZER_REG_RSP_GPR_17,
RABBITIZER_REG_RSP_GPR_18,
RABBITIZER_REG_RSP_GPR_19,
RABBITIZER_REG_RSP_GPR_20,
RABBITIZER_REG_RSP_GPR_21,
RABBITIZER_REG_RSP_GPR_22,
RABBITIZER_REG_RSP_GPR_23,
RABBITIZER_REG_RSP_GPR_24,
RABBITIZER_REG_RSP_GPR_25,
RABBITIZER_REG_RSP_GPR_26,
RABBITIZER_REG_RSP_GPR_27,
RABBITIZER_REG_RSP_GPR_28,
RABBITIZER_REG_RSP_GPR_29,
RABBITIZER_REG_RSP_GPR_30,
RABBITIZER_REG_RSP_GPR_ra,
} RabbitizerRegister_RspGpr;
typedef enum RabbitizerRegister_RspCop0 {
RABBITIZER_REG_RSP_COP0_SP_MEM_ADDR,
RABBITIZER_REG_RSP_COP0_SP_DRAM_ADDR,
RABBITIZER_REG_RSP_COP0_SP_RD_LEN,
RABBITIZER_REG_RSP_COP0_SP_WR_LEN,
RABBITIZER_REG_RSP_COP0_SP_STATUS,
RABBITIZER_REG_RSP_COP0_SP_DMA_FULL,
RABBITIZER_REG_RSP_COP0_SP_DMA_BUSY,
RABBITIZER_REG_RSP_COP0_SP_SEMAPHORE,
RABBITIZER_REG_RSP_COP0_DPC_START,
RABBITIZER_REG_RSP_COP0_DPC_END,
RABBITIZER_REG_RSP_COP0_DPC_CURRENT,
RABBITIZER_REG_RSP_COP0_DPC_STATUS,
RABBITIZER_REG_RSP_COP0_DPC_CLOCK,
RABBITIZER_REG_RSP_COP0_DPC_BUFBUSY,
RABBITIZER_REG_RSP_COP0_DPC_PIPEBUSY,
RABBITIZER_REG_RSP_COP0_DPC_TMEM,
} RabbitizerRegister_RspCop0;
typedef enum RabbitizerRegister_RspCop2 {
RABBITIZER_REG_RSP_COP2_0,
RABBITIZER_REG_RSP_COP2_1,
RABBITIZER_REG_RSP_COP2_2,
RABBITIZER_REG_RSP_COP2_3,
RABBITIZER_REG_RSP_COP2_4,
RABBITIZER_REG_RSP_COP2_5,
RABBITIZER_REG_RSP_COP2_6,
RABBITIZER_REG_RSP_COP2_7,
RABBITIZER_REG_RSP_COP2_8,
RABBITIZER_REG_RSP_COP2_9,
RABBITIZER_REG_RSP_COP2_10,
RABBITIZER_REG_RSP_COP2_11,
RABBITIZER_REG_RSP_COP2_12,
RABBITIZER_REG_RSP_COP2_13,
RABBITIZER_REG_RSP_COP2_14,
RABBITIZER_REG_RSP_COP2_15,
RABBITIZER_REG_RSP_COP2_16,
RABBITIZER_REG_RSP_COP2_17,
RABBITIZER_REG_RSP_COP2_18,
RABBITIZER_REG_RSP_COP2_19,
RABBITIZER_REG_RSP_COP2_20,
RABBITIZER_REG_RSP_COP2_21,
RABBITIZER_REG_RSP_COP2_22,
RABBITIZER_REG_RSP_COP2_23,
RABBITIZER_REG_RSP_COP2_24,
RABBITIZER_REG_RSP_COP2_25,
RABBITIZER_REG_RSP_COP2_26,
RABBITIZER_REG_RSP_COP2_27,
RABBITIZER_REG_RSP_COP2_28,
RABBITIZER_REG_RSP_COP2_29,
RABBITIZER_REG_RSP_COP2_30,
RABBITIZER_REG_RSP_COP2_31,
} RabbitizerRegister_RspCop2;
typedef enum RabbitizerRegister_RspCop2Control {
RABBITIZER_REG_RSP_COP2_CONTROL_0,
RABBITIZER_REG_RSP_COP2_CONTROL_1,
RABBITIZER_REG_RSP_COP2_CONTROL_2,
RABBITIZER_REG_RSP_COP2_CONTROL_3,
RABBITIZER_REG_RSP_COP2_CONTROL_4,
RABBITIZER_REG_RSP_COP2_CONTROL_5,
RABBITIZER_REG_RSP_COP2_CONTROL_6,
RABBITIZER_REG_RSP_COP2_CONTROL_7,
RABBITIZER_REG_RSP_COP2_CONTROL_8,
RABBITIZER_REG_RSP_COP2_CONTROL_9,
RABBITIZER_REG_RSP_COP2_CONTROL_10,
RABBITIZER_REG_RSP_COP2_CONTROL_11,
RABBITIZER_REG_RSP_COP2_CONTROL_12,
RABBITIZER_REG_RSP_COP2_CONTROL_13,
RABBITIZER_REG_RSP_COP2_CONTROL_14,
RABBITIZER_REG_RSP_COP2_CONTROL_15,
RABBITIZER_REG_RSP_COP2_CONTROL_16,
RABBITIZER_REG_RSP_COP2_CONTROL_17,
RABBITIZER_REG_RSP_COP2_CONTROL_18,
RABBITIZER_REG_RSP_COP2_CONTROL_19,
RABBITIZER_REG_RSP_COP2_CONTROL_20,
RABBITIZER_REG_RSP_COP2_CONTROL_21,
RABBITIZER_REG_RSP_COP2_CONTROL_22,
RABBITIZER_REG_RSP_COP2_CONTROL_23,
RABBITIZER_REG_RSP_COP2_CONTROL_24,
RABBITIZER_REG_RSP_COP2_CONTROL_25,
RABBITIZER_REG_RSP_COP2_CONTROL_26,
RABBITIZER_REG_RSP_COP2_CONTROL_27,
RABBITIZER_REG_RSP_COP2_CONTROL_28,
RABBITIZER_REG_RSP_COP2_CONTROL_29,
RABBITIZER_REG_RSP_COP2_CONTROL_30,
RABBITIZER_REG_COP1_CONTROL_31,
} RabbitizerRegister_RspCop2Control;
typedef enum RabbitizerRegister_RspVector {
RABBITIZER_REG_RSP_VECTOR_v0,
RABBITIZER_REG_RSP_VECTOR_v1,
RABBITIZER_REG_RSP_VECTOR_v2,
RABBITIZER_REG_RSP_VECTOR_v3,
RABBITIZER_REG_RSP_VECTOR_v4,
RABBITIZER_REG_RSP_VECTOR_v5,
RABBITIZER_REG_RSP_VECTOR_v6,
RABBITIZER_REG_RSP_VECTOR_v7,
RABBITIZER_REG_RSP_VECTOR_v8,
RABBITIZER_REG_RSP_VECTOR_v9,
RABBITIZER_REG_RSP_VECTOR_v10,
RABBITIZER_REG_RSP_VECTOR_v11,
RABBITIZER_REG_RSP_VECTOR_v12,
RABBITIZER_REG_RSP_VECTOR_v13,
RABBITIZER_REG_RSP_VECTOR_v14,
RABBITIZER_REG_RSP_VECTOR_v15,
RABBITIZER_REG_RSP_VECTOR_v16,
RABBITIZER_REG_RSP_VECTOR_v17,
RABBITIZER_REG_RSP_VECTOR_v18,
RABBITIZER_REG_RSP_VECTOR_v19,
RABBITIZER_REG_RSP_VECTOR_v20,
RABBITIZER_REG_RSP_VECTOR_v21,
RABBITIZER_REG_RSP_VECTOR_v22,
RABBITIZER_REG_RSP_VECTOR_v23,
RABBITIZER_REG_RSP_VECTOR_v24,
RABBITIZER_REG_RSP_VECTOR_v25,
RABBITIZER_REG_RSP_VECTOR_v26,
RABBITIZER_REG_RSP_VECTOR_v27,
RABBITIZER_REG_RSP_VECTOR_v28,
RABBITIZER_REG_RSP_VECTOR_v29,
RABBITIZER_REG_RSP_VECTOR_v30,
RABBITIZER_REG_RSP_VECTOR_v31,
} RabbitizerRegister_RspVector;
typedef enum RabbitizerRegister_R5900VF {
RABBITIZER_REG_R5900_VF_vf0,
RABBITIZER_REG_R5900_VF_vf1,
RABBITIZER_REG_R5900_VF_vf2,
RABBITIZER_REG_R5900_VF_vf3,
RABBITIZER_REG_R5900_VF_vf4,
RABBITIZER_REG_R5900_VF_vf5,
RABBITIZER_REG_R5900_VF_vf6,
RABBITIZER_REG_R5900_VF_vf7,
RABBITIZER_REG_R5900_VF_vf8,
RABBITIZER_REG_R5900_VF_vf9,
RABBITIZER_REG_R5900_VF_vf10,
RABBITIZER_REG_R5900_VF_vf11,
RABBITIZER_REG_R5900_VF_vf12,
RABBITIZER_REG_R5900_VF_vf13,
RABBITIZER_REG_R5900_VF_vf14,
RABBITIZER_REG_R5900_VF_vf15,
RABBITIZER_REG_R5900_VF_vf16,
RABBITIZER_REG_R5900_VF_vf17,
RABBITIZER_REG_R5900_VF_vf18,
RABBITIZER_REG_R5900_VF_vf19,
RABBITIZER_REG_R5900_VF_vf20,
RABBITIZER_REG_R5900_VF_vf21,
RABBITIZER_REG_R5900_VF_vf22,
RABBITIZER_REG_R5900_VF_vf23,
RABBITIZER_REG_R5900_VF_vf24,
RABBITIZER_REG_R5900_VF_vf25,
RABBITIZER_REG_R5900_VF_vf26,
RABBITIZER_REG_R5900_VF_vf27,
RABBITIZER_REG_R5900_VF_vf28,
RABBITIZER_REG_R5900_VF_vf29,
RABBITIZER_REG_R5900_VF_vf30,
RABBITIZER_REG_R5900_VF_vf31,
} RabbitizerRegister_R5900VF;
typedef enum RabbitizerRegister_R5900VI {
RABBITIZER_REG_R5900_VI_vi0,
RABBITIZER_REG_R5900_VI_vi1,
RABBITIZER_REG_R5900_VI_vi2,
RABBITIZER_REG_R5900_VI_vi3,
RABBITIZER_REG_R5900_VI_vi4,
RABBITIZER_REG_R5900_VI_vi5,
RABBITIZER_REG_R5900_VI_vi6,
RABBITIZER_REG_R5900_VI_vi7,
RABBITIZER_REG_R5900_VI_vi8,
RABBITIZER_REG_R5900_VI_vi9,
RABBITIZER_REG_R5900_VI_vi10,
RABBITIZER_REG_R5900_VI_vi11,
RABBITIZER_REG_R5900_VI_vi12,
RABBITIZER_REG_R5900_VI_vi13,
RABBITIZER_REG_R5900_VI_vi14,
RABBITIZER_REG_R5900_VI_vi15,
RABBITIZER_REG_R5900_VI_vi16,
RABBITIZER_REG_R5900_VI_vi17,
RABBITIZER_REG_R5900_VI_vi18,
RABBITIZER_REG_R5900_VI_vi19,
RABBITIZER_REG_R5900_VI_vi20,
RABBITIZER_REG_R5900_VI_vi21,
RABBITIZER_REG_R5900_VI_vi22,
RABBITIZER_REG_R5900_VI_vi23,
RABBITIZER_REG_R5900_VI_vi24,
RABBITIZER_REG_R5900_VI_vi25,
RABBITIZER_REG_R5900_VI_vi26,
RABBITIZER_REG_R5900_VI_vi27,
RABBITIZER_REG_R5900_VI_vi28,
RABBITIZER_REG_R5900_VI_vi29,
RABBITIZER_REG_R5900_VI_vi30,
RABBITIZER_REG_R5900_VI_vi31,
} RabbitizerRegister_R5900VI;
#endif

View File

@ -0,0 +1,83 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RABBITIZER_DEF_REG(prefix, name, numeric) \
RABBITIZER_REG_##prefix##_##name
#define RABBITIZER_DEF_REG_NODOLLAR(prefix, name, numeric) \
RABBITIZER_REG_##prefix##_##name
typedef enum RabbitizerRegister_GprO32 {
#include "registers/RabbitizerRegister_GprO32.inc"
} RabbitizerRegister_GprO32;
typedef enum RabbitizerRegister_GprN32 {
#include "registers/RabbitizerRegister_GprN32.inc"
} RabbitizerRegister_GprN32;
typedef enum RabbitizerRegister_Cop0 {
#include "registers/RabbitizerRegister_Cop0.inc"
} RabbitizerRegister_Cop0;
// Float registers
typedef enum RabbitizerRegister_Cop1O32 {
#include "registers/RabbitizerRegister_Cop1O32.inc"
} RabbitizerRegister_Cop1O32;
typedef enum RabbitizerRegister_Cop1N32 {
#include "registers/RabbitizerRegister_Cop1N32.inc"
} RabbitizerRegister_Cop1N32;
typedef enum RabbitizerRegister_Cop1N64 {
#include "registers/RabbitizerRegister_Cop1N64.inc"
} RabbitizerRegister_Cop1N64;
typedef enum RabbitizerRegister_Cop1Control {
#include "registers/RabbitizerRegister_Cop1Control.inc"
} RabbitizerRegister_Cop1Control;
typedef enum RabbitizerRegister_Cop2 {
#include "registers/RabbitizerRegister_Cop2.inc"
} RabbitizerRegister_Cop2;
/* RSP */
typedef enum RabbitizerRegister_RspGpr {
#include "registers/RabbitizerRegister_RspGpr.inc"
} RabbitizerRegister_RspGpr;
typedef enum RabbitizerRegister_RspCop0 {
#include "registers/RabbitizerRegister_RspCop0.inc"
} RabbitizerRegister_RspCop0;
typedef enum RabbitizerRegister_RspCop2 {
#include "registers/RabbitizerRegister_RspCop2.inc"
} RabbitizerRegister_RspCop2;
typedef enum RabbitizerRegister_RspCop2Control {
#include "registers/RabbitizerRegister_RspCop2Control.inc"
} RabbitizerRegister_RspCop2Control;
typedef enum RabbitizerRegister_RspVector {
#include "registers/RabbitizerRegister_RspVector.inc"
} RabbitizerRegister_RspVector;
/* RSP */
/* R5900 */
typedef enum RabbitizerRegister_R5900VF {
#include "registers/RabbitizerRegister_R5900VF.inc"
} RabbitizerRegister_R5900VF;
typedef enum RabbitizerRegister_R5900VI {
#include "registers/RabbitizerRegister_R5900VI.inc"
} RabbitizerRegister_R5900VI;
/* R5900 */
#undef RABBITIZER_DEF_REG
#undef RABBITIZER_DEF_REG_NODOLLAR

View File

@ -6,18 +6,18 @@ RABBITIZER_DEF_INSTR_ID(
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate}
)
#include "instructions/instr_id/cpu/cpu_normal.inc"
#include "instructions/instr_id/cpu/cpu_special.inc"
#include "instructions/instr_id/cpu/cpu_regimm.inc"
#include "instructions/instr_id/cpu/cpu_cop0.inc"
#include "instructions/instr_id/cpu/cpu_cop0_bc0.inc"
#include "instructions/instr_id/cpu/cpu_cop0_tlb.inc"
#include "instructions/instr_id/cpu/cpu_cop1.inc"
#include "instructions/instr_id/cpu/cpu_cop1_bc1.inc"
#include "instructions/instr_id/cpu/cpu_cop1_fpu_s.inc"
#include "instructions/instr_id/cpu/cpu_cop1_fpu_d.inc"
#include "instructions/instr_id/cpu/cpu_cop1_fpu_w.inc"
#include "instructions/instr_id/cpu/cpu_cop1_fpu_l.inc"
#include "cpu/cpu_normal.inc"
#include "cpu/cpu_special.inc"
#include "cpu/cpu_regimm.inc"
#include "cpu/cpu_cop0.inc"
#include "cpu/cpu_cop0_bc0.inc"
#include "cpu/cpu_cop0_tlb.inc"
#include "cpu/cpu_cop1.inc"
#include "cpu/cpu_cop1_bc1.inc"
#include "cpu/cpu_cop1_fpu_s.inc"
#include "cpu/cpu_cop1_fpu_d.inc"
#include "cpu/cpu_cop1_fpu_w.inc"
#include "cpu/cpu_cop1_fpu_l.inc"
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_00,

View File

@ -7,24 +7,24 @@ RABBITIZER_DEF_INSTR_ID(
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN
)
#include "instructions/instr_id/r5900/r5900_normal.inc"
#include "instructions/instr_id/r5900/r5900_special.inc"
#include "instructions/instr_id/r5900/r5900_regimm.inc"
#include "r5900/r5900_normal.inc"
#include "r5900/r5900_special.inc"
#include "r5900/r5900_regimm.inc"
#include "instructions/instr_id/r5900/r5900_mmi.inc"
#include "instructions/instr_id/r5900/r5900_mmi_0.inc"
#include "instructions/instr_id/r5900/r5900_mmi_1.inc"
#include "instructions/instr_id/r5900/r5900_mmi_2.inc"
#include "instructions/instr_id/r5900/r5900_mmi_3.inc"
#include "r5900/r5900_mmi.inc"
#include "r5900/r5900_mmi_0.inc"
#include "r5900/r5900_mmi_1.inc"
#include "r5900/r5900_mmi_2.inc"
#include "r5900/r5900_mmi_3.inc"
#include "instructions/instr_id/r5900/r5900_cop0_tlb.inc"
#include "r5900/r5900_cop0_tlb.inc"
#include "instructions/instr_id/r5900/r5900_cop1_fpu_s.inc"
#include "r5900/r5900_cop1_fpu_s.inc"
#include "instructions/instr_id/r5900/r5900_cop2.inc"
#include "instructions/instr_id/r5900/r5900_cop2_bc2.inc"
#include "instructions/instr_id/r5900/r5900_cop2_special1.inc"
#include "instructions/instr_id/r5900/r5900_cop2_special2.inc"
#include "r5900/r5900_cop2.inc"
#include "r5900/r5900_cop2_bc2.inc"
#include "r5900/r5900_cop2_special1.inc"
#include "r5900/r5900_cop2_special2.inc"
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_00,

View File

@ -7,18 +7,18 @@ RABBITIZER_DEF_INSTR_ID(
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
#include "instructions/instr_id/rsp/rsp_cop2.inc"
#include "instructions/instr_id/rsp/rsp_cop2_vu.inc"
#include "rsp/rsp_cop2.inc"
#include "rsp/rsp_cop2_vu.inc"
#include "instructions/instr_id/rsp/rsp_normal_lwc2.inc"
#include "instructions/instr_id/rsp/rsp_normal_swc2.inc"
#include "rsp/rsp_normal_lwc2.inc"
#include "rsp/rsp_normal_swc2.inc"
// CPU instructions but with rsp registers
#include "instructions/instr_id/rsp/rsp_normal.inc"
#include "instructions/instr_id/rsp/rsp_special.inc"
#include "instructions/instr_id/rsp/rsp_regimm.inc"
#include "instructions/instr_id/rsp/rsp_cop0.inc"
#include "rsp/rsp_normal.inc"
#include "rsp/rsp_special.inc"
#include "rsp/rsp_regimm.inc"
#include "rsp/rsp_cop0.inc"
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_00,

View File

@ -0,0 +1,15 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Automatically generated. DO NOT MODIFY */
#ifndef InstrCategory_Names_array_table_h_automatic
#define InstrCategory_Names_array_table_h_automatic
const char *const RabbitizerInstrCategory_Names[] = {
[RABBITIZER_INSTRCAT_CPU] = "CPU",
[RABBITIZER_INSTRCAT_RSP] = "RSP",
[RABBITIZER_INSTRCAT_R5900] = "R5900",
};
#endif

View File

@ -0,0 +1,10 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RABBITIZER_DEF_INSTR_CATEGORY(name) [RABBITIZER_INSTRCAT_##name] = #name
const char *const RabbitizerInstrCategory_Names[] = {
#include "instructions/InstrCategory.inc"
};
#undef RABBITIZER_DEF_INSTR_CATEGORY

View File

@ -0,0 +1,692 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Automatically generated. DO NOT MODIFY */
#ifndef InstrDescriptor_Descriptors_array_table_h_automatic
#define InstrDescriptor_Descriptors_array_table_h_automatic
const RabbitizerInstrDescriptor RabbitizerInstrDescriptor_Descriptors[] = {
[RABBITIZER_INSTR_ID_cpu_INVALID] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate} },
[RABBITIZER_INSTR_ID_cpu_j] = { .operands={RAB_OPERAND_cpu_label}, .instrType=RABBITIZER_INSTR_TYPE_J, .isJump=true, .isJumpWithAddress=true },
[RABBITIZER_INSTR_ID_cpu_jal] = { .operands={RAB_OPERAND_cpu_label}, .instrType=RABBITIZER_INSTR_TYPE_J, .isJump=true, .isJumpWithAddress=true, .doesLink=true },
[RABBITIZER_INSTR_ID_cpu_beq] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_bne] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_beql] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .isBranchLikely=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_bnel] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .isBranchLikely=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_blez] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_blezl] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .isBranchLikely=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_bgtz] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_bgtzl] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .isBranchLikely=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_addi] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .notEmitedByCompilers=true, .canBeLo=true },
[RABBITIZER_INSTR_ID_cpu_addiu] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true },
[RABBITIZER_INSTR_ID_cpu_slti] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_sltiu] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_andi] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .isUnsigned=true, .modifiesRt=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_ori] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .isUnsigned=true, .modifiesRt=true, .readsRs=true, .canBeLo=true },
[RABBITIZER_INSTR_ID_cpu_xori] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .isUnsigned=true, .modifiesRt=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_daddi] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true },
[RABBITIZER_INSTR_ID_cpu_daddiu] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true },
[RABBITIZER_INSTR_ID_cpu_lui] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .isUnsigned=true, .modifiesRt=true, .canBeHi=true },
[RABBITIZER_INSTR_ID_cpu_ldl] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true },
[RABBITIZER_INSTR_ID_cpu_ldr] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true },
[RABBITIZER_INSTR_ID_cpu_lb] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .accessType=RAB_ACCESSTYPE_BYTE },
[RABBITIZER_INSTR_ID_cpu_lh] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .accessType=RAB_ACCESSTYPE_SHORT },
[RABBITIZER_INSTR_ID_cpu_lwl] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true },
[RABBITIZER_INSTR_ID_cpu_lw] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .accessType=RAB_ACCESSTYPE_WORD },
[RABBITIZER_INSTR_ID_cpu_lbu] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .accessType=RAB_ACCESSTYPE_BYTE, .doesUnsignedMemoryAccess=true },
[RABBITIZER_INSTR_ID_cpu_lhu] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .accessType=RAB_ACCESSTYPE_SHORT, .doesUnsignedMemoryAccess=true },
[RABBITIZER_INSTR_ID_cpu_lwr] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true },
[RABBITIZER_INSTR_ID_cpu_lwu] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .accessType=RAB_ACCESSTYPE_WORD, .doesUnsignedMemoryAccess=true },
[RABBITIZER_INSTR_ID_cpu_sb] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .readsRt=true, .canBeLo=true, .doesDereference=true, .doesStore=true, .accessType=RAB_ACCESSTYPE_BYTE },
[RABBITIZER_INSTR_ID_cpu_sh] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .readsRt=true, .canBeLo=true, .doesDereference=true, .doesStore=true, .accessType=RAB_ACCESSTYPE_SHORT },
[RABBITIZER_INSTR_ID_cpu_swl] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .readsRt=true, .canBeLo=true, .doesDereference=true, .doesStore=true },
[RABBITIZER_INSTR_ID_cpu_sw] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .readsRt=true, .canBeLo=true, .doesDereference=true, .doesStore=true, .accessType=RAB_ACCESSTYPE_WORD },
[RABBITIZER_INSTR_ID_cpu_sdl] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .readsRt=true, .canBeLo=true, .doesDereference=true, .doesStore=true },
[RABBITIZER_INSTR_ID_cpu_sdr] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .readsRt=true, .canBeLo=true, .doesDereference=true, .doesStore=true },
[RABBITIZER_INSTR_ID_cpu_swr] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .readsRt=true, .canBeLo=true, .doesDereference=true, .doesStore=true },
[RABBITIZER_INSTR_ID_cpu_ll] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true },
[RABBITIZER_INSTR_ID_cpu_pref] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_lld] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true },
[RABBITIZER_INSTR_ID_cpu_ld] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .accessType=RAB_ACCESSTYPE_DOUBLEWORD },
[RABBITIZER_INSTR_ID_cpu_sc] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .readsRt=true, .canBeLo=true, .doesDereference=true, .doesStore=true },
[RABBITIZER_INSTR_ID_cpu_scd] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .readsRt=true, .canBeLo=true, .doesDereference=true, .doesStore=true },
[RABBITIZER_INSTR_ID_cpu_sd] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .readsRt=true, .canBeLo=true, .doesDereference=true, .doesStore=true, .accessType=RAB_ACCESSTYPE_DOUBLEWORD },
[RABBITIZER_INSTR_ID_cpu_cache] = { .operands={RAB_OPERAND_cpu_op, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .notEmitedByCompilers=true },
[RABBITIZER_INSTR_ID_cpu_lwc1] = { .operands={RAB_OPERAND_cpu_ft, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .isFloat=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .accessType=RAB_ACCESSTYPE_FLOAT },
[RABBITIZER_INSTR_ID_cpu_ldc1] = { .operands={RAB_OPERAND_cpu_ft, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .isFloat=true, .isDouble=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .accessType=RAB_ACCESSTYPE_DOUBLEFLOAT },
[RABBITIZER_INSTR_ID_cpu_swc1] = { .operands={RAB_OPERAND_cpu_ft, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .isFloat=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesStore=true, .accessType=RAB_ACCESSTYPE_FLOAT },
[RABBITIZER_INSTR_ID_cpu_sdc1] = { .operands={RAB_OPERAND_cpu_ft, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .isFloat=true, .isDouble=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesStore=true, .accessType=RAB_ACCESSTYPE_DOUBLEFLOAT },
[RABBITIZER_INSTR_ID_cpu_lwc2] = { .operands={RAB_OPERAND_cpu_cop2t, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true },
[RABBITIZER_INSTR_ID_cpu_ldc2] = { .operands={RAB_OPERAND_cpu_cop2t, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true },
[RABBITIZER_INSTR_ID_cpu_swc2] = { .operands={RAB_OPERAND_cpu_cop2t, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesStore=true },
[RABBITIZER_INSTR_ID_cpu_sdc2] = { .operands={RAB_OPERAND_cpu_cop2t, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesStore=true },
[RABBITIZER_INSTR_ID_cpu_b] = { .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .isPseudo=true },
[RABBITIZER_INSTR_ID_cpu_beqz] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .isBranch=true, .isPseudo=true },
[RABBITIZER_INSTR_ID_cpu_bnez] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .isBranch=true, .isPseudo=true },
[RABBITIZER_INSTR_ID_cpu_sll] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_srl] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_sra] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_dsll] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_dsrl] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_dsra] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_dsll32] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_dsrl32] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_dsra32] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_dsllv] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_dsrlv] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_dsrav] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_sllv] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_srlv] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_srav] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_mthi] = { .operands={RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .modifiesHI=true },
[RABBITIZER_INSTR_ID_cpu_mtlo] = { .operands={RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .modifiesLO=true },
[RABBITIZER_INSTR_ID_cpu_jr] = { .operands={RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .isJump=true },
[RABBITIZER_INSTR_ID_cpu_jalr] = { .operands={RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .isJump=true, .modifiesRd=true, .readsRs=true, .doesLink=true },
[RABBITIZER_INSTR_ID_cpu_jalr_rd] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .isJump=true, .modifiesRd=true, .readsRs=true, .doesLink=true },
[RABBITIZER_INSTR_ID_cpu_mfhi] = { .operands={RAB_OPERAND_cpu_rd}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsHI=true },
[RABBITIZER_INSTR_ID_cpu_mflo] = { .operands={RAB_OPERAND_cpu_rd}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsLO=true },
[RABBITIZER_INSTR_ID_cpu_movz] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_movn] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_div] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .readsRt=true, .readsRd=true, .modifiesHI=true, .modifiesLO=true },
[RABBITIZER_INSTR_ID_cpu_divu] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .readsRt=true, .readsRd=true, .modifiesHI=true, .modifiesLO=true },
[RABBITIZER_INSTR_ID_cpu_sn64_div] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .readsRt=true, .modifiesHI=true, .modifiesLO=true },
[RABBITIZER_INSTR_ID_cpu_sn64_divu] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .readsRt=true, .modifiesHI=true, .modifiesLO=true },
[RABBITIZER_INSTR_ID_cpu_ddiv] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .readsRt=true, .readsRd=true, .modifiesHI=true, .modifiesLO=true },
[RABBITIZER_INSTR_ID_cpu_ddivu] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .readsRt=true, .readsRd=true, .modifiesHI=true, .modifiesLO=true },
[RABBITIZER_INSTR_ID_cpu_add] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true, .notEmitedByCompilers=true },
[RABBITIZER_INSTR_ID_cpu_addu] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true, .maybeIsMove=true },
[RABBITIZER_INSTR_ID_cpu_sub] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_subu] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_and] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_or] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .maybeIsMove=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_xor] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_nor] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_slt] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_sltu] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_dadd] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_daddu] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true, .maybeIsMove=true },
[RABBITIZER_INSTR_ID_cpu_dsub] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_dsubu] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_syscall] = { .operands={RAB_OPERAND_cpu_code}, .instrType=RABBITIZER_INSTR_TYPE_R },
[RABBITIZER_INSTR_ID_cpu_break] = { .operands={RAB_OPERAND_cpu_code}, .instrType=RABBITIZER_INSTR_TYPE_R },
[RABBITIZER_INSTR_ID_cpu_sync] = { .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_R },
[RABBITIZER_INSTR_ID_cpu_mult] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .readsRt=true, .modifiesHI=true, .modifiesLO=true },
[RABBITIZER_INSTR_ID_cpu_multu] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .readsRt=true, .modifiesHI=true, .modifiesLO=true },
[RABBITIZER_INSTR_ID_cpu_dmult] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .readsRt=true, .modifiesHI=true, .modifiesLO=true },
[RABBITIZER_INSTR_ID_cpu_dmultu] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .readsRt=true, .modifiesHI=true, .modifiesLO=true },
[RABBITIZER_INSTR_ID_cpu_tge] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_code_lower}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .readsRt=true, .isTrap=true },
[RABBITIZER_INSTR_ID_cpu_tgeu] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_code_lower}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .readsRt=true, .isTrap=true },
[RABBITIZER_INSTR_ID_cpu_tlt] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_code_lower}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .readsRt=true, .isTrap=true },
[RABBITIZER_INSTR_ID_cpu_tltu] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_code_lower}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .readsRt=true, .isTrap=true },
[RABBITIZER_INSTR_ID_cpu_teq] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_code_lower}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .readsRt=true, .isTrap=true },
[RABBITIZER_INSTR_ID_cpu_tne] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_code_lower}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .readsRt=true, .isTrap=true },
[RABBITIZER_INSTR_ID_cpu_nop] = { .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_R, .isPseudo=true },
[RABBITIZER_INSTR_ID_cpu_move] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .maybeIsMove=true, .isPseudo=true },
[RABBITIZER_INSTR_ID_cpu_not] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .isPseudo=true },
[RABBITIZER_INSTR_ID_cpu_negu] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRt=true, .isPseudo=true },
[RABBITIZER_INSTR_ID_cpu_bltz] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_bgez] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_bltzl] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .isBranchLikely=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_bgezl] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .isBranchLikely=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_tgei] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isTrap=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_tgeiu] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isTrap=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_tlti] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isTrap=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_tltiu] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isTrap=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_teqi] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isTrap=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_tnei] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isTrap=true, .readsRs=true },
[RABBITIZER_INSTR_ID_cpu_bltzal] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .readsRs=true, .doesLink=true },
[RABBITIZER_INSTR_ID_cpu_bgezal] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .readsRs=true, .doesLink=true },
[RABBITIZER_INSTR_ID_cpu_bltzall] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .isBranchLikely=true, .readsRs=true, .doesLink=true },
[RABBITIZER_INSTR_ID_cpu_bgezall] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .isBranchLikely=true, .readsRs=true, .doesLink=true },
[RABBITIZER_INSTR_ID_cpu_bal] = { .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .doesLink=true, .isPseudo=true },
[RABBITIZER_INSTR_ID_cpu_mfc0] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .modifiesRt=true, .notEmitedByCompilers=true },
[RABBITIZER_INSTR_ID_cpu_dmfc0] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .modifiesRt=true },
[RABBITIZER_INSTR_ID_cpu_cfc0] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .modifiesRt=true },
[RABBITIZER_INSTR_ID_cpu_mtc0] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .readsRt=true, .notEmitedByCompilers=true },
[RABBITIZER_INSTR_ID_cpu_dmtc0] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_ctc0] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_bc0f] = { .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isBranch=true },
[RABBITIZER_INSTR_ID_cpu_bc0t] = { .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isBranch=true },
[RABBITIZER_INSTR_ID_cpu_bc0fl] = { .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isBranch=true, .isBranchLikely=true },
[RABBITIZER_INSTR_ID_cpu_bc0tl] = { .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isBranch=true, .isBranchLikely=true },
[RABBITIZER_INSTR_ID_cpu_tlbr] = { .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .notEmitedByCompilers=true },
[RABBITIZER_INSTR_ID_cpu_tlbwi] = { .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .notEmitedByCompilers=true },
[RABBITIZER_INSTR_ID_cpu_tlbwr] = { .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN },
[RABBITIZER_INSTR_ID_cpu_tlbp] = { .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .notEmitedByCompilers=true },
[RABBITIZER_INSTR_ID_cpu_eret] = { .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .notEmitedByCompilers=true },
[RABBITIZER_INSTR_ID_cpu_mfc1] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .modifiesRt=true },
[RABBITIZER_INSTR_ID_cpu_dmfc1] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .modifiesRt=true },
[RABBITIZER_INSTR_ID_cpu_mtc1] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_dmtc1] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_cfc1] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop1cs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .modifiesRt=true },
[RABBITIZER_INSTR_ID_cpu_ctc1] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop1cs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .readsRt=true },
[RABBITIZER_INSTR_ID_cpu_bc1f] = { .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isBranch=true },
[RABBITIZER_INSTR_ID_cpu_bc1t] = { .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isBranch=true },
[RABBITIZER_INSTR_ID_cpu_bc1fl] = { .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isBranch=true, .isBranchLikely=true },
[RABBITIZER_INSTR_ID_cpu_bc1tl] = { .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isBranch=true, .isBranchLikely=true },
[RABBITIZER_INSTR_ID_cpu_add_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_sub_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_mul_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_div_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_sqrt_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_abs_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_mov_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_neg_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_round_l_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_trunc_l_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_ceil_l_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_floor_l_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_round_w_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_trunc_w_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_ceil_w_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_floor_w_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_cvt_d_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .isDouble=true },
[RABBITIZER_INSTR_ID_cpu_cvt_w_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_cvt_l_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_f_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_un_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_eq_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_ueq_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_olt_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_ult_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_ole_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_ule_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_sf_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_ngle_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_seq_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_ngl_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_lt_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_nge_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_le_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_ngt_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_add_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_sub_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_mul_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_div_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_sqrt_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_abs_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_mov_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_neg_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_round_l_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_trunc_l_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_ceil_l_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_floor_l_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_round_w_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_trunc_w_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_ceil_w_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_floor_w_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_cvt_s_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .isDouble=true },
[RABBITIZER_INSTR_ID_cpu_cvt_w_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .isDouble=true },
[RABBITIZER_INSTR_ID_cpu_cvt_l_d] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .isDouble=true },
[RABBITIZER_INSTR_ID_cpu_c_f_d] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_un_d] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_eq_d] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_ueq_d] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_olt_d] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_ult_d] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_ole_d] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_ule_d] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_df_d] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_ngle_d] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_deq_d] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_ngl_d] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_lt_d] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_nge_d] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_le_d] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_c_ngt_d] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_cvt_s_w] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_cvt_d_w] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .isDouble=true },
[RABBITIZER_INSTR_ID_cpu_cvt_s_l] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true },
[RABBITIZER_INSTR_ID_cpu_cvt_d_l] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .isDouble=true },
[RABBITIZER_INSTR_ID_cpu_USERDEF_00] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_01] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_02] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_03] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_04] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_05] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_06] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_07] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_08] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_09] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_10] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_11] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_12] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_13] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_14] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_15] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_16] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_17] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_18] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_USERDEF_19] = { .operands={0} },
[RABBITIZER_INSTR_ID_cpu_MAX] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_INVALID] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_mfc2] = { .operands={RAB_OPERAND_rsp_cop2t, RAB_OPERAND_rsp_vs_index} },
[RABBITIZER_INSTR_ID_rsp_mtc2] = { .operands={RAB_OPERAND_rsp_cop2t, RAB_OPERAND_rsp_vs_index} },
[RABBITIZER_INSTR_ID_rsp_cfc2] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_rsp_cop2cd}, .modifiesRt=true },
[RABBITIZER_INSTR_ID_rsp_ctc2] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_rsp_cop2cd}, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_vmulf] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vmulu] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vrndp] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vmulq] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vmudl] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vmudm] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vmudn] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vmudh] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vmacf] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vmacu] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vrndn] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vmacq] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vmadl] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vmadm] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vmadn] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vmadh] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vadd] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vsub] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vabs] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vaddc] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vsubc] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vsar] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vand] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vnand] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vor] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vnor] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vxor] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vnxor] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vlt] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_veq] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vne] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vge] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vcl] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vch] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vcr] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vmrg] = { .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vrcp] = { .operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vrcpl] = { .operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vrcph] = { .operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vmov] = { .operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vrsq] = { .operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vrsql] = { .operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vrsqh] = { .operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh} },
[RABBITIZER_INSTR_ID_rsp_vnop] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_lbv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_lsv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_llv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_ldv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_lqv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_lrv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_lpv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_luv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_lhv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_lfv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_ltv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_sbv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_ssv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_slv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_sdv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_sqv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_srv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_spv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_suv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_shv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_sfv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_stv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_swv] = { .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_j] = { .operands={RAB_OPERAND_cpu_label}, .instrType=RABBITIZER_INSTR_TYPE_J, .isJump=true, .isJumpWithAddress=true },
[RABBITIZER_INSTR_ID_rsp_jal] = { .operands={RAB_OPERAND_cpu_label}, .instrType=RABBITIZER_INSTR_TYPE_J, .isJump=true, .isJumpWithAddress=true, .doesLink=true },
[RABBITIZER_INSTR_ID_rsp_beq] = { .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .readsRs=true, .readsRt=true, .isBranch=true },
[RABBITIZER_INSTR_ID_rsp_bne] = { .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .readsRs=true, .readsRt=true, .isBranch=true },
[RABBITIZER_INSTR_ID_rsp_blez] = { .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .readsRs=true, .isBranch=true },
[RABBITIZER_INSTR_ID_rsp_bgtz] = { .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .readsRs=true, .isBranch=true },
[RABBITIZER_INSTR_ID_rsp_addi] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .notEmitedByCompilers=true, .canBeLo=true },
[RABBITIZER_INSTR_ID_rsp_addiu] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true },
[RABBITIZER_INSTR_ID_rsp_slti] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_sltiu] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_andi] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .isUnsigned=true, .modifiesRt=true, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_ori] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .isUnsigned=true, .modifiesRt=true, .readsRs=true, .canBeLo=true },
[RABBITIZER_INSTR_ID_rsp_xori] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .isUnsigned=true, .modifiesRt=true, .readsRs=true },
[RABBITIZER_INSTR_ID_rsp_lui] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .isUnsigned=true, .modifiesRt=true, .canBeHi=true },
[RABBITIZER_INSTR_ID_rsp_lb] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .accessType=RAB_ACCESSTYPE_BYTE },
[RABBITIZER_INSTR_ID_rsp_lh] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .accessType=RAB_ACCESSTYPE_SHORT },
[RABBITIZER_INSTR_ID_rsp_lw] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .accessType=RAB_ACCESSTYPE_WORD },
[RABBITIZER_INSTR_ID_rsp_lbu] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .accessType=RAB_ACCESSTYPE_BYTE, .doesUnsignedMemoryAccess=true },
[RABBITIZER_INSTR_ID_rsp_lhu] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .accessType=RAB_ACCESSTYPE_SHORT, .doesUnsignedMemoryAccess=true },
[RABBITIZER_INSTR_ID_rsp_sb] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .readsRt=true, .canBeLo=true, .doesDereference=true, .doesStore=true, .accessType=RAB_ACCESSTYPE_BYTE },
[RABBITIZER_INSTR_ID_rsp_sh] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .readsRt=true, .canBeLo=true, .doesDereference=true, .doesStore=true, .accessType=RAB_ACCESSTYPE_SHORT },
[RABBITIZER_INSTR_ID_rsp_sw] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .readsRt=true, .canBeLo=true, .doesDereference=true, .doesStore=true, .accessType=RAB_ACCESSTYPE_WORD },
[RABBITIZER_INSTR_ID_rsp_pref] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_b] = { .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true },
[RABBITIZER_INSTR_ID_rsp_beqz] = { .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .readsRs=true, .isBranch=true },
[RABBITIZER_INSTR_ID_rsp_bnez] = { .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .readsRs=true, .isBranch=true },
[RABBITIZER_INSTR_ID_rsp_sll] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_srl] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_sra] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_sllv] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_srlv] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_srav] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_jr] = { .operands={RAB_OPERAND_rsp_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .readsRs=true, .isJump=true },
[RABBITIZER_INSTR_ID_rsp_jalr] = { .operands={RAB_OPERAND_rsp_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .isJump=true, .modifiesRd=true, .readsRs=true, .doesLink=true },
[RABBITIZER_INSTR_ID_rsp_jalr_rd] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .isJump=true, .modifiesRd=true, .readsRs=true, .doesLink=true },
[RABBITIZER_INSTR_ID_rsp_movz] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_movn] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_add] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true, .notEmitedByCompilers=true },
[RABBITIZER_INSTR_ID_rsp_addu] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_sub] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_subu] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_and] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_or] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_xor] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_nor] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_slt] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_sltu] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_rsp_break] = { .operands={RAB_OPERAND_cpu_code}, .instrType=RABBITIZER_INSTR_TYPE_R },
[RABBITIZER_INSTR_ID_rsp_nop] = { .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_R, .isPseudo=true },
[RABBITIZER_INSTR_ID_rsp_move] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .isPseudo=true },
[RABBITIZER_INSTR_ID_rsp_not] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .isPseudo=true },
[RABBITIZER_INSTR_ID_rsp_negu] = { .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRt=true, .isPseudo=true },
[RABBITIZER_INSTR_ID_rsp_bltz] = { .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .readsRs=true, .isBranch=true },
[RABBITIZER_INSTR_ID_rsp_bgez] = { .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .readsRs=true, .isBranch=true },
[RABBITIZER_INSTR_ID_rsp_bltzal] = { .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .readsRs=true, .isBranch=true, .doesLink=true },
[RABBITIZER_INSTR_ID_rsp_bgezal] = { .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .readsRs=true, .isBranch=true, .doesLink=true },
[RABBITIZER_INSTR_ID_rsp_bal] = { .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .doesLink=true, .isPseudo=true },
[RABBITIZER_INSTR_ID_rsp_mfc0] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_cop0d}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .modifiesRt=true, .notEmitedByCompilers=true },
[RABBITIZER_INSTR_ID_rsp_mtc0] = { .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_cop0d}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .readsRt=true, .notEmitedByCompilers=true },
[RABBITIZER_INSTR_ID_rsp_USERDEF_00] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_01] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_02] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_03] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_04] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_05] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_06] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_07] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_08] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_09] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_10] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_11] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_12] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_13] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_14] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_15] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_16] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_17] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_18] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_USERDEF_19] = { .operands={0} },
[RABBITIZER_INSTR_ID_rsp_MAX] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_INVALID] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN },
[RABBITIZER_INSTR_ID_r5900_lq] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true },
[RABBITIZER_INSTR_ID_r5900_sq] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true, .readsRt=true, .canBeLo=true, .doesDereference=true, .doesStore=true },
[RABBITIZER_INSTR_ID_r5900_lqc2] = { .operands={RAB_OPERAND_r5900_vft, RAB_OPERAND_cpu_immediate_base}, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesLoad=true },
[RABBITIZER_INSTR_ID_r5900_sqc2] = { .operands={RAB_OPERAND_r5900_vft, RAB_OPERAND_cpu_immediate_base}, .readsRs=true, .canBeLo=true, .doesDereference=true, .doesStore=true },
[RABBITIZER_INSTR_ID_r5900_sync_p] = { .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_R },
[RABBITIZER_INSTR_ID_r5900_mult] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_mfsa] = { .operands={RAB_OPERAND_cpu_rd}, .modifiesRd=true },
[RABBITIZER_INSTR_ID_r5900_mtsa] = { .operands={RAB_OPERAND_cpu_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_r5900_mtsab] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .readsRs=true },
[RABBITIZER_INSTR_ID_r5900_mtsah] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .readsRs=true },
[RABBITIZER_INSTR_ID_r5900_madd] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_maddu] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_plzcw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs}, .modifiesRd=true, .readsRs=true },
[RABBITIZER_INSTR_ID_r5900_mfhi1] = { .operands={RAB_OPERAND_cpu_rd}, .modifiesRd=true },
[RABBITIZER_INSTR_ID_r5900_mthi1] = { .operands={RAB_OPERAND_cpu_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_r5900_mflo1] = { .operands={RAB_OPERAND_cpu_rd}, .readsRd=true },
[RABBITIZER_INSTR_ID_r5900_mtlo1] = { .operands={RAB_OPERAND_cpu_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_r5900_mult1] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_multu1] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_div1] = { .operands={RAB_OPERAND_cpu_zero, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_divu1] = { .operands={RAB_OPERAND_cpu_zero, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_madd1] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_maddu1] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pmfhl] = { .operands={RAB_OPERAND_cpu_rd}, .modifiesRd=true },
[RABBITIZER_INSTR_ID_r5900_pmthl] = { .operands={RAB_OPERAND_cpu_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_r5900_psllh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psrlh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psrah] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psllw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psrlw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psraw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_paddw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psubw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pcgtw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pmaxw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_paddh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psubh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pcgth] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pmaxh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_paddb] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psubb] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pcgtb] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_paddsw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psubsw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pextlw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_ppacw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_paddsh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psubsh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pextlh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_ppach] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_paddsb] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psubsb] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pextlb] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_ppacb] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pext5] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_ppac5] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pabsw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pceqw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pminw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_padsbh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pabsh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pceqh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pminh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pceqb] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_padduw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psubuw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pextuw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_padduh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psubuh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pextuh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_paddub] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psubub] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pextub] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_qfsrv] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pmaddw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psllvw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psrlvw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pmsubw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pmfhi] = { .operands={RAB_OPERAND_cpu_rd}, .modifiesRd=true },
[RABBITIZER_INSTR_ID_r5900_pmflo] = { .operands={RAB_OPERAND_cpu_rd}, .modifiesRd=true },
[RABBITIZER_INSTR_ID_r5900_pinth] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pmultw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pdivw] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pcpyld] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pmaddh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_phmadh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pand] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pxor] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pmsubh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_phmsbh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pexeh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_prevh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pmulth] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pdivbw] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pexew] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_prot3w] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pmadduw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_psravw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pmthi] = { .operands={RAB_OPERAND_cpu_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_r5900_pmtlo] = { .operands={RAB_OPERAND_cpu_rs}, .readsRs=true },
[RABBITIZER_INSTR_ID_r5900_pinteh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pmultuw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pdivuw] = { .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pcpyud] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_por] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pnor] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRs=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pexch] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pcpyh] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_pexcw] = { .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_ei] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_di] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_c1__sqrt_s] = { .operands={RAB_OPERAND_cpu_copraw} },
[RABBITIZER_INSTR_ID_r5900_rsqrt_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_adda_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_suba_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_mula_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_madd_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_msub_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_madda_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_msuba_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_max_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_min_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_trunc_w_s] = { .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_c_lt_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_c_le_s] = { .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_qmfc2] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_r5900_vfs}, .modifiesRt=true },
[RABBITIZER_INSTR_ID_r5900_cfc2] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_r5900_vis}, .modifiesRt=true },
[RABBITIZER_INSTR_ID_r5900_qmtc2] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_r5900_vfs}, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_ctc2] = { .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_r5900_vis}, .readsRt=true },
[RABBITIZER_INSTR_ID_r5900_bc2f] = { .operands={RAB_OPERAND_cpu_branch_target_label}, .isBranch=true },
[RABBITIZER_INSTR_ID_r5900_bc2t] = { .operands={RAB_OPERAND_cpu_branch_target_label}, .isBranch=true },
[RABBITIZER_INSTR_ID_r5900_bc2fl] = { .operands={RAB_OPERAND_cpu_branch_target_label}, .isBranch=true, .isBranchLikely=true },
[RABBITIZER_INSTR_ID_r5900_bc2tl] = { .operands={RAB_OPERAND_cpu_branch_target_label}, .isBranch=true, .isBranchLikely=true },
[RABBITIZER_INSTR_ID_r5900_vaddx] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vaddy] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vaddz] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vaddw] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vsubx] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vsuby] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vsubz] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vsubw] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmaddx] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmaddy] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmaddz] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmaddw] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmsubx] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmsuby] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmsubz] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmsubw] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmaxx] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmaxy] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmaxz] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmaxw] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vminix] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vminiy] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vminiz] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vminiw] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmulx] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmuly] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmulz] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmulw] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmulq] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmaxi] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmuli] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vminii] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vaddq] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmaddq] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vaddi] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmaddi] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vsubq] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmsubq] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vsubi] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmsubi] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vadd] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmadd] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmul] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmax] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vsub] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmsub] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vopmsub] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmini] = { .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_viadd] = { .operands={RAB_OPERAND_r5900_vid, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_vit} },
[RABBITIZER_INSTR_ID_r5900_visub] = { .operands={RAB_OPERAND_r5900_vid, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_vit} },
[RABBITIZER_INSTR_ID_r5900_viaddi] = { .operands={RAB_OPERAND_r5900_vit, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_immediate5} },
[RABBITIZER_INSTR_ID_r5900_viand] = { .operands={RAB_OPERAND_r5900_vid, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_vit} },
[RABBITIZER_INSTR_ID_r5900_vior] = { .operands={RAB_OPERAND_r5900_vid, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_vit} },
[RABBITIZER_INSTR_ID_r5900_vcallms] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_vcallmsr] = { .operands={RAB_OPERAND_r5900_vis} },
[RABBITIZER_INSTR_ID_r5900_vaddax] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vadday] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vaddaz] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vaddaw] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vsubax] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vsubay] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vsubaz] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vsubaw] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmaddax] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw },
[RABBITIZER_INSTR_ID_r5900_vmadday] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw },
[RABBITIZER_INSTR_ID_r5900_vmaddaz] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw },
[RABBITIZER_INSTR_ID_r5900_vmaddaw] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw },
[RABBITIZER_INSTR_ID_r5900_vmsubax] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmsubay] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmsubaz] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmsubaw] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vitof0] = { .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vitof4] = { .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vitof12] = { .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vitof15] = { .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vftoi0] = { .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vftoi4] = { .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vftoi12] = { .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vftoi15] = { .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmulax] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw },
[RABBITIZER_INSTR_ID_r5900_vmulay] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw },
[RABBITIZER_INSTR_ID_r5900_vmulaz] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw },
[RABBITIZER_INSTR_ID_r5900_vmulaw] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw },
[RABBITIZER_INSTR_ID_r5900_vmulaq] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw },
[RABBITIZER_INSTR_ID_r5900_vabs] = { .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmulai] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw },
[RABBITIZER_INSTR_ID_r5900_vclipw] = { .operands={RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vaddaq] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmaddaq] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vaddai] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmaddai] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vsubaq] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmsubaq] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vsubai] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmsubai] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vadda] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmadda] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmula] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw },
[RABBITIZER_INSTR_ID_r5900_vsuba] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmsuba] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vopmula] = { .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vnop] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_vmove] = { .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vmr32] = { .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vlqi] = { .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vis_postincr}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vsqi] = { .operands={RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vit_postincr}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vlqd] = { .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vis_predecr}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vsqd] = { .operands={RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vit_predecr}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vdiv] = { .operands={RAB_OPERAND_r5900_Q, RAB_OPERAND_r5900_vfsl, RAB_OPERAND_r5900_vftm} },
[RABBITIZER_INSTR_ID_r5900_vsqrt] = { .operands={RAB_OPERAND_r5900_Q, RAB_OPERAND_r5900_vftm} },
[RABBITIZER_INSTR_ID_r5900_vrsqrt] = { .operands={RAB_OPERAND_r5900_Q, RAB_OPERAND_r5900_vfsl,RAB_OPERAND_r5900_vftm} },
[RABBITIZER_INSTR_ID_r5900_vwaitq] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_vmtir] = { .operands={RAB_OPERAND_r5900_vit, RAB_OPERAND_r5900_vfsl} },
[RABBITIZER_INSTR_ID_r5900_vmfir] = { .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vis}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vilwr] = { .operands={RAB_OPERAND_r5900_vit, RAB_OPERAND_r5900_vis}, .isFloat=true, .doesDereference=true, .doesLoad=true },
[RABBITIZER_INSTR_ID_r5900_viswr] = { .operands={RAB_OPERAND_r5900_vit, RAB_OPERAND_r5900_vis}, .isFloat=true, .doesDereference=true, .doesStore=true },
[RABBITIZER_INSTR_ID_r5900_vrnext] = { .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_R}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vrget] = { .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_R}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true },
[RABBITIZER_INSTR_ID_r5900_vrinit] = { .operands={RAB_OPERAND_r5900_R, RAB_OPERAND_r5900_vfsl} },
[RABBITIZER_INSTR_ID_r5900_vrxor] = { .operands={RAB_OPERAND_r5900_R, RAB_OPERAND_r5900_vfsl} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_00] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_01] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_02] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_03] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_04] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_05] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_06] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_07] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_08] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_09] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_10] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_11] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_12] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_13] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_14] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_15] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_16] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_17] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_18] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_USERDEF_19] = { .operands={0} },
[RABBITIZER_INSTR_ID_r5900_MAX] = { .operands={0} },
};
#endif

View File

@ -0,0 +1,15 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, ...) [RABBITIZER_INSTR_ID_##prefix##_##name] = { __VA_ARGS__ },
#define RABBITIZER_DEF_INSTR_ID_ALTNAME(prefix, caseBits, name, altname, ...) RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, __VA_ARGS__)
const RabbitizerInstrDescriptor RabbitizerInstrDescriptor_Descriptors[] = {
#include "instructions/instr_id/RabbitizerInstrId_cpu.inc"
#include "instructions/instr_id/RabbitizerInstrId_rsp.inc"
#include "instructions/instr_id/RabbitizerInstrId_r5900.inc"
};
#undef RABBITIZER_DEF_INSTR_ID
#undef RABBITIZER_DEF_INSTR_ID_ALTNAME

View File

@ -0,0 +1,692 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Automatically generated. DO NOT MODIFY */
#ifndef InstrId_Names_array_table_h_automatic
#define InstrId_Names_array_table_h_automatic
const char *RabbitizerInstrId_Names[] = {
[RABBITIZER_INSTR_ID_cpu_INVALID] = "INVALID",
[RABBITIZER_INSTR_ID_cpu_j] = "j",
[RABBITIZER_INSTR_ID_cpu_jal] = "jal",
[RABBITIZER_INSTR_ID_cpu_beq] = "beq",
[RABBITIZER_INSTR_ID_cpu_bne] = "bne",
[RABBITIZER_INSTR_ID_cpu_beql] = "beql",
[RABBITIZER_INSTR_ID_cpu_bnel] = "bnel",
[RABBITIZER_INSTR_ID_cpu_blez] = "blez",
[RABBITIZER_INSTR_ID_cpu_blezl] = "blezl",
[RABBITIZER_INSTR_ID_cpu_bgtz] = "bgtz",
[RABBITIZER_INSTR_ID_cpu_bgtzl] = "bgtzl",
[RABBITIZER_INSTR_ID_cpu_addi] = "addi",
[RABBITIZER_INSTR_ID_cpu_addiu] = "addiu",
[RABBITIZER_INSTR_ID_cpu_slti] = "slti",
[RABBITIZER_INSTR_ID_cpu_sltiu] = "sltiu",
[RABBITIZER_INSTR_ID_cpu_andi] = "andi",
[RABBITIZER_INSTR_ID_cpu_ori] = "ori",
[RABBITIZER_INSTR_ID_cpu_xori] = "xori",
[RABBITIZER_INSTR_ID_cpu_daddi] = "daddi",
[RABBITIZER_INSTR_ID_cpu_daddiu] = "daddiu",
[RABBITIZER_INSTR_ID_cpu_lui] = "lui",
[RABBITIZER_INSTR_ID_cpu_ldl] = "ldl",
[RABBITIZER_INSTR_ID_cpu_ldr] = "ldr",
[RABBITIZER_INSTR_ID_cpu_lb] = "lb",
[RABBITIZER_INSTR_ID_cpu_lh] = "lh",
[RABBITIZER_INSTR_ID_cpu_lwl] = "lwl",
[RABBITIZER_INSTR_ID_cpu_lw] = "lw",
[RABBITIZER_INSTR_ID_cpu_lbu] = "lbu",
[RABBITIZER_INSTR_ID_cpu_lhu] = "lhu",
[RABBITIZER_INSTR_ID_cpu_lwr] = "lwr",
[RABBITIZER_INSTR_ID_cpu_lwu] = "lwu",
[RABBITIZER_INSTR_ID_cpu_sb] = "sb",
[RABBITIZER_INSTR_ID_cpu_sh] = "sh",
[RABBITIZER_INSTR_ID_cpu_swl] = "swl",
[RABBITIZER_INSTR_ID_cpu_sw] = "sw",
[RABBITIZER_INSTR_ID_cpu_sdl] = "sdl",
[RABBITIZER_INSTR_ID_cpu_sdr] = "sdr",
[RABBITIZER_INSTR_ID_cpu_swr] = "swr",
[RABBITIZER_INSTR_ID_cpu_ll] = "ll",
[RABBITIZER_INSTR_ID_cpu_pref] = "pref",
[RABBITIZER_INSTR_ID_cpu_lld] = "lld",
[RABBITIZER_INSTR_ID_cpu_ld] = "ld",
[RABBITIZER_INSTR_ID_cpu_sc] = "sc",
[RABBITIZER_INSTR_ID_cpu_scd] = "scd",
[RABBITIZER_INSTR_ID_cpu_sd] = "sd",
[RABBITIZER_INSTR_ID_cpu_cache] = "cache",
[RABBITIZER_INSTR_ID_cpu_lwc1] = "lwc1",
[RABBITIZER_INSTR_ID_cpu_ldc1] = "ldc1",
[RABBITIZER_INSTR_ID_cpu_swc1] = "swc1",
[RABBITIZER_INSTR_ID_cpu_sdc1] = "sdc1",
[RABBITIZER_INSTR_ID_cpu_lwc2] = "lwc2",
[RABBITIZER_INSTR_ID_cpu_ldc2] = "ldc2",
[RABBITIZER_INSTR_ID_cpu_swc2] = "swc2",
[RABBITIZER_INSTR_ID_cpu_sdc2] = "sdc2",
[RABBITIZER_INSTR_ID_cpu_b] = "b",
[RABBITIZER_INSTR_ID_cpu_beqz] = "beqz",
[RABBITIZER_INSTR_ID_cpu_bnez] = "bnez",
[RABBITIZER_INSTR_ID_cpu_sll] = "sll",
[RABBITIZER_INSTR_ID_cpu_srl] = "srl",
[RABBITIZER_INSTR_ID_cpu_sra] = "sra",
[RABBITIZER_INSTR_ID_cpu_dsll] = "dsll",
[RABBITIZER_INSTR_ID_cpu_dsrl] = "dsrl",
[RABBITIZER_INSTR_ID_cpu_dsra] = "dsra",
[RABBITIZER_INSTR_ID_cpu_dsll32] = "dsll32",
[RABBITIZER_INSTR_ID_cpu_dsrl32] = "dsrl32",
[RABBITIZER_INSTR_ID_cpu_dsra32] = "dsra32",
[RABBITIZER_INSTR_ID_cpu_dsllv] = "dsllv",
[RABBITIZER_INSTR_ID_cpu_dsrlv] = "dsrlv",
[RABBITIZER_INSTR_ID_cpu_dsrav] = "dsrav",
[RABBITIZER_INSTR_ID_cpu_sllv] = "sllv",
[RABBITIZER_INSTR_ID_cpu_srlv] = "srlv",
[RABBITIZER_INSTR_ID_cpu_srav] = "srav",
[RABBITIZER_INSTR_ID_cpu_mthi] = "mthi",
[RABBITIZER_INSTR_ID_cpu_mtlo] = "mtlo",
[RABBITIZER_INSTR_ID_cpu_jr] = "jr",
[RABBITIZER_INSTR_ID_cpu_jalr] = "jalr",
[RABBITIZER_INSTR_ID_cpu_jalr_rd] = "jalr",
[RABBITIZER_INSTR_ID_cpu_mfhi] = "mfhi",
[RABBITIZER_INSTR_ID_cpu_mflo] = "mflo",
[RABBITIZER_INSTR_ID_cpu_movz] = "movz",
[RABBITIZER_INSTR_ID_cpu_movn] = "movn",
[RABBITIZER_INSTR_ID_cpu_div] = "div",
[RABBITIZER_INSTR_ID_cpu_divu] = "divu",
[RABBITIZER_INSTR_ID_cpu_sn64_div] = "div",
[RABBITIZER_INSTR_ID_cpu_sn64_divu] = "divu",
[RABBITIZER_INSTR_ID_cpu_ddiv] = "ddiv",
[RABBITIZER_INSTR_ID_cpu_ddivu] = "ddivu",
[RABBITIZER_INSTR_ID_cpu_add] = "add",
[RABBITIZER_INSTR_ID_cpu_addu] = "addu",
[RABBITIZER_INSTR_ID_cpu_sub] = "sub",
[RABBITIZER_INSTR_ID_cpu_subu] = "subu",
[RABBITIZER_INSTR_ID_cpu_and] = "and",
[RABBITIZER_INSTR_ID_cpu_or] = "or",
[RABBITIZER_INSTR_ID_cpu_xor] = "xor",
[RABBITIZER_INSTR_ID_cpu_nor] = "nor",
[RABBITIZER_INSTR_ID_cpu_slt] = "slt",
[RABBITIZER_INSTR_ID_cpu_sltu] = "sltu",
[RABBITIZER_INSTR_ID_cpu_dadd] = "dadd",
[RABBITIZER_INSTR_ID_cpu_daddu] = "daddu",
[RABBITIZER_INSTR_ID_cpu_dsub] = "dsub",
[RABBITIZER_INSTR_ID_cpu_dsubu] = "dsubu",
[RABBITIZER_INSTR_ID_cpu_syscall] = "syscall",
[RABBITIZER_INSTR_ID_cpu_break] = "break",
[RABBITIZER_INSTR_ID_cpu_sync] = "sync",
[RABBITIZER_INSTR_ID_cpu_mult] = "mult",
[RABBITIZER_INSTR_ID_cpu_multu] = "multu",
[RABBITIZER_INSTR_ID_cpu_dmult] = "dmult",
[RABBITIZER_INSTR_ID_cpu_dmultu] = "dmultu",
[RABBITIZER_INSTR_ID_cpu_tge] = "tge",
[RABBITIZER_INSTR_ID_cpu_tgeu] = "tgeu",
[RABBITIZER_INSTR_ID_cpu_tlt] = "tlt",
[RABBITIZER_INSTR_ID_cpu_tltu] = "tltu",
[RABBITIZER_INSTR_ID_cpu_teq] = "teq",
[RABBITIZER_INSTR_ID_cpu_tne] = "tne",
[RABBITIZER_INSTR_ID_cpu_nop] = "nop",
[RABBITIZER_INSTR_ID_cpu_move] = "move",
[RABBITIZER_INSTR_ID_cpu_not] = "not",
[RABBITIZER_INSTR_ID_cpu_negu] = "negu",
[RABBITIZER_INSTR_ID_cpu_bltz] = "bltz",
[RABBITIZER_INSTR_ID_cpu_bgez] = "bgez",
[RABBITIZER_INSTR_ID_cpu_bltzl] = "bltzl",
[RABBITIZER_INSTR_ID_cpu_bgezl] = "bgezl",
[RABBITIZER_INSTR_ID_cpu_tgei] = "tgei",
[RABBITIZER_INSTR_ID_cpu_tgeiu] = "tgeiu",
[RABBITIZER_INSTR_ID_cpu_tlti] = "tlti",
[RABBITIZER_INSTR_ID_cpu_tltiu] = "tltiu",
[RABBITIZER_INSTR_ID_cpu_teqi] = "teqi",
[RABBITIZER_INSTR_ID_cpu_tnei] = "tnei",
[RABBITIZER_INSTR_ID_cpu_bltzal] = "bltzal",
[RABBITIZER_INSTR_ID_cpu_bgezal] = "bgezal",
[RABBITIZER_INSTR_ID_cpu_bltzall] = "bltzall",
[RABBITIZER_INSTR_ID_cpu_bgezall] = "bgezall",
[RABBITIZER_INSTR_ID_cpu_bal] = "bal",
[RABBITIZER_INSTR_ID_cpu_mfc0] = "mfc0",
[RABBITIZER_INSTR_ID_cpu_dmfc0] = "dmfc0",
[RABBITIZER_INSTR_ID_cpu_cfc0] = "cfc0",
[RABBITIZER_INSTR_ID_cpu_mtc0] = "mtc0",
[RABBITIZER_INSTR_ID_cpu_dmtc0] = "dmtc0",
[RABBITIZER_INSTR_ID_cpu_ctc0] = "ctc0",
[RABBITIZER_INSTR_ID_cpu_bc0f] = "bc0f",
[RABBITIZER_INSTR_ID_cpu_bc0t] = "bc0t",
[RABBITIZER_INSTR_ID_cpu_bc0fl] = "bc0fl",
[RABBITIZER_INSTR_ID_cpu_bc0tl] = "bc0tl",
[RABBITIZER_INSTR_ID_cpu_tlbr] = "tlbr",
[RABBITIZER_INSTR_ID_cpu_tlbwi] = "tlbwi",
[RABBITIZER_INSTR_ID_cpu_tlbwr] = "tlbwr",
[RABBITIZER_INSTR_ID_cpu_tlbp] = "tlbp",
[RABBITIZER_INSTR_ID_cpu_eret] = "eret",
[RABBITIZER_INSTR_ID_cpu_mfc1] = "mfc1",
[RABBITIZER_INSTR_ID_cpu_dmfc1] = "dmfc1",
[RABBITIZER_INSTR_ID_cpu_mtc1] = "mtc1",
[RABBITIZER_INSTR_ID_cpu_dmtc1] = "dmtc1",
[RABBITIZER_INSTR_ID_cpu_cfc1] = "cfc1",
[RABBITIZER_INSTR_ID_cpu_ctc1] = "ctc1",
[RABBITIZER_INSTR_ID_cpu_bc1f] = "bc1f",
[RABBITIZER_INSTR_ID_cpu_bc1t] = "bc1t",
[RABBITIZER_INSTR_ID_cpu_bc1fl] = "bc1fl",
[RABBITIZER_INSTR_ID_cpu_bc1tl] = "bc1tl",
[RABBITIZER_INSTR_ID_cpu_add_s] = "add.s",
[RABBITIZER_INSTR_ID_cpu_sub_s] = "sub.s",
[RABBITIZER_INSTR_ID_cpu_mul_s] = "mul.s",
[RABBITIZER_INSTR_ID_cpu_div_s] = "div.s",
[RABBITIZER_INSTR_ID_cpu_sqrt_s] = "sqrt.s",
[RABBITIZER_INSTR_ID_cpu_abs_s] = "abs.s",
[RABBITIZER_INSTR_ID_cpu_mov_s] = "mov.s",
[RABBITIZER_INSTR_ID_cpu_neg_s] = "neg.s",
[RABBITIZER_INSTR_ID_cpu_round_l_s] = "round.l.s",
[RABBITIZER_INSTR_ID_cpu_trunc_l_s] = "trunc.l.s",
[RABBITIZER_INSTR_ID_cpu_ceil_l_s] = "ceil.l.s",
[RABBITIZER_INSTR_ID_cpu_floor_l_s] = "floor.l.s",
[RABBITIZER_INSTR_ID_cpu_round_w_s] = "round.w.s",
[RABBITIZER_INSTR_ID_cpu_trunc_w_s] = "trunc.w.s",
[RABBITIZER_INSTR_ID_cpu_ceil_w_s] = "ceil.w.s",
[RABBITIZER_INSTR_ID_cpu_floor_w_s] = "floor.w.s",
[RABBITIZER_INSTR_ID_cpu_cvt_d_s] = "cvt.d.s",
[RABBITIZER_INSTR_ID_cpu_cvt_w_s] = "cvt.w.s",
[RABBITIZER_INSTR_ID_cpu_cvt_l_s] = "cvt.l.s",
[RABBITIZER_INSTR_ID_cpu_c_f_s] = "c.f.s",
[RABBITIZER_INSTR_ID_cpu_c_un_s] = "c.un.s",
[RABBITIZER_INSTR_ID_cpu_c_eq_s] = "c.eq.s",
[RABBITIZER_INSTR_ID_cpu_c_ueq_s] = "c.ueq.s",
[RABBITIZER_INSTR_ID_cpu_c_olt_s] = "c.olt.s",
[RABBITIZER_INSTR_ID_cpu_c_ult_s] = "c.ult.s",
[RABBITIZER_INSTR_ID_cpu_c_ole_s] = "c.ole.s",
[RABBITIZER_INSTR_ID_cpu_c_ule_s] = "c.ule.s",
[RABBITIZER_INSTR_ID_cpu_c_sf_s] = "c.sf.s",
[RABBITIZER_INSTR_ID_cpu_c_ngle_s] = "c.ngle.s",
[RABBITIZER_INSTR_ID_cpu_c_seq_s] = "c.seq.s",
[RABBITIZER_INSTR_ID_cpu_c_ngl_s] = "c.ngl.s",
[RABBITIZER_INSTR_ID_cpu_c_lt_s] = "c.lt.s",
[RABBITIZER_INSTR_ID_cpu_c_nge_s] = "c.nge.s",
[RABBITIZER_INSTR_ID_cpu_c_le_s] = "c.le.s",
[RABBITIZER_INSTR_ID_cpu_c_ngt_s] = "c.ngt.s",
[RABBITIZER_INSTR_ID_cpu_add_d] = "add.d",
[RABBITIZER_INSTR_ID_cpu_sub_d] = "sub.d",
[RABBITIZER_INSTR_ID_cpu_mul_d] = "mul.d",
[RABBITIZER_INSTR_ID_cpu_div_d] = "div.d",
[RABBITIZER_INSTR_ID_cpu_sqrt_d] = "sqrt.d",
[RABBITIZER_INSTR_ID_cpu_abs_d] = "abs.d",
[RABBITIZER_INSTR_ID_cpu_mov_d] = "mov.d",
[RABBITIZER_INSTR_ID_cpu_neg_d] = "neg.d",
[RABBITIZER_INSTR_ID_cpu_round_l_d] = "round.l.d",
[RABBITIZER_INSTR_ID_cpu_trunc_l_d] = "trunc.l.d",
[RABBITIZER_INSTR_ID_cpu_ceil_l_d] = "ceil.l.d",
[RABBITIZER_INSTR_ID_cpu_floor_l_d] = "floor.l.d",
[RABBITIZER_INSTR_ID_cpu_round_w_d] = "round.w.d",
[RABBITIZER_INSTR_ID_cpu_trunc_w_d] = "trunc.w.d",
[RABBITIZER_INSTR_ID_cpu_ceil_w_d] = "ceil.w.d",
[RABBITIZER_INSTR_ID_cpu_floor_w_d] = "floor.w.d",
[RABBITIZER_INSTR_ID_cpu_cvt_s_d] = "cvt.s.d",
[RABBITIZER_INSTR_ID_cpu_cvt_w_d] = "cvt.w.d",
[RABBITIZER_INSTR_ID_cpu_cvt_l_d] = "cvt.l.d",
[RABBITIZER_INSTR_ID_cpu_c_f_d] = "c.f.d",
[RABBITIZER_INSTR_ID_cpu_c_un_d] = "c.un.d",
[RABBITIZER_INSTR_ID_cpu_c_eq_d] = "c.eq.d",
[RABBITIZER_INSTR_ID_cpu_c_ueq_d] = "c.ueq.d",
[RABBITIZER_INSTR_ID_cpu_c_olt_d] = "c.olt.d",
[RABBITIZER_INSTR_ID_cpu_c_ult_d] = "c.ult.d",
[RABBITIZER_INSTR_ID_cpu_c_ole_d] = "c.ole.d",
[RABBITIZER_INSTR_ID_cpu_c_ule_d] = "c.ule.d",
[RABBITIZER_INSTR_ID_cpu_c_df_d] = "c.df.d",
[RABBITIZER_INSTR_ID_cpu_c_ngle_d] = "c.ngle.d",
[RABBITIZER_INSTR_ID_cpu_c_deq_d] = "c.deq.d",
[RABBITIZER_INSTR_ID_cpu_c_ngl_d] = "c.ngl.d",
[RABBITIZER_INSTR_ID_cpu_c_lt_d] = "c.lt.d",
[RABBITIZER_INSTR_ID_cpu_c_nge_d] = "c.nge.d",
[RABBITIZER_INSTR_ID_cpu_c_le_d] = "c.le.d",
[RABBITIZER_INSTR_ID_cpu_c_ngt_d] = "c.ngt.d",
[RABBITIZER_INSTR_ID_cpu_cvt_s_w] = "cvt.s.w",
[RABBITIZER_INSTR_ID_cpu_cvt_d_w] = "cvt.d.w",
[RABBITIZER_INSTR_ID_cpu_cvt_s_l] = "cvt.s.l",
[RABBITIZER_INSTR_ID_cpu_cvt_d_l] = "cvt.d.l",
[RABBITIZER_INSTR_ID_cpu_USERDEF_00] = "USERDEF_00",
[RABBITIZER_INSTR_ID_cpu_USERDEF_01] = "USERDEF_01",
[RABBITIZER_INSTR_ID_cpu_USERDEF_02] = "USERDEF_02",
[RABBITIZER_INSTR_ID_cpu_USERDEF_03] = "USERDEF_03",
[RABBITIZER_INSTR_ID_cpu_USERDEF_04] = "USERDEF_04",
[RABBITIZER_INSTR_ID_cpu_USERDEF_05] = "USERDEF_05",
[RABBITIZER_INSTR_ID_cpu_USERDEF_06] = "USERDEF_06",
[RABBITIZER_INSTR_ID_cpu_USERDEF_07] = "USERDEF_07",
[RABBITIZER_INSTR_ID_cpu_USERDEF_08] = "USERDEF_08",
[RABBITIZER_INSTR_ID_cpu_USERDEF_09] = "USERDEF_09",
[RABBITIZER_INSTR_ID_cpu_USERDEF_10] = "USERDEF_10",
[RABBITIZER_INSTR_ID_cpu_USERDEF_11] = "USERDEF_11",
[RABBITIZER_INSTR_ID_cpu_USERDEF_12] = "USERDEF_12",
[RABBITIZER_INSTR_ID_cpu_USERDEF_13] = "USERDEF_13",
[RABBITIZER_INSTR_ID_cpu_USERDEF_14] = "USERDEF_14",
[RABBITIZER_INSTR_ID_cpu_USERDEF_15] = "USERDEF_15",
[RABBITIZER_INSTR_ID_cpu_USERDEF_16] = "USERDEF_16",
[RABBITIZER_INSTR_ID_cpu_USERDEF_17] = "USERDEF_17",
[RABBITIZER_INSTR_ID_cpu_USERDEF_18] = "USERDEF_18",
[RABBITIZER_INSTR_ID_cpu_USERDEF_19] = "USERDEF_19",
[RABBITIZER_INSTR_ID_cpu_MAX] = "MAX",
[RABBITIZER_INSTR_ID_rsp_INVALID] = "INVALID",
[RABBITIZER_INSTR_ID_rsp_mfc2] = "mfc2",
[RABBITIZER_INSTR_ID_rsp_mtc2] = "mtc2",
[RABBITIZER_INSTR_ID_rsp_cfc2] = "cfc2",
[RABBITIZER_INSTR_ID_rsp_ctc2] = "ctc2",
[RABBITIZER_INSTR_ID_rsp_vmulf] = "vmulf",
[RABBITIZER_INSTR_ID_rsp_vmulu] = "vmulu",
[RABBITIZER_INSTR_ID_rsp_vrndp] = "vrndp",
[RABBITIZER_INSTR_ID_rsp_vmulq] = "vmulq",
[RABBITIZER_INSTR_ID_rsp_vmudl] = "vmudl",
[RABBITIZER_INSTR_ID_rsp_vmudm] = "vmudm",
[RABBITIZER_INSTR_ID_rsp_vmudn] = "vmudn",
[RABBITIZER_INSTR_ID_rsp_vmudh] = "vmudh",
[RABBITIZER_INSTR_ID_rsp_vmacf] = "vmacf",
[RABBITIZER_INSTR_ID_rsp_vmacu] = "vmacu",
[RABBITIZER_INSTR_ID_rsp_vrndn] = "vrndn",
[RABBITIZER_INSTR_ID_rsp_vmacq] = "vmacq",
[RABBITIZER_INSTR_ID_rsp_vmadl] = "vmadl",
[RABBITIZER_INSTR_ID_rsp_vmadm] = "vmadm",
[RABBITIZER_INSTR_ID_rsp_vmadn] = "vmadn",
[RABBITIZER_INSTR_ID_rsp_vmadh] = "vmadh",
[RABBITIZER_INSTR_ID_rsp_vadd] = "vadd",
[RABBITIZER_INSTR_ID_rsp_vsub] = "vsub",
[RABBITIZER_INSTR_ID_rsp_vabs] = "vabs",
[RABBITIZER_INSTR_ID_rsp_vaddc] = "vaddc",
[RABBITIZER_INSTR_ID_rsp_vsubc] = "vsubc",
[RABBITIZER_INSTR_ID_rsp_vsar] = "vsar",
[RABBITIZER_INSTR_ID_rsp_vand] = "vand",
[RABBITIZER_INSTR_ID_rsp_vnand] = "vnand",
[RABBITIZER_INSTR_ID_rsp_vor] = "vor",
[RABBITIZER_INSTR_ID_rsp_vnor] = "vnor",
[RABBITIZER_INSTR_ID_rsp_vxor] = "vxor",
[RABBITIZER_INSTR_ID_rsp_vnxor] = "vnxor",
[RABBITIZER_INSTR_ID_rsp_vlt] = "vlt",
[RABBITIZER_INSTR_ID_rsp_veq] = "veq",
[RABBITIZER_INSTR_ID_rsp_vne] = "vne",
[RABBITIZER_INSTR_ID_rsp_vge] = "vge",
[RABBITIZER_INSTR_ID_rsp_vcl] = "vcl",
[RABBITIZER_INSTR_ID_rsp_vch] = "vch",
[RABBITIZER_INSTR_ID_rsp_vcr] = "vcr",
[RABBITIZER_INSTR_ID_rsp_vmrg] = "vmrg",
[RABBITIZER_INSTR_ID_rsp_vrcp] = "vrcp",
[RABBITIZER_INSTR_ID_rsp_vrcpl] = "vrcpl",
[RABBITIZER_INSTR_ID_rsp_vrcph] = "vrcph",
[RABBITIZER_INSTR_ID_rsp_vmov] = "vmov",
[RABBITIZER_INSTR_ID_rsp_vrsq] = "vrsq",
[RABBITIZER_INSTR_ID_rsp_vrsql] = "vrsql",
[RABBITIZER_INSTR_ID_rsp_vrsqh] = "vrsqh",
[RABBITIZER_INSTR_ID_rsp_vnop] = "vnop",
[RABBITIZER_INSTR_ID_rsp_lbv] = "lbv",
[RABBITIZER_INSTR_ID_rsp_lsv] = "lsv",
[RABBITIZER_INSTR_ID_rsp_llv] = "llv",
[RABBITIZER_INSTR_ID_rsp_ldv] = "ldv",
[RABBITIZER_INSTR_ID_rsp_lqv] = "lqv",
[RABBITIZER_INSTR_ID_rsp_lrv] = "lrv",
[RABBITIZER_INSTR_ID_rsp_lpv] = "lpv",
[RABBITIZER_INSTR_ID_rsp_luv] = "luv",
[RABBITIZER_INSTR_ID_rsp_lhv] = "lhv",
[RABBITIZER_INSTR_ID_rsp_lfv] = "lfv",
[RABBITIZER_INSTR_ID_rsp_ltv] = "ltv",
[RABBITIZER_INSTR_ID_rsp_sbv] = "sbv",
[RABBITIZER_INSTR_ID_rsp_ssv] = "ssv",
[RABBITIZER_INSTR_ID_rsp_slv] = "slv",
[RABBITIZER_INSTR_ID_rsp_sdv] = "sdv",
[RABBITIZER_INSTR_ID_rsp_sqv] = "sqv",
[RABBITIZER_INSTR_ID_rsp_srv] = "srv",
[RABBITIZER_INSTR_ID_rsp_spv] = "spv",
[RABBITIZER_INSTR_ID_rsp_suv] = "suv",
[RABBITIZER_INSTR_ID_rsp_shv] = "shv",
[RABBITIZER_INSTR_ID_rsp_sfv] = "sfv",
[RABBITIZER_INSTR_ID_rsp_stv] = "stv",
[RABBITIZER_INSTR_ID_rsp_swv] = "swv",
[RABBITIZER_INSTR_ID_rsp_j] = "j",
[RABBITIZER_INSTR_ID_rsp_jal] = "jal",
[RABBITIZER_INSTR_ID_rsp_beq] = "beq",
[RABBITIZER_INSTR_ID_rsp_bne] = "bne",
[RABBITIZER_INSTR_ID_rsp_blez] = "blez",
[RABBITIZER_INSTR_ID_rsp_bgtz] = "bgtz",
[RABBITIZER_INSTR_ID_rsp_addi] = "addi",
[RABBITIZER_INSTR_ID_rsp_addiu] = "addiu",
[RABBITIZER_INSTR_ID_rsp_slti] = "slti",
[RABBITIZER_INSTR_ID_rsp_sltiu] = "sltiu",
[RABBITIZER_INSTR_ID_rsp_andi] = "andi",
[RABBITIZER_INSTR_ID_rsp_ori] = "ori",
[RABBITIZER_INSTR_ID_rsp_xori] = "xori",
[RABBITIZER_INSTR_ID_rsp_lui] = "lui",
[RABBITIZER_INSTR_ID_rsp_lb] = "lb",
[RABBITIZER_INSTR_ID_rsp_lh] = "lh",
[RABBITIZER_INSTR_ID_rsp_lw] = "lw",
[RABBITIZER_INSTR_ID_rsp_lbu] = "lbu",
[RABBITIZER_INSTR_ID_rsp_lhu] = "lhu",
[RABBITIZER_INSTR_ID_rsp_sb] = "sb",
[RABBITIZER_INSTR_ID_rsp_sh] = "sh",
[RABBITIZER_INSTR_ID_rsp_sw] = "sw",
[RABBITIZER_INSTR_ID_rsp_pref] = "pref",
[RABBITIZER_INSTR_ID_rsp_b] = "b",
[RABBITIZER_INSTR_ID_rsp_beqz] = "beqz",
[RABBITIZER_INSTR_ID_rsp_bnez] = "bnez",
[RABBITIZER_INSTR_ID_rsp_sll] = "sll",
[RABBITIZER_INSTR_ID_rsp_srl] = "srl",
[RABBITIZER_INSTR_ID_rsp_sra] = "sra",
[RABBITIZER_INSTR_ID_rsp_sllv] = "sllv",
[RABBITIZER_INSTR_ID_rsp_srlv] = "srlv",
[RABBITIZER_INSTR_ID_rsp_srav] = "srav",
[RABBITIZER_INSTR_ID_rsp_jr] = "jr",
[RABBITIZER_INSTR_ID_rsp_jalr] = "jalr",
[RABBITIZER_INSTR_ID_rsp_jalr_rd] = "jalr",
[RABBITIZER_INSTR_ID_rsp_movz] = "movz",
[RABBITIZER_INSTR_ID_rsp_movn] = "movn",
[RABBITIZER_INSTR_ID_rsp_add] = "add",
[RABBITIZER_INSTR_ID_rsp_addu] = "addu",
[RABBITIZER_INSTR_ID_rsp_sub] = "sub",
[RABBITIZER_INSTR_ID_rsp_subu] = "subu",
[RABBITIZER_INSTR_ID_rsp_and] = "and",
[RABBITIZER_INSTR_ID_rsp_or] = "or",
[RABBITIZER_INSTR_ID_rsp_xor] = "xor",
[RABBITIZER_INSTR_ID_rsp_nor] = "nor",
[RABBITIZER_INSTR_ID_rsp_slt] = "slt",
[RABBITIZER_INSTR_ID_rsp_sltu] = "sltu",
[RABBITIZER_INSTR_ID_rsp_break] = "break",
[RABBITIZER_INSTR_ID_rsp_nop] = "nop",
[RABBITIZER_INSTR_ID_rsp_move] = "move",
[RABBITIZER_INSTR_ID_rsp_not] = "not",
[RABBITIZER_INSTR_ID_rsp_negu] = "negu",
[RABBITIZER_INSTR_ID_rsp_bltz] = "bltz",
[RABBITIZER_INSTR_ID_rsp_bgez] = "bgez",
[RABBITIZER_INSTR_ID_rsp_bltzal] = "bltzal",
[RABBITIZER_INSTR_ID_rsp_bgezal] = "bgezal",
[RABBITIZER_INSTR_ID_rsp_bal] = "bal",
[RABBITIZER_INSTR_ID_rsp_mfc0] = "mfc0",
[RABBITIZER_INSTR_ID_rsp_mtc0] = "mtc0",
[RABBITIZER_INSTR_ID_rsp_USERDEF_00] = "USERDEF_00",
[RABBITIZER_INSTR_ID_rsp_USERDEF_01] = "USERDEF_01",
[RABBITIZER_INSTR_ID_rsp_USERDEF_02] = "USERDEF_02",
[RABBITIZER_INSTR_ID_rsp_USERDEF_03] = "USERDEF_03",
[RABBITIZER_INSTR_ID_rsp_USERDEF_04] = "USERDEF_04",
[RABBITIZER_INSTR_ID_rsp_USERDEF_05] = "USERDEF_05",
[RABBITIZER_INSTR_ID_rsp_USERDEF_06] = "USERDEF_06",
[RABBITIZER_INSTR_ID_rsp_USERDEF_07] = "USERDEF_07",
[RABBITIZER_INSTR_ID_rsp_USERDEF_08] = "USERDEF_08",
[RABBITIZER_INSTR_ID_rsp_USERDEF_09] = "USERDEF_09",
[RABBITIZER_INSTR_ID_rsp_USERDEF_10] = "USERDEF_10",
[RABBITIZER_INSTR_ID_rsp_USERDEF_11] = "USERDEF_11",
[RABBITIZER_INSTR_ID_rsp_USERDEF_12] = "USERDEF_12",
[RABBITIZER_INSTR_ID_rsp_USERDEF_13] = "USERDEF_13",
[RABBITIZER_INSTR_ID_rsp_USERDEF_14] = "USERDEF_14",
[RABBITIZER_INSTR_ID_rsp_USERDEF_15] = "USERDEF_15",
[RABBITIZER_INSTR_ID_rsp_USERDEF_16] = "USERDEF_16",
[RABBITIZER_INSTR_ID_rsp_USERDEF_17] = "USERDEF_17",
[RABBITIZER_INSTR_ID_rsp_USERDEF_18] = "USERDEF_18",
[RABBITIZER_INSTR_ID_rsp_USERDEF_19] = "USERDEF_19",
[RABBITIZER_INSTR_ID_rsp_MAX] = "MAX",
[RABBITIZER_INSTR_ID_r5900_INVALID] = "INVALID",
[RABBITIZER_INSTR_ID_r5900_lq] = "lq",
[RABBITIZER_INSTR_ID_r5900_sq] = "sq",
[RABBITIZER_INSTR_ID_r5900_lqc2] = "lqc2",
[RABBITIZER_INSTR_ID_r5900_sqc2] = "sqc2",
[RABBITIZER_INSTR_ID_r5900_sync_p] = "sync.p",
[RABBITIZER_INSTR_ID_r5900_mult] = "mult",
[RABBITIZER_INSTR_ID_r5900_mfsa] = "mfsa",
[RABBITIZER_INSTR_ID_r5900_mtsa] = "mtsa",
[RABBITIZER_INSTR_ID_r5900_mtsab] = "mtsab",
[RABBITIZER_INSTR_ID_r5900_mtsah] = "mtsah",
[RABBITIZER_INSTR_ID_r5900_madd] = "madd",
[RABBITIZER_INSTR_ID_r5900_maddu] = "maddu",
[RABBITIZER_INSTR_ID_r5900_plzcw] = "plzcw",
[RABBITIZER_INSTR_ID_r5900_mfhi1] = "mfhi1",
[RABBITIZER_INSTR_ID_r5900_mthi1] = "mthi1",
[RABBITIZER_INSTR_ID_r5900_mflo1] = "mflo1",
[RABBITIZER_INSTR_ID_r5900_mtlo1] = "mtlo1",
[RABBITIZER_INSTR_ID_r5900_mult1] = "mult1",
[RABBITIZER_INSTR_ID_r5900_multu1] = "multu1",
[RABBITIZER_INSTR_ID_r5900_div1] = "div1",
[RABBITIZER_INSTR_ID_r5900_divu1] = "divu1",
[RABBITIZER_INSTR_ID_r5900_madd1] = "madd1",
[RABBITIZER_INSTR_ID_r5900_maddu1] = "maddu1",
[RABBITIZER_INSTR_ID_r5900_pmfhl] = "pmfhl",
[RABBITIZER_INSTR_ID_r5900_pmthl] = "pmthl",
[RABBITIZER_INSTR_ID_r5900_psllh] = "psllh",
[RABBITIZER_INSTR_ID_r5900_psrlh] = "psrlh",
[RABBITIZER_INSTR_ID_r5900_psrah] = "psrah",
[RABBITIZER_INSTR_ID_r5900_psllw] = "psllw",
[RABBITIZER_INSTR_ID_r5900_psrlw] = "psrlw",
[RABBITIZER_INSTR_ID_r5900_psraw] = "psraw",
[RABBITIZER_INSTR_ID_r5900_paddw] = "paddw",
[RABBITIZER_INSTR_ID_r5900_psubw] = "psubw",
[RABBITIZER_INSTR_ID_r5900_pcgtw] = "pcgtw",
[RABBITIZER_INSTR_ID_r5900_pmaxw] = "pmaxw",
[RABBITIZER_INSTR_ID_r5900_paddh] = "paddh",
[RABBITIZER_INSTR_ID_r5900_psubh] = "psubh",
[RABBITIZER_INSTR_ID_r5900_pcgth] = "pcgth",
[RABBITIZER_INSTR_ID_r5900_pmaxh] = "pmaxh",
[RABBITIZER_INSTR_ID_r5900_paddb] = "paddb",
[RABBITIZER_INSTR_ID_r5900_psubb] = "psubb",
[RABBITIZER_INSTR_ID_r5900_pcgtb] = "pcgtb",
[RABBITIZER_INSTR_ID_r5900_paddsw] = "paddsw",
[RABBITIZER_INSTR_ID_r5900_psubsw] = "psubsw",
[RABBITIZER_INSTR_ID_r5900_pextlw] = "pextlw",
[RABBITIZER_INSTR_ID_r5900_ppacw] = "ppacw",
[RABBITIZER_INSTR_ID_r5900_paddsh] = "paddsh",
[RABBITIZER_INSTR_ID_r5900_psubsh] = "psubsh",
[RABBITIZER_INSTR_ID_r5900_pextlh] = "pextlh",
[RABBITIZER_INSTR_ID_r5900_ppach] = "ppach",
[RABBITIZER_INSTR_ID_r5900_paddsb] = "paddsb",
[RABBITIZER_INSTR_ID_r5900_psubsb] = "psubsb",
[RABBITIZER_INSTR_ID_r5900_pextlb] = "pextlb",
[RABBITIZER_INSTR_ID_r5900_ppacb] = "ppacb",
[RABBITIZER_INSTR_ID_r5900_pext5] = "pext5",
[RABBITIZER_INSTR_ID_r5900_ppac5] = "ppac5",
[RABBITIZER_INSTR_ID_r5900_pabsw] = "pabsw",
[RABBITIZER_INSTR_ID_r5900_pceqw] = "pceqw",
[RABBITIZER_INSTR_ID_r5900_pminw] = "pminw",
[RABBITIZER_INSTR_ID_r5900_padsbh] = "padsbh",
[RABBITIZER_INSTR_ID_r5900_pabsh] = "pabsh",
[RABBITIZER_INSTR_ID_r5900_pceqh] = "pceqh",
[RABBITIZER_INSTR_ID_r5900_pminh] = "pminh",
[RABBITIZER_INSTR_ID_r5900_pceqb] = "pceqb",
[RABBITIZER_INSTR_ID_r5900_padduw] = "padduw",
[RABBITIZER_INSTR_ID_r5900_psubuw] = "psubuw",
[RABBITIZER_INSTR_ID_r5900_pextuw] = "pextuw",
[RABBITIZER_INSTR_ID_r5900_padduh] = "padduh",
[RABBITIZER_INSTR_ID_r5900_psubuh] = "psubuh",
[RABBITIZER_INSTR_ID_r5900_pextuh] = "pextuh",
[RABBITIZER_INSTR_ID_r5900_paddub] = "paddub",
[RABBITIZER_INSTR_ID_r5900_psubub] = "psubub",
[RABBITIZER_INSTR_ID_r5900_pextub] = "pextub",
[RABBITIZER_INSTR_ID_r5900_qfsrv] = "qfsrv",
[RABBITIZER_INSTR_ID_r5900_pmaddw] = "pmaddw",
[RABBITIZER_INSTR_ID_r5900_psllvw] = "psllvw",
[RABBITIZER_INSTR_ID_r5900_psrlvw] = "psrlvw",
[RABBITIZER_INSTR_ID_r5900_pmsubw] = "pmsubw",
[RABBITIZER_INSTR_ID_r5900_pmfhi] = "pmfhi",
[RABBITIZER_INSTR_ID_r5900_pmflo] = "pmflo",
[RABBITIZER_INSTR_ID_r5900_pinth] = "pinth",
[RABBITIZER_INSTR_ID_r5900_pmultw] = "pmultw",
[RABBITIZER_INSTR_ID_r5900_pdivw] = "pdivw",
[RABBITIZER_INSTR_ID_r5900_pcpyld] = "pcpyld",
[RABBITIZER_INSTR_ID_r5900_pmaddh] = "pmaddh",
[RABBITIZER_INSTR_ID_r5900_phmadh] = "phmadh",
[RABBITIZER_INSTR_ID_r5900_pand] = "pand",
[RABBITIZER_INSTR_ID_r5900_pxor] = "pxor",
[RABBITIZER_INSTR_ID_r5900_pmsubh] = "pmsubh",
[RABBITIZER_INSTR_ID_r5900_phmsbh] = "phmsbh",
[RABBITIZER_INSTR_ID_r5900_pexeh] = "pexeh",
[RABBITIZER_INSTR_ID_r5900_prevh] = "prevh",
[RABBITIZER_INSTR_ID_r5900_pmulth] = "pmulth",
[RABBITIZER_INSTR_ID_r5900_pdivbw] = "pdivbw",
[RABBITIZER_INSTR_ID_r5900_pexew] = "pexew",
[RABBITIZER_INSTR_ID_r5900_prot3w] = "prot3w",
[RABBITIZER_INSTR_ID_r5900_pmadduw] = "pmadduw",
[RABBITIZER_INSTR_ID_r5900_psravw] = "psravw",
[RABBITIZER_INSTR_ID_r5900_pmthi] = "pmthi",
[RABBITIZER_INSTR_ID_r5900_pmtlo] = "pmtlo",
[RABBITIZER_INSTR_ID_r5900_pinteh] = "pinteh",
[RABBITIZER_INSTR_ID_r5900_pmultuw] = "pmultuw",
[RABBITIZER_INSTR_ID_r5900_pdivuw] = "pdivuw",
[RABBITIZER_INSTR_ID_r5900_pcpyud] = "pcpyud",
[RABBITIZER_INSTR_ID_r5900_por] = "por",
[RABBITIZER_INSTR_ID_r5900_pnor] = "pnor",
[RABBITIZER_INSTR_ID_r5900_pexch] = "pexch",
[RABBITIZER_INSTR_ID_r5900_pcpyh] = "pcpyh",
[RABBITIZER_INSTR_ID_r5900_pexcw] = "pexcw",
[RABBITIZER_INSTR_ID_r5900_ei] = "ei",
[RABBITIZER_INSTR_ID_r5900_di] = "di",
[RABBITIZER_INSTR_ID_r5900_c1__sqrt_s] = "c1",
[RABBITIZER_INSTR_ID_r5900_rsqrt_s] = "rsqrt.s",
[RABBITIZER_INSTR_ID_r5900_adda_s] = "adda.s",
[RABBITIZER_INSTR_ID_r5900_suba_s] = "suba.s",
[RABBITIZER_INSTR_ID_r5900_mula_s] = "mula.s",
[RABBITIZER_INSTR_ID_r5900_madd_s] = "madd.s",
[RABBITIZER_INSTR_ID_r5900_msub_s] = "msub.s",
[RABBITIZER_INSTR_ID_r5900_madda_s] = "madda.s",
[RABBITIZER_INSTR_ID_r5900_msuba_s] = "msuba.s",
[RABBITIZER_INSTR_ID_r5900_max_s] = "max.s",
[RABBITIZER_INSTR_ID_r5900_min_s] = "min.s",
[RABBITIZER_INSTR_ID_r5900_trunc_w_s] = "trunc.w.s",
[RABBITIZER_INSTR_ID_r5900_c_lt_s] = "c.lt.s",
[RABBITIZER_INSTR_ID_r5900_c_le_s] = "c.le.s",
[RABBITIZER_INSTR_ID_r5900_qmfc2] = "qmfc2",
[RABBITIZER_INSTR_ID_r5900_cfc2] = "cfc2",
[RABBITIZER_INSTR_ID_r5900_qmtc2] = "qmtc2",
[RABBITIZER_INSTR_ID_r5900_ctc2] = "ctc2",
[RABBITIZER_INSTR_ID_r5900_bc2f] = "bc2f",
[RABBITIZER_INSTR_ID_r5900_bc2t] = "bc2t",
[RABBITIZER_INSTR_ID_r5900_bc2fl] = "bc2fl",
[RABBITIZER_INSTR_ID_r5900_bc2tl] = "bc2tl",
[RABBITIZER_INSTR_ID_r5900_vaddx] = "vaddx",
[RABBITIZER_INSTR_ID_r5900_vaddy] = "vaddy",
[RABBITIZER_INSTR_ID_r5900_vaddz] = "vaddz",
[RABBITIZER_INSTR_ID_r5900_vaddw] = "vaddw",
[RABBITIZER_INSTR_ID_r5900_vsubx] = "vsubx",
[RABBITIZER_INSTR_ID_r5900_vsuby] = "vsuby",
[RABBITIZER_INSTR_ID_r5900_vsubz] = "vsubz",
[RABBITIZER_INSTR_ID_r5900_vsubw] = "vsubw",
[RABBITIZER_INSTR_ID_r5900_vmaddx] = "vmaddx",
[RABBITIZER_INSTR_ID_r5900_vmaddy] = "vmaddy",
[RABBITIZER_INSTR_ID_r5900_vmaddz] = "vmaddz",
[RABBITIZER_INSTR_ID_r5900_vmaddw] = "vmaddw",
[RABBITIZER_INSTR_ID_r5900_vmsubx] = "vmsubx",
[RABBITIZER_INSTR_ID_r5900_vmsuby] = "vmsuby",
[RABBITIZER_INSTR_ID_r5900_vmsubz] = "vmsubz",
[RABBITIZER_INSTR_ID_r5900_vmsubw] = "vmsubw",
[RABBITIZER_INSTR_ID_r5900_vmaxx] = "vmaxx",
[RABBITIZER_INSTR_ID_r5900_vmaxy] = "vmaxy",
[RABBITIZER_INSTR_ID_r5900_vmaxz] = "vmaxz",
[RABBITIZER_INSTR_ID_r5900_vmaxw] = "vmaxw",
[RABBITIZER_INSTR_ID_r5900_vminix] = "vminix",
[RABBITIZER_INSTR_ID_r5900_vminiy] = "vminiy",
[RABBITIZER_INSTR_ID_r5900_vminiz] = "vminiz",
[RABBITIZER_INSTR_ID_r5900_vminiw] = "vminiw",
[RABBITIZER_INSTR_ID_r5900_vmulx] = "vmulx",
[RABBITIZER_INSTR_ID_r5900_vmuly] = "vmuly",
[RABBITIZER_INSTR_ID_r5900_vmulz] = "vmulz",
[RABBITIZER_INSTR_ID_r5900_vmulw] = "vmulw",
[RABBITIZER_INSTR_ID_r5900_vmulq] = "vmulq",
[RABBITIZER_INSTR_ID_r5900_vmaxi] = "vmaxi",
[RABBITIZER_INSTR_ID_r5900_vmuli] = "vmuli",
[RABBITIZER_INSTR_ID_r5900_vminii] = "vminii",
[RABBITIZER_INSTR_ID_r5900_vaddq] = "vaddq",
[RABBITIZER_INSTR_ID_r5900_vmaddq] = "vmaddq",
[RABBITIZER_INSTR_ID_r5900_vaddi] = "vaddi",
[RABBITIZER_INSTR_ID_r5900_vmaddi] = "vmaddi",
[RABBITIZER_INSTR_ID_r5900_vsubq] = "vsubq",
[RABBITIZER_INSTR_ID_r5900_vmsubq] = "vmsubq",
[RABBITIZER_INSTR_ID_r5900_vsubi] = "vsubi",
[RABBITIZER_INSTR_ID_r5900_vmsubi] = "vmsubi",
[RABBITIZER_INSTR_ID_r5900_vadd] = "vadd",
[RABBITIZER_INSTR_ID_r5900_vmadd] = "vmadd",
[RABBITIZER_INSTR_ID_r5900_vmul] = "vmul",
[RABBITIZER_INSTR_ID_r5900_vmax] = "vmax",
[RABBITIZER_INSTR_ID_r5900_vsub] = "vsub",
[RABBITIZER_INSTR_ID_r5900_vmsub] = "vmsub",
[RABBITIZER_INSTR_ID_r5900_vopmsub] = "vopmsub",
[RABBITIZER_INSTR_ID_r5900_vmini] = "vmini",
[RABBITIZER_INSTR_ID_r5900_viadd] = "viadd",
[RABBITIZER_INSTR_ID_r5900_visub] = "visub",
[RABBITIZER_INSTR_ID_r5900_viaddi] = "viaddi",
[RABBITIZER_INSTR_ID_r5900_viand] = "viand",
[RABBITIZER_INSTR_ID_r5900_vior] = "vior",
[RABBITIZER_INSTR_ID_r5900_vcallms] = "vcallms",
[RABBITIZER_INSTR_ID_r5900_vcallmsr] = "vcallmsr",
[RABBITIZER_INSTR_ID_r5900_vaddax] = "vaddax",
[RABBITIZER_INSTR_ID_r5900_vadday] = "vadday",
[RABBITIZER_INSTR_ID_r5900_vaddaz] = "vaddaz",
[RABBITIZER_INSTR_ID_r5900_vaddaw] = "vaddaw",
[RABBITIZER_INSTR_ID_r5900_vsubax] = "vsubax",
[RABBITIZER_INSTR_ID_r5900_vsubay] = "vsubay",
[RABBITIZER_INSTR_ID_r5900_vsubaz] = "vsubaz",
[RABBITIZER_INSTR_ID_r5900_vsubaw] = "vsubaw",
[RABBITIZER_INSTR_ID_r5900_vmaddax] = "vmaddax",
[RABBITIZER_INSTR_ID_r5900_vmadday] = "vmadday",
[RABBITIZER_INSTR_ID_r5900_vmaddaz] = "vmaddaz",
[RABBITIZER_INSTR_ID_r5900_vmaddaw] = "vmaddaw",
[RABBITIZER_INSTR_ID_r5900_vmsubax] = "vmsubax",
[RABBITIZER_INSTR_ID_r5900_vmsubay] = "vmsubay",
[RABBITIZER_INSTR_ID_r5900_vmsubaz] = "vmsubaz",
[RABBITIZER_INSTR_ID_r5900_vmsubaw] = "vmsubaw",
[RABBITIZER_INSTR_ID_r5900_vitof0] = "vitof0",
[RABBITIZER_INSTR_ID_r5900_vitof4] = "vitof4",
[RABBITIZER_INSTR_ID_r5900_vitof12] = "vitof12",
[RABBITIZER_INSTR_ID_r5900_vitof15] = "vitof15",
[RABBITIZER_INSTR_ID_r5900_vftoi0] = "vftoi0",
[RABBITIZER_INSTR_ID_r5900_vftoi4] = "vftoi4",
[RABBITIZER_INSTR_ID_r5900_vftoi12] = "vftoi12",
[RABBITIZER_INSTR_ID_r5900_vftoi15] = "vftoi15",
[RABBITIZER_INSTR_ID_r5900_vmulax] = "vmulax",
[RABBITIZER_INSTR_ID_r5900_vmulay] = "vmulay",
[RABBITIZER_INSTR_ID_r5900_vmulaz] = "vmulaz",
[RABBITIZER_INSTR_ID_r5900_vmulaw] = "vmulaw",
[RABBITIZER_INSTR_ID_r5900_vmulaq] = "vmulaq",
[RABBITIZER_INSTR_ID_r5900_vabs] = "vabs",
[RABBITIZER_INSTR_ID_r5900_vmulai] = "vmulai",
[RABBITIZER_INSTR_ID_r5900_vclipw] = "vclipw",
[RABBITIZER_INSTR_ID_r5900_vaddaq] = "vaddaq",
[RABBITIZER_INSTR_ID_r5900_vmaddaq] = "vmaddaq",
[RABBITIZER_INSTR_ID_r5900_vaddai] = "vaddai",
[RABBITIZER_INSTR_ID_r5900_vmaddai] = "vmaddai",
[RABBITIZER_INSTR_ID_r5900_vsubaq] = "vsubaq",
[RABBITIZER_INSTR_ID_r5900_vmsubaq] = "vmsubaq",
[RABBITIZER_INSTR_ID_r5900_vsubai] = "vsubai",
[RABBITIZER_INSTR_ID_r5900_vmsubai] = "vmsubai",
[RABBITIZER_INSTR_ID_r5900_vadda] = "vadda",
[RABBITIZER_INSTR_ID_r5900_vmadda] = "vmadda",
[RABBITIZER_INSTR_ID_r5900_vmula] = "vmula",
[RABBITIZER_INSTR_ID_r5900_vsuba] = "vsuba",
[RABBITIZER_INSTR_ID_r5900_vmsuba] = "vmsuba",
[RABBITIZER_INSTR_ID_r5900_vopmula] = "vopmula",
[RABBITIZER_INSTR_ID_r5900_vnop] = "vnop",
[RABBITIZER_INSTR_ID_r5900_vmove] = "vmove",
[RABBITIZER_INSTR_ID_r5900_vmr32] = "vmr32",
[RABBITIZER_INSTR_ID_r5900_vlqi] = "vlqi",
[RABBITIZER_INSTR_ID_r5900_vsqi] = "vsqi",
[RABBITIZER_INSTR_ID_r5900_vlqd] = "vlqd",
[RABBITIZER_INSTR_ID_r5900_vsqd] = "vsqd",
[RABBITIZER_INSTR_ID_r5900_vdiv] = "vdiv",
[RABBITIZER_INSTR_ID_r5900_vsqrt] = "vsqrt",
[RABBITIZER_INSTR_ID_r5900_vrsqrt] = "vrsqrt",
[RABBITIZER_INSTR_ID_r5900_vwaitq] = "vwaitq",
[RABBITIZER_INSTR_ID_r5900_vmtir] = "vmtir",
[RABBITIZER_INSTR_ID_r5900_vmfir] = "vmfir",
[RABBITIZER_INSTR_ID_r5900_vilwr] = "vilwr",
[RABBITIZER_INSTR_ID_r5900_viswr] = "viswr",
[RABBITIZER_INSTR_ID_r5900_vrnext] = "vrnext",
[RABBITIZER_INSTR_ID_r5900_vrget] = "vrget",
[RABBITIZER_INSTR_ID_r5900_vrinit] = "vrinit",
[RABBITIZER_INSTR_ID_r5900_vrxor] = "vrxor",
[RABBITIZER_INSTR_ID_r5900_USERDEF_00] = "USERDEF_00",
[RABBITIZER_INSTR_ID_r5900_USERDEF_01] = "USERDEF_01",
[RABBITIZER_INSTR_ID_r5900_USERDEF_02] = "USERDEF_02",
[RABBITIZER_INSTR_ID_r5900_USERDEF_03] = "USERDEF_03",
[RABBITIZER_INSTR_ID_r5900_USERDEF_04] = "USERDEF_04",
[RABBITIZER_INSTR_ID_r5900_USERDEF_05] = "USERDEF_05",
[RABBITIZER_INSTR_ID_r5900_USERDEF_06] = "USERDEF_06",
[RABBITIZER_INSTR_ID_r5900_USERDEF_07] = "USERDEF_07",
[RABBITIZER_INSTR_ID_r5900_USERDEF_08] = "USERDEF_08",
[RABBITIZER_INSTR_ID_r5900_USERDEF_09] = "USERDEF_09",
[RABBITIZER_INSTR_ID_r5900_USERDEF_10] = "USERDEF_10",
[RABBITIZER_INSTR_ID_r5900_USERDEF_11] = "USERDEF_11",
[RABBITIZER_INSTR_ID_r5900_USERDEF_12] = "USERDEF_12",
[RABBITIZER_INSTR_ID_r5900_USERDEF_13] = "USERDEF_13",
[RABBITIZER_INSTR_ID_r5900_USERDEF_14] = "USERDEF_14",
[RABBITIZER_INSTR_ID_r5900_USERDEF_15] = "USERDEF_15",
[RABBITIZER_INSTR_ID_r5900_USERDEF_16] = "USERDEF_16",
[RABBITIZER_INSTR_ID_r5900_USERDEF_17] = "USERDEF_17",
[RABBITIZER_INSTR_ID_r5900_USERDEF_18] = "USERDEF_18",
[RABBITIZER_INSTR_ID_r5900_USERDEF_19] = "USERDEF_19",
[RABBITIZER_INSTR_ID_r5900_MAX] = "MAX",
};
#endif

View File

@ -0,0 +1,15 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, ...) [RABBITIZER_INSTR_ID_##prefix##_##name] = #name,
#define RABBITIZER_DEF_INSTR_ID_ALTNAME(prefix, caseBits, name, altname, ...) [RABBITIZER_INSTR_ID_##prefix##_##name] = #altname,
const char *RabbitizerInstrId_Names[] = {
#include "instructions/instr_id/RabbitizerInstrId_cpu.inc"
#include "instructions/instr_id/RabbitizerInstrId_rsp.inc"
#include "instructions/instr_id/RabbitizerInstrId_r5900.inc"
};
#undef RABBITIZER_DEF_INSTR_ID
#undef RABBITIZER_DEF_INSTR_ID_ALTNAME

View File

@ -3,16 +3,9 @@
#include "instructions/RabbitizerInstrCategory.h"
//#include <stddef.h>
#include <string.h>
#define RABBITIZER_DEF_INSTR_CATEGORY(name) [RABBITIZER_INSTRCAT_##name] = #name
const char *const RabbitizerInstrCategory_Names[] = {
#include "instructions/InstrCategory.inc"
};
#undef RABBITIZER_DEF_INSTR_CATEGORY
#include "InstrCategory_Names_array.table.h"
RabbitizerInstrCategory RabbitizerInstrCategory_fromStr(const char *name) {
if (name == NULL) {

View File

@ -7,19 +7,7 @@
#include "instructions/RabbitizerInstruction.h"
#define RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, ...) [RABBITIZER_INSTR_ID_##prefix##_##name] = { __VA_ARGS__ },
#define RABBITIZER_DEF_INSTR_ID_ALTNAME(prefix, caseBits, name, altname, ...) RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, __VA_ARGS__)
const RabbitizerInstrDescriptor RabbitizerInstrDescriptor_Descriptors[] = {
#include "instructions/instr_id/RabbitizerInstrId_cpu.inc"
#include "instructions/instr_id/RabbitizerInstrId_rsp.inc"
#include "instructions/instr_id/RabbitizerInstrId_r5900.inc"
};
#undef RABBITIZER_DEF_INSTR_ID
#undef RABBITIZER_DEF_INSTR_ID_ALTNAME
#include "InstrDescriptor_Descriptors_array.table.h"
bool RabbitizerInstrDescriptor_hasSpecificOperand(const RabbitizerInstrDescriptor *self, RabbitizerOperandType operand) {
size_t i;

View File

@ -5,18 +5,7 @@
#include <assert.h>
#define RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, ...) [RABBITIZER_INSTR_ID_##prefix##_##name] = #name,
#define RABBITIZER_DEF_INSTR_ID_ALTNAME(prefix, caseBits, name, altname, ...) [RABBITIZER_INSTR_ID_##prefix##_##name] = #altname,
const char *RabbitizerInstrId_Names[] = {
#include "instructions/instr_id/RabbitizerInstrId_cpu.inc"
#include "instructions/instr_id/RabbitizerInstrId_rsp.inc"
#include "instructions/instr_id/RabbitizerInstrId_r5900.inc"
};
#undef RABBITIZER_DEF_INSTR_ID
#undef RABBITIZER_DEF_INSTR_ID_ALTNAME
#include "InstrId_Names_array.table.h"
bool RabbitizerInstrId_isValid(RabbitizerInstrId uniqueId) {
switch (uniqueId) {

View File

@ -12,15 +12,8 @@
#include "instructions/RabbitizerRegister.h"
#include "instructions/RabbitizerInstrSuffix.h"
#define RAB_DEF_OPERAND(prefix, operand) [RAB_OPERAND_##prefix##_##operand] = RabbitizerOperandType_process_##prefix##_##operand,
const OperandCallback instrOpercandCallbacks[] = {
#include "instructions/operands/RabbitizerOperandType_cpu.inc"
#include "instructions/operands/RabbitizerOperandType_rsp.inc"
#include "instructions/operands/RabbitizerOperandType_r5900.inc"
};
#undef RAB_DEF_OPERAND
#include "instrOpercandCallbacks_array.table.h"
size_t RabbitizerInstruction_getSizeForBufferOperandsDisasm(const RabbitizerInstruction *self, size_t immOverrideLength) {
size_t totalSize = 0;

View File

@ -0,0 +1,76 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Automatically generated. DO NOT MODIFY */
#ifndef instrOpercandCallbacks_array_table_h_automatic
#define instrOpercandCallbacks_array_table_h_automatic
const OperandCallback instrOpercandCallbacks[] = {
[RAB_OPERAND_cpu_rs] = RabbitizerOperandType_process_cpu_rs,
[RAB_OPERAND_cpu_rt] = RabbitizerOperandType_process_cpu_rt,
[RAB_OPERAND_cpu_rd] = RabbitizerOperandType_process_cpu_rd,
[RAB_OPERAND_cpu_sa] = RabbitizerOperandType_process_cpu_sa,
[RAB_OPERAND_cpu_zero] = RabbitizerOperandType_process_cpu_zero,
[RAB_OPERAND_cpu_cop0d] = RabbitizerOperandType_process_cpu_cop0d,
[RAB_OPERAND_cpu_fs] = RabbitizerOperandType_process_cpu_fs,
[RAB_OPERAND_cpu_ft] = RabbitizerOperandType_process_cpu_ft,
[RAB_OPERAND_cpu_fd] = RabbitizerOperandType_process_cpu_fd,
[RAB_OPERAND_cpu_cop1cs] = RabbitizerOperandType_process_cpu_cop1cs,
[RAB_OPERAND_cpu_cop2t] = RabbitizerOperandType_process_cpu_cop2t,
[RAB_OPERAND_cpu_op] = RabbitizerOperandType_process_cpu_op,
[RAB_OPERAND_cpu_code] = RabbitizerOperandType_process_cpu_code,
[RAB_OPERAND_cpu_code_lower] = RabbitizerOperandType_process_cpu_code_lower,
[RAB_OPERAND_cpu_copraw] = RabbitizerOperandType_process_cpu_copraw,
[RAB_OPERAND_cpu_label] = RabbitizerOperandType_process_cpu_label,
[RAB_OPERAND_cpu_immediate] = RabbitizerOperandType_process_cpu_immediate,
[RAB_OPERAND_cpu_branch_target_label] = RabbitizerOperandType_process_cpu_branch_target_label,
[RAB_OPERAND_cpu_immediate_base] = RabbitizerOperandType_process_cpu_immediate_base,
[RAB_OPERAND_rsp_rs] = RabbitizerOperandType_process_rsp_rs,
[RAB_OPERAND_rsp_rt] = RabbitizerOperandType_process_rsp_rt,
[RAB_OPERAND_rsp_rd] = RabbitizerOperandType_process_rsp_rd,
[RAB_OPERAND_rsp_cop0d] = RabbitizerOperandType_process_rsp_cop0d,
[RAB_OPERAND_rsp_cop2t] = RabbitizerOperandType_process_rsp_cop2t,
[RAB_OPERAND_rsp_cop2cd] = RabbitizerOperandType_process_rsp_cop2cd,
[RAB_OPERAND_rsp_vs] = RabbitizerOperandType_process_rsp_vs,
[RAB_OPERAND_rsp_vt] = RabbitizerOperandType_process_rsp_vt,
[RAB_OPERAND_rsp_vd] = RabbitizerOperandType_process_rsp_vd,
[RAB_OPERAND_rsp_vt_elementhigh] = RabbitizerOperandType_process_rsp_vt_elementhigh,
[RAB_OPERAND_rsp_vt_elementlow] = RabbitizerOperandType_process_rsp_vt_elementlow,
[RAB_OPERAND_rsp_vd_de] = RabbitizerOperandType_process_rsp_vd_de,
[RAB_OPERAND_rsp_vs_index] = RabbitizerOperandType_process_rsp_vs_index,
[RAB_OPERAND_rsp_offset_rs] = RabbitizerOperandType_process_rsp_offset_rs,
[RAB_OPERAND_rsp_immediate_base] = RabbitizerOperandType_process_rsp_immediate_base,
[RAB_OPERAND_r5900_I] = RabbitizerOperandType_process_r5900_I,
[RAB_OPERAND_r5900_Q] = RabbitizerOperandType_process_r5900_Q,
[RAB_OPERAND_r5900_R] = RabbitizerOperandType_process_r5900_R,
[RAB_OPERAND_r5900_ACC] = RabbitizerOperandType_process_r5900_ACC,
[RAB_OPERAND_r5900_ACCxyzw] = RabbitizerOperandType_process_r5900_ACCxyzw,
[RAB_OPERAND_r5900_vfs] = RabbitizerOperandType_process_r5900_vfs,
[RAB_OPERAND_r5900_vft] = RabbitizerOperandType_process_r5900_vft,
[RAB_OPERAND_r5900_vfd] = RabbitizerOperandType_process_r5900_vfd,
[RAB_OPERAND_r5900_vfsxyzw] = RabbitizerOperandType_process_r5900_vfsxyzw,
[RAB_OPERAND_r5900_vftxyzw] = RabbitizerOperandType_process_r5900_vftxyzw,
[RAB_OPERAND_r5900_vfdxyzw] = RabbitizerOperandType_process_r5900_vfdxyzw,
[RAB_OPERAND_r5900_vfsn] = RabbitizerOperandType_process_r5900_vfsn,
[RAB_OPERAND_r5900_vftn] = RabbitizerOperandType_process_r5900_vftn,
[RAB_OPERAND_r5900_vfdn] = RabbitizerOperandType_process_r5900_vfdn,
[RAB_OPERAND_r5900_vfsl] = RabbitizerOperandType_process_r5900_vfsl,
[RAB_OPERAND_r5900_vftl] = RabbitizerOperandType_process_r5900_vftl,
[RAB_OPERAND_r5900_vfdl] = RabbitizerOperandType_process_r5900_vfdl,
[RAB_OPERAND_r5900_vfsm] = RabbitizerOperandType_process_r5900_vfsm,
[RAB_OPERAND_r5900_vftm] = RabbitizerOperandType_process_r5900_vftm,
[RAB_OPERAND_r5900_vfdm] = RabbitizerOperandType_process_r5900_vfdm,
[RAB_OPERAND_r5900_vis] = RabbitizerOperandType_process_r5900_vis,
[RAB_OPERAND_r5900_vit] = RabbitizerOperandType_process_r5900_vit,
[RAB_OPERAND_r5900_vid] = RabbitizerOperandType_process_r5900_vid,
[RAB_OPERAND_r5900_vis_predecr] = RabbitizerOperandType_process_r5900_vis_predecr,
[RAB_OPERAND_r5900_vit_predecr] = RabbitizerOperandType_process_r5900_vit_predecr,
[RAB_OPERAND_r5900_vid_predecr] = RabbitizerOperandType_process_r5900_vid_predecr,
[RAB_OPERAND_r5900_vis_postincr] = RabbitizerOperandType_process_r5900_vis_postincr,
[RAB_OPERAND_r5900_vit_postincr] = RabbitizerOperandType_process_r5900_vit_postincr,
[RAB_OPERAND_r5900_vid_postincr] = RabbitizerOperandType_process_r5900_vid_postincr,
[RAB_OPERAND_r5900_immediate5] = RabbitizerOperandType_process_r5900_immediate5,
};
#endif

View File

@ -0,0 +1,12 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RAB_DEF_OPERAND(prefix, operand) [RAB_OPERAND_##prefix##_##operand] = RabbitizerOperandType_process_##prefix##_##operand,
const OperandCallback instrOpercandCallbacks[] = {
#include "instructions/operands/RabbitizerOperandType_cpu.inc"
#include "instructions/operands/RabbitizerOperandType_rsp.inc"
#include "instructions/operands/RabbitizerOperandType_r5900.inc"
};
#undef RAB_DEF_OPERAND

View File

@ -8,79 +8,7 @@
#include "common/Utils.h"
#include "common/RabbitizerConfig.h"
#define RABBITIZER_DEF_REG(prefix, name, numeric) [RABBITIZER_REG_##prefix##_##name] = { "$" #numeric, "$" #name }
#define RABBITIZER_DEF_REG_NODOLLAR(prefix, name, numeric) [RABBITIZER_REG_##prefix##_##name] = { "$" #numeric, #name }
// numeric, named
const char *RabbitizerRegister_GprO32_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_GprO32.inc"
};
const char *RabbitizerRegister_GprN32_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_GprN32.inc"
};
const char *RabbitizerRegister_Cop0_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_Cop0.inc"
};
const char *RabbitizerRegister_Cop1O32_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_Cop1O32.inc"
};
const char *RabbitizerRegister_Cop1N32_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_Cop1N32.inc"
};
const char *RabbitizerRegister_Cop1N64_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_Cop1N64.inc"
};
const char *RabbitizerRegister_Cop1Control_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_Cop1Control.inc"
};
const char *RabbitizerRegister_Cop2_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_Cop2.inc"
};
/* RSP */
const char *RabbitizerRegister_RspGpr_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_RspGpr.inc"
};
const char *RabbitizerRegister_RspCop0_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_RspCop0.inc"
};
const char *RabbitizerRegister_RspCop2_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_RspCop2.inc"
};
const char *RabbitizerRegister_RspCop2Control_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_RspCop2Control.inc"
};
const char *RabbitizerRegister_RspVector_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_RspVector.inc"
};
/* RSP */
/* R5900 */
const char *RabbitizerRegister_R5900VF_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_R5900VF.inc"
};
const char *RabbitizerRegister_R5900VI_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_R5900VI.inc"
};
/* R5900 */
#include "Registers_Names_arrays.table.h"
const char *RabbitizerRegister_getNameGpr(uint8_t regValue) {
assert(regValue < ARRAY_COUNT(RabbitizerRegister_GprO32_Names));

View File

@ -0,0 +1,504 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Automatically generated. DO NOT MODIFY */
#ifndef Registers_Names_arrays_table_h_automatic
#define Registers_Names_arrays_table_h_automatic
const char *RabbitizerRegister_GprO32_Names[][2] = {
[RABBITIZER_REG_GPR_O32_zero] = { "$" "0", "$" "zero" },
[RABBITIZER_REG_GPR_O32_at] = { "$" "1", "$" "at" },
[RABBITIZER_REG_GPR_O32_v0] = { "$" "2", "$" "v0" },
[RABBITIZER_REG_GPR_O32_v1] = { "$" "3", "$" "v1" },
[RABBITIZER_REG_GPR_O32_a0] = { "$" "4", "$" "a0" },
[RABBITIZER_REG_GPR_O32_a1] = { "$" "5", "$" "a1" },
[RABBITIZER_REG_GPR_O32_a2] = { "$" "6", "$" "a2" },
[RABBITIZER_REG_GPR_O32_a3] = { "$" "7", "$" "a3" },
[RABBITIZER_REG_GPR_O32_t0] = { "$" "8", "$" "t0" },
[RABBITIZER_REG_GPR_O32_t1] = { "$" "9", "$" "t1" },
[RABBITIZER_REG_GPR_O32_t2] = { "$" "10", "$" "t2" },
[RABBITIZER_REG_GPR_O32_t3] = { "$" "11", "$" "t3" },
[RABBITIZER_REG_GPR_O32_t4] = { "$" "12", "$" "t4" },
[RABBITIZER_REG_GPR_O32_t5] = { "$" "13", "$" "t5" },
[RABBITIZER_REG_GPR_O32_t6] = { "$" "14", "$" "t6" },
[RABBITIZER_REG_GPR_O32_t7] = { "$" "15", "$" "t7" },
[RABBITIZER_REG_GPR_O32_s0] = { "$" "16", "$" "s0" },
[RABBITIZER_REG_GPR_O32_s1] = { "$" "17", "$" "s1" },
[RABBITIZER_REG_GPR_O32_s2] = { "$" "18", "$" "s2" },
[RABBITIZER_REG_GPR_O32_s3] = { "$" "19", "$" "s3" },
[RABBITIZER_REG_GPR_O32_s4] = { "$" "20", "$" "s4" },
[RABBITIZER_REG_GPR_O32_s5] = { "$" "21", "$" "s5" },
[RABBITIZER_REG_GPR_O32_s6] = { "$" "22", "$" "s6" },
[RABBITIZER_REG_GPR_O32_s7] = { "$" "23", "$" "s7" },
[RABBITIZER_REG_GPR_O32_t8] = { "$" "24", "$" "t8" },
[RABBITIZER_REG_GPR_O32_t9] = { "$" "25", "$" "t9" },
[RABBITIZER_REG_GPR_O32_k0] = { "$" "26", "$" "k0" },
[RABBITIZER_REG_GPR_O32_k1] = { "$" "27", "$" "k1" },
[RABBITIZER_REG_GPR_O32_gp] = { "$" "28", "$" "gp" },
[RABBITIZER_REG_GPR_O32_sp] = { "$" "29", "$" "sp" },
[RABBITIZER_REG_GPR_O32_fp] = { "$" "30", "$" "fp" },
[RABBITIZER_REG_GPR_O32_ra] = { "$" "31", "$" "ra" },
};
const char *RabbitizerRegister_GprN32_Names[][2] = {
[RABBITIZER_REG_GPR_N32_zero] = { "$" "0", "$" "zero" },
[RABBITIZER_REG_GPR_N32_at] = { "$" "1", "$" "at" },
[RABBITIZER_REG_GPR_N32_v0] = { "$" "2", "$" "v0" },
[RABBITIZER_REG_GPR_N32_v1] = { "$" "3", "$" "v1" },
[RABBITIZER_REG_GPR_N32_a0] = { "$" "4", "$" "a0" },
[RABBITIZER_REG_GPR_N32_a1] = { "$" "5", "$" "a1" },
[RABBITIZER_REG_GPR_N32_a2] = { "$" "6", "$" "a2" },
[RABBITIZER_REG_GPR_N32_a3] = { "$" "7", "$" "a3" },
[RABBITIZER_REG_GPR_N32_a4] = { "$" "8", "$" "a4" },
[RABBITIZER_REG_GPR_N32_a5] = { "$" "9", "$" "a5" },
[RABBITIZER_REG_GPR_N32_a6] = { "$" "10", "$" "a6" },
[RABBITIZER_REG_GPR_N32_a7] = { "$" "11", "$" "a7" },
[RABBITIZER_REG_GPR_N32_t0] = { "$" "12", "$" "t0" },
[RABBITIZER_REG_GPR_N32_t1] = { "$" "13", "$" "t1" },
[RABBITIZER_REG_GPR_N32_t2] = { "$" "14", "$" "t2" },
[RABBITIZER_REG_GPR_N32_t3] = { "$" "15", "$" "t3" },
[RABBITIZER_REG_GPR_N32_s0] = { "$" "16", "$" "s0" },
[RABBITIZER_REG_GPR_N32_s1] = { "$" "17", "$" "s1" },
[RABBITIZER_REG_GPR_N32_s2] = { "$" "18", "$" "s2" },
[RABBITIZER_REG_GPR_N32_s3] = { "$" "19", "$" "s3" },
[RABBITIZER_REG_GPR_N32_s4] = { "$" "20", "$" "s4" },
[RABBITIZER_REG_GPR_N32_s5] = { "$" "21", "$" "s5" },
[RABBITIZER_REG_GPR_N32_s6] = { "$" "22", "$" "s6" },
[RABBITIZER_REG_GPR_N32_s7] = { "$" "23", "$" "s7" },
[RABBITIZER_REG_GPR_N32_t8] = { "$" "24", "$" "t8" },
[RABBITIZER_REG_GPR_N32_t9] = { "$" "25", "$" "t9" },
[RABBITIZER_REG_GPR_N32_k0] = { "$" "26", "$" "k0" },
[RABBITIZER_REG_GPR_N32_k1] = { "$" "27", "$" "k1" },
[RABBITIZER_REG_GPR_N32_gp] = { "$" "28", "$" "gp" },
[RABBITIZER_REG_GPR_N32_sp] = { "$" "29", "$" "sp" },
[RABBITIZER_REG_GPR_N32_fp] = { "$" "30", "$" "fp" },
[RABBITIZER_REG_GPR_N32_ra] = { "$" "31", "$" "ra" },
};
const char *RabbitizerRegister_Cop0_Names[][2] = {
[RABBITIZER_REG_COP0_Index] = { "$" "0", "Index" },
[RABBITIZER_REG_COP0_Random] = { "$" "1", "Random" },
[RABBITIZER_REG_COP0_EntryLo0] = { "$" "2", "EntryLo0" },
[RABBITIZER_REG_COP0_EntryLo1] = { "$" "3", "EntryLo1" },
[RABBITIZER_REG_COP0_Context] = { "$" "4", "Context" },
[RABBITIZER_REG_COP0_PageMask] = { "$" "5", "PageMask" },
[RABBITIZER_REG_COP0_Wired] = { "$" "6", "Wired" },
[RABBITIZER_REG_COP0_Reserved07] = { "$" "7", "Reserved07" },
[RABBITIZER_REG_COP0_BadVaddr] = { "$" "8", "BadVaddr" },
[RABBITIZER_REG_COP0_Count] = { "$" "9", "Count" },
[RABBITIZER_REG_COP0_EntryHi] = { "$" "10", "EntryHi" },
[RABBITIZER_REG_COP0_Compare] = { "$" "11", "Compare" },
[RABBITIZER_REG_COP0_Status] = { "$" "12", "Status" },
[RABBITIZER_REG_COP0_Cause] = { "$" "13", "Cause" },
[RABBITIZER_REG_COP0_EPC] = { "$" "14", "EPC" },
[RABBITIZER_REG_COP0_PRevID] = { "$" "15", "PRevID" },
[RABBITIZER_REG_COP0_Config] = { "$" "16", "Config" },
[RABBITIZER_REG_COP0_LLAddr] = { "$" "17", "LLAddr" },
[RABBITIZER_REG_COP0_WatchLo] = { "$" "18", "WatchLo" },
[RABBITIZER_REG_COP0_WatchHi] = { "$" "19", "WatchHi" },
[RABBITIZER_REG_COP0_XContext] = { "$" "20", "XContext" },
[RABBITIZER_REG_COP0_Reserved21] = { "$" "21", "Reserved21" },
[RABBITIZER_REG_COP0_Reserved22] = { "$" "22", "Reserved22" },
[RABBITIZER_REG_COP0_Reserved23] = { "$" "23", "Reserved23" },
[RABBITIZER_REG_COP0_Reserved24] = { "$" "24", "Reserved24" },
[RABBITIZER_REG_COP0_Reserved25] = { "$" "25", "Reserved25" },
[RABBITIZER_REG_COP0_PErr] = { "$" "26", "PErr" },
[RABBITIZER_REG_COP0_CacheErr] = { "$" "27", "CacheErr" },
[RABBITIZER_REG_COP0_TagLo] = { "$" "28", "TagLo" },
[RABBITIZER_REG_COP0_TagHi] = { "$" "29", "TagHi" },
[RABBITIZER_REG_COP0_ErrorEPC] = { "$" "30", "ErrorEPC" },
[RABBITIZER_REG_COP0_Reserved31] = { "$" "31", "Reserved31" },
};
const char *RabbitizerRegister_Cop1O32_Names[][2] = {
[RABBITIZER_REG_COP1_O32_fv0] = { "$" "f0", "$" "fv0" },
[RABBITIZER_REG_COP1_O32_fv0f] = { "$" "f1", "$" "fv0f" },
[RABBITIZER_REG_COP1_O32_fv1] = { "$" "f2", "$" "fv1" },
[RABBITIZER_REG_COP1_O32_fv1f] = { "$" "f3", "$" "fv1f" },
[RABBITIZER_REG_COP1_O32_ft0] = { "$" "f4", "$" "ft0" },
[RABBITIZER_REG_COP1_O32_ft0f] = { "$" "f5", "$" "ft0f" },
[RABBITIZER_REG_COP1_O32_ft1] = { "$" "f6", "$" "ft1" },
[RABBITIZER_REG_COP1_O32_ft1f] = { "$" "f7", "$" "ft1f" },
[RABBITIZER_REG_COP1_O32_ft2] = { "$" "f8", "$" "ft2" },
[RABBITIZER_REG_COP1_O32_ft2f] = { "$" "f9", "$" "ft2f" },
[RABBITIZER_REG_COP1_O32_ft3] = { "$" "f10", "$" "ft3" },
[RABBITIZER_REG_COP1_O32_ft3f] = { "$" "f11", "$" "ft3f" },
[RABBITIZER_REG_COP1_O32_fa0] = { "$" "f12", "$" "fa0" },
[RABBITIZER_REG_COP1_O32_fa0f] = { "$" "f13", "$" "fa0f" },
[RABBITIZER_REG_COP1_O32_fa1] = { "$" "f14", "$" "fa1" },
[RABBITIZER_REG_COP1_O32_fa1f] = { "$" "f15", "$" "fa1f" },
[RABBITIZER_REG_COP1_O32_ft4] = { "$" "f16", "$" "ft4" },
[RABBITIZER_REG_COP1_O32_ft4f] = { "$" "f17", "$" "ft4f" },
[RABBITIZER_REG_COP1_O32_ft5] = { "$" "f18", "$" "ft5" },
[RABBITIZER_REG_COP1_O32_ft5f] = { "$" "f19", "$" "ft5f" },
[RABBITIZER_REG_COP1_O32_fs0] = { "$" "f20", "$" "fs0" },
[RABBITIZER_REG_COP1_O32_fs0f] = { "$" "f21", "$" "fs0f" },
[RABBITIZER_REG_COP1_O32_fs1] = { "$" "f22", "$" "fs1" },
[RABBITIZER_REG_COP1_O32_fs1f] = { "$" "f23", "$" "fs1f" },
[RABBITIZER_REG_COP1_O32_fs2] = { "$" "f24", "$" "fs2" },
[RABBITIZER_REG_COP1_O32_fs2f] = { "$" "f25", "$" "fs2f" },
[RABBITIZER_REG_COP1_O32_fs3] = { "$" "f26", "$" "fs3" },
[RABBITIZER_REG_COP1_O32_fs3f] = { "$" "f27", "$" "fs3f" },
[RABBITIZER_REG_COP1_O32_fs4] = { "$" "f28", "$" "fs4" },
[RABBITIZER_REG_COP1_O32_fs4f] = { "$" "f29", "$" "fs4f" },
[RABBITIZER_REG_COP1_O32_fs5] = { "$" "f30", "$" "fs5" },
[RABBITIZER_REG_COP1_O32_fs5f] = { "$" "f31", "$" "fs5f" },
};
const char *RabbitizerRegister_Cop1N32_Names[][2] = {
[RABBITIZER_REG_COP1_N32_fv0] = { "$" "f0", "$" "fv0" },
[RABBITIZER_REG_COP1_N32_ft14] = { "$" "f1", "$" "ft14" },
[RABBITIZER_REG_COP1_N32_fv1] = { "$" "f2", "$" "fv1" },
[RABBITIZER_REG_COP1_N32_ft15] = { "$" "f3", "$" "ft15" },
[RABBITIZER_REG_COP1_N32_ft0] = { "$" "f4", "$" "ft0" },
[RABBITIZER_REG_COP1_N32_ft1] = { "$" "f5", "$" "ft1" },
[RABBITIZER_REG_COP1_N32_ft2] = { "$" "f6", "$" "ft2" },
[RABBITIZER_REG_COP1_N32_ft3] = { "$" "f7", "$" "ft3" },
[RABBITIZER_REG_COP1_N32_ft4] = { "$" "f8", "$" "ft4" },
[RABBITIZER_REG_COP1_N32_ft5] = { "$" "f9", "$" "ft5" },
[RABBITIZER_REG_COP1_N32_ft6] = { "$" "f10", "$" "ft6" },
[RABBITIZER_REG_COP1_N32_ft7] = { "$" "f11", "$" "ft7" },
[RABBITIZER_REG_COP1_N32_fa0] = { "$" "f12", "$" "fa0" },
[RABBITIZER_REG_COP1_N32_fa1] = { "$" "f13", "$" "fa1" },
[RABBITIZER_REG_COP1_N32_fa2] = { "$" "f14", "$" "fa2" },
[RABBITIZER_REG_COP1_N32_fa3] = { "$" "f15", "$" "fa3" },
[RABBITIZER_REG_COP1_N32_fa4] = { "$" "f16", "$" "fa4" },
[RABBITIZER_REG_COP1_N32_fa5] = { "$" "f17", "$" "fa5" },
[RABBITIZER_REG_COP1_N32_fa6] = { "$" "f18", "$" "fa6" },
[RABBITIZER_REG_COP1_N32_fa7] = { "$" "f19", "$" "fa7" },
[RABBITIZER_REG_COP1_N32_fs0] = { "$" "f20", "$" "fs0" },
[RABBITIZER_REG_COP1_N32_ft8] = { "$" "f21", "$" "ft8" },
[RABBITIZER_REG_COP1_N32_fs1] = { "$" "f22", "$" "fs1" },
[RABBITIZER_REG_COP1_N32_ft9] = { "$" "f23", "$" "ft9" },
[RABBITIZER_REG_COP1_N32_fs2] = { "$" "f24", "$" "fs2" },
[RABBITIZER_REG_COP1_N32_ft10] = { "$" "f25", "$" "ft10" },
[RABBITIZER_REG_COP1_N32_fs3] = { "$" "f26", "$" "fs3" },
[RABBITIZER_REG_COP1_N32_ft11] = { "$" "f27", "$" "ft11" },
[RABBITIZER_REG_COP1_N32_fs4] = { "$" "f28", "$" "fs4" },
[RABBITIZER_REG_COP1_N32_ft12] = { "$" "f29", "$" "ft12" },
[RABBITIZER_REG_COP1_N32_fs5] = { "$" "f30", "$" "fs5" },
[RABBITIZER_REG_COP1_N32_ft13] = { "$" "f31", "$" "ft13" },
};
const char *RabbitizerRegister_Cop1N64_Names[][2] = {
[RABBITIZER_REG_COP1_N64_fv0] = { "$" "f0", "$" "fv0" },
[RABBITIZER_REG_COP1_N64_ft12] = { "$" "f1", "$" "ft12" },
[RABBITIZER_REG_COP1_N64_fv1] = { "$" "f2", "$" "fv1" },
[RABBITIZER_REG_COP1_N64_ft13] = { "$" "f3", "$" "ft13" },
[RABBITIZER_REG_COP1_N64_ft0] = { "$" "f4", "$" "ft0" },
[RABBITIZER_REG_COP1_N64_ft1] = { "$" "f5", "$" "ft1" },
[RABBITIZER_REG_COP1_N64_ft2] = { "$" "f6", "$" "ft2" },
[RABBITIZER_REG_COP1_N64_ft3] = { "$" "f7", "$" "ft3" },
[RABBITIZER_REG_COP1_N64_ft4] = { "$" "f8", "$" "ft4" },
[RABBITIZER_REG_COP1_N64_ft5] = { "$" "f9", "$" "ft5" },
[RABBITIZER_REG_COP1_N64_ft6] = { "$" "f10", "$" "ft6" },
[RABBITIZER_REG_COP1_N64_ft7] = { "$" "f11", "$" "ft7" },
[RABBITIZER_REG_COP1_N64_fa0] = { "$" "f12", "$" "fa0" },
[RABBITIZER_REG_COP1_N64_fa1] = { "$" "f13", "$" "fa1" },
[RABBITIZER_REG_COP1_N64_fa2] = { "$" "f14", "$" "fa2" },
[RABBITIZER_REG_COP1_N64_fa3] = { "$" "f15", "$" "fa3" },
[RABBITIZER_REG_COP1_N64_fa4] = { "$" "f16", "$" "fa4" },
[RABBITIZER_REG_COP1_N64_fa5] = { "$" "f17", "$" "fa5" },
[RABBITIZER_REG_COP1_N64_fa6] = { "$" "f18", "$" "fa6" },
[RABBITIZER_REG_COP1_N64_fa7] = { "$" "f19", "$" "fa7" },
[RABBITIZER_REG_COP1_N64_ft8] = { "$" "f20", "$" "ft8" },
[RABBITIZER_REG_COP1_N64_ft9] = { "$" "f21", "$" "ft9" },
[RABBITIZER_REG_COP1_N64_ft10] = { "$" "f22", "$" "ft10" },
[RABBITIZER_REG_COP1_N64_ft11] = { "$" "f23", "$" "ft11" },
[RABBITIZER_REG_COP1_N64_fs0] = { "$" "f24", "$" "fs0" },
[RABBITIZER_REG_COP1_N64_fs1] = { "$" "f25", "$" "fs1" },
[RABBITIZER_REG_COP1_N64_fs2] = { "$" "f26", "$" "fs2" },
[RABBITIZER_REG_COP1_N64_fs3] = { "$" "f27", "$" "fs3" },
[RABBITIZER_REG_COP1_N64_fs4] = { "$" "f28", "$" "fs4" },
[RABBITIZER_REG_COP1_N64_fs5] = { "$" "f29", "$" "fs5" },
[RABBITIZER_REG_COP1_N64_fs6] = { "$" "f30", "$" "fs6" },
[RABBITIZER_REG_COP1_N64_fs7] = { "$" "f31", "$" "fs7" },
};
const char *RabbitizerRegister_Cop1Control_Names[][2] = {
[RABBITIZER_REG_COP1_CONTROL_0] = { "$" "0", "$" "0" },
[RABBITIZER_REG_COP1_CONTROL_1] = { "$" "1", "$" "1" },
[RABBITIZER_REG_COP1_CONTROL_2] = { "$" "2", "$" "2" },
[RABBITIZER_REG_COP1_CONTROL_3] = { "$" "3", "$" "3" },
[RABBITIZER_REG_COP1_CONTROL_4] = { "$" "4", "$" "4" },
[RABBITIZER_REG_COP1_CONTROL_5] = { "$" "5", "$" "5" },
[RABBITIZER_REG_COP1_CONTROL_6] = { "$" "6", "$" "6" },
[RABBITIZER_REG_COP1_CONTROL_7] = { "$" "7", "$" "7" },
[RABBITIZER_REG_COP1_CONTROL_8] = { "$" "8", "$" "8" },
[RABBITIZER_REG_COP1_CONTROL_9] = { "$" "9", "$" "9" },
[RABBITIZER_REG_COP1_CONTROL_10] = { "$" "10", "$" "10" },
[RABBITIZER_REG_COP1_CONTROL_11] = { "$" "11", "$" "11" },
[RABBITIZER_REG_COP1_CONTROL_12] = { "$" "12", "$" "12" },
[RABBITIZER_REG_COP1_CONTROL_13] = { "$" "13", "$" "13" },
[RABBITIZER_REG_COP1_CONTROL_14] = { "$" "14", "$" "14" },
[RABBITIZER_REG_COP1_CONTROL_15] = { "$" "15", "$" "15" },
[RABBITIZER_REG_COP1_CONTROL_16] = { "$" "16", "$" "16" },
[RABBITIZER_REG_COP1_CONTROL_17] = { "$" "17", "$" "17" },
[RABBITIZER_REG_COP1_CONTROL_18] = { "$" "18", "$" "18" },
[RABBITIZER_REG_COP1_CONTROL_19] = { "$" "19", "$" "19" },
[RABBITIZER_REG_COP1_CONTROL_20] = { "$" "20", "$" "20" },
[RABBITIZER_REG_COP1_CONTROL_21] = { "$" "21", "$" "21" },
[RABBITIZER_REG_COP1_CONTROL_22] = { "$" "22", "$" "22" },
[RABBITIZER_REG_COP1_CONTROL_23] = { "$" "23", "$" "23" },
[RABBITIZER_REG_COP1_CONTROL_24] = { "$" "24", "$" "24" },
[RABBITIZER_REG_COP1_CONTROL_25] = { "$" "25", "$" "25" },
[RABBITIZER_REG_COP1_CONTROL_26] = { "$" "26", "$" "26" },
[RABBITIZER_REG_COP1_CONTROL_27] = { "$" "27", "$" "27" },
[RABBITIZER_REG_COP1_CONTROL_28] = { "$" "28", "$" "28" },
[RABBITIZER_REG_COP1_CONTROL_29] = { "$" "29", "$" "29" },
[RABBITIZER_REG_COP1_CONTROL_30] = { "$" "30", "$" "30" },
[RABBITIZER_REG_COP1_CONTROL_FpcCsr] = { "$" "31", "$" "FpcCsr" },
};
const char *RabbitizerRegister_Cop2_Names[][2] = {
[RABBITIZER_REG_COP2_0] = { "$" "0", "$" "0" },
[RABBITIZER_REG_COP2_1] = { "$" "1", "$" "1" },
[RABBITIZER_REG_COP2_2] = { "$" "2", "$" "2" },
[RABBITIZER_REG_COP2_3] = { "$" "3", "$" "3" },
[RABBITIZER_REG_COP2_4] = { "$" "4", "$" "4" },
[RABBITIZER_REG_COP2_5] = { "$" "5", "$" "5" },
[RABBITIZER_REG_COP2_6] = { "$" "6", "$" "6" },
[RABBITIZER_REG_COP2_7] = { "$" "7", "$" "7" },
[RABBITIZER_REG_COP2_8] = { "$" "8", "$" "8" },
[RABBITIZER_REG_COP2_9] = { "$" "9", "$" "9" },
[RABBITIZER_REG_COP2_10] = { "$" "10", "$" "10" },
[RABBITIZER_REG_COP2_11] = { "$" "11", "$" "11" },
[RABBITIZER_REG_COP2_12] = { "$" "12", "$" "12" },
[RABBITIZER_REG_COP2_13] = { "$" "13", "$" "13" },
[RABBITIZER_REG_COP2_14] = { "$" "14", "$" "14" },
[RABBITIZER_REG_COP2_15] = { "$" "15", "$" "15" },
[RABBITIZER_REG_COP2_16] = { "$" "16", "$" "16" },
[RABBITIZER_REG_COP2_17] = { "$" "17", "$" "17" },
[RABBITIZER_REG_COP2_18] = { "$" "18", "$" "18" },
[RABBITIZER_REG_COP2_19] = { "$" "19", "$" "19" },
[RABBITIZER_REG_COP2_20] = { "$" "20", "$" "20" },
[RABBITIZER_REG_COP2_21] = { "$" "21", "$" "21" },
[RABBITIZER_REG_COP2_22] = { "$" "22", "$" "22" },
[RABBITIZER_REG_COP2_23] = { "$" "23", "$" "23" },
[RABBITIZER_REG_COP2_24] = { "$" "24", "$" "24" },
[RABBITIZER_REG_COP2_25] = { "$" "25", "$" "25" },
[RABBITIZER_REG_COP2_26] = { "$" "26", "$" "26" },
[RABBITIZER_REG_COP2_27] = { "$" "27", "$" "27" },
[RABBITIZER_REG_COP2_28] = { "$" "28", "$" "28" },
[RABBITIZER_REG_COP2_29] = { "$" "29", "$" "29" },
[RABBITIZER_REG_COP2_30] = { "$" "30", "$" "30" },
[RABBITIZER_REG_COP2_31] = { "$" "31", "$" "31" },
};
const char *RabbitizerRegister_RspGpr_Names[][2] = {
[RABBITIZER_REG_RSP_GPR_zero] = { "$" "0", "$" "zero" },
[RABBITIZER_REG_RSP_GPR_1] = { "$" "1", "$" "1" },
[RABBITIZER_REG_RSP_GPR_2] = { "$" "2", "$" "2" },
[RABBITIZER_REG_RSP_GPR_3] = { "$" "3", "$" "3" },
[RABBITIZER_REG_RSP_GPR_4] = { "$" "4", "$" "4" },
[RABBITIZER_REG_RSP_GPR_5] = { "$" "5", "$" "5" },
[RABBITIZER_REG_RSP_GPR_6] = { "$" "6", "$" "6" },
[RABBITIZER_REG_RSP_GPR_7] = { "$" "7", "$" "7" },
[RABBITIZER_REG_RSP_GPR_8] = { "$" "8", "$" "8" },
[RABBITIZER_REG_RSP_GPR_9] = { "$" "9", "$" "9" },
[RABBITIZER_REG_RSP_GPR_10] = { "$" "10", "$" "10" },
[RABBITIZER_REG_RSP_GPR_11] = { "$" "11", "$" "11" },
[RABBITIZER_REG_RSP_GPR_12] = { "$" "12", "$" "12" },
[RABBITIZER_REG_RSP_GPR_13] = { "$" "13", "$" "13" },
[RABBITIZER_REG_RSP_GPR_14] = { "$" "14", "$" "14" },
[RABBITIZER_REG_RSP_GPR_15] = { "$" "15", "$" "15" },
[RABBITIZER_REG_RSP_GPR_16] = { "$" "16", "$" "16" },
[RABBITIZER_REG_RSP_GPR_17] = { "$" "17", "$" "17" },
[RABBITIZER_REG_RSP_GPR_18] = { "$" "18", "$" "18" },
[RABBITIZER_REG_RSP_GPR_19] = { "$" "19", "$" "19" },
[RABBITIZER_REG_RSP_GPR_20] = { "$" "20", "$" "20" },
[RABBITIZER_REG_RSP_GPR_21] = { "$" "21", "$" "21" },
[RABBITIZER_REG_RSP_GPR_22] = { "$" "22", "$" "22" },
[RABBITIZER_REG_RSP_GPR_23] = { "$" "23", "$" "23" },
[RABBITIZER_REG_RSP_GPR_24] = { "$" "24", "$" "24" },
[RABBITIZER_REG_RSP_GPR_25] = { "$" "25", "$" "25" },
[RABBITIZER_REG_RSP_GPR_26] = { "$" "26", "$" "26" },
[RABBITIZER_REG_RSP_GPR_27] = { "$" "27", "$" "27" },
[RABBITIZER_REG_RSP_GPR_28] = { "$" "28", "$" "28" },
[RABBITIZER_REG_RSP_GPR_29] = { "$" "29", "$" "29" },
[RABBITIZER_REG_RSP_GPR_30] = { "$" "30", "$" "30" },
[RABBITIZER_REG_RSP_GPR_ra] = { "$" "31", "$" "ra" },
};
const char *RabbitizerRegister_RspCop0_Names[][2] = {
[RABBITIZER_REG_RSP_COP0_SP_MEM_ADDR] = { "$" "0", "SP_MEM_ADDR" },
[RABBITIZER_REG_RSP_COP0_SP_DRAM_ADDR] = { "$" "1", "SP_DRAM_ADDR" },
[RABBITIZER_REG_RSP_COP0_SP_RD_LEN] = { "$" "2", "SP_RD_LEN" },
[RABBITIZER_REG_RSP_COP0_SP_WR_LEN] = { "$" "3", "SP_WR_LEN" },
[RABBITIZER_REG_RSP_COP0_SP_STATUS] = { "$" "4", "SP_STATUS" },
[RABBITIZER_REG_RSP_COP0_SP_DMA_FULL] = { "$" "5", "SP_DMA_FULL" },
[RABBITIZER_REG_RSP_COP0_SP_DMA_BUSY] = { "$" "6", "SP_DMA_BUSY" },
[RABBITIZER_REG_RSP_COP0_SP_SEMAPHORE] = { "$" "7", "SP_SEMAPHORE" },
[RABBITIZER_REG_RSP_COP0_DPC_START] = { "$" "8", "DPC_START" },
[RABBITIZER_REG_RSP_COP0_DPC_END] = { "$" "9", "DPC_END" },
[RABBITIZER_REG_RSP_COP0_DPC_CURRENT] = { "$" "10", "DPC_CURRENT" },
[RABBITIZER_REG_RSP_COP0_DPC_STATUS] = { "$" "11", "DPC_STATUS" },
[RABBITIZER_REG_RSP_COP0_DPC_CLOCK] = { "$" "12", "DPC_CLOCK" },
[RABBITIZER_REG_RSP_COP0_DPC_BUFBUSY] = { "$" "13", "DPC_BUFBUSY" },
[RABBITIZER_REG_RSP_COP0_DPC_PIPEBUSY] = { "$" "14", "DPC_PIPEBUSY" },
[RABBITIZER_REG_RSP_COP0_DPC_TMEM] = { "$" "15", "DPC_TMEM" },
};
const char *RabbitizerRegister_RspCop2_Names[][2] = {
[RABBITIZER_REG_RSP_COP2_0] = { "$" "0", "$" "0" },
[RABBITIZER_REG_RSP_COP2_1] = { "$" "1", "$" "1" },
[RABBITIZER_REG_RSP_COP2_2] = { "$" "2", "$" "2" },
[RABBITIZER_REG_RSP_COP2_3] = { "$" "3", "$" "3" },
[RABBITIZER_REG_RSP_COP2_4] = { "$" "4", "$" "4" },
[RABBITIZER_REG_RSP_COP2_5] = { "$" "5", "$" "5" },
[RABBITIZER_REG_RSP_COP2_6] = { "$" "6", "$" "6" },
[RABBITIZER_REG_RSP_COP2_7] = { "$" "7", "$" "7" },
[RABBITIZER_REG_RSP_COP2_8] = { "$" "8", "$" "8" },
[RABBITIZER_REG_RSP_COP2_9] = { "$" "9", "$" "9" },
[RABBITIZER_REG_RSP_COP2_10] = { "$" "10", "$" "10" },
[RABBITIZER_REG_RSP_COP2_11] = { "$" "11", "$" "11" },
[RABBITIZER_REG_RSP_COP2_12] = { "$" "12", "$" "12" },
[RABBITIZER_REG_RSP_COP2_13] = { "$" "13", "$" "13" },
[RABBITIZER_REG_RSP_COP2_14] = { "$" "14", "$" "14" },
[RABBITIZER_REG_RSP_COP2_15] = { "$" "15", "$" "15" },
[RABBITIZER_REG_RSP_COP2_16] = { "$" "16", "$" "16" },
[RABBITIZER_REG_RSP_COP2_17] = { "$" "17", "$" "17" },
[RABBITIZER_REG_RSP_COP2_18] = { "$" "18", "$" "18" },
[RABBITIZER_REG_RSP_COP2_19] = { "$" "19", "$" "19" },
[RABBITIZER_REG_RSP_COP2_20] = { "$" "20", "$" "20" },
[RABBITIZER_REG_RSP_COP2_21] = { "$" "21", "$" "21" },
[RABBITIZER_REG_RSP_COP2_22] = { "$" "22", "$" "22" },
[RABBITIZER_REG_RSP_COP2_23] = { "$" "23", "$" "23" },
[RABBITIZER_REG_RSP_COP2_24] = { "$" "24", "$" "24" },
[RABBITIZER_REG_RSP_COP2_25] = { "$" "25", "$" "25" },
[RABBITIZER_REG_RSP_COP2_26] = { "$" "26", "$" "26" },
[RABBITIZER_REG_RSP_COP2_27] = { "$" "27", "$" "27" },
[RABBITIZER_REG_RSP_COP2_28] = { "$" "28", "$" "28" },
[RABBITIZER_REG_RSP_COP2_29] = { "$" "29", "$" "29" },
[RABBITIZER_REG_RSP_COP2_30] = { "$" "30", "$" "30" },
[RABBITIZER_REG_RSP_COP2_31] = { "$" "31", "$" "31" },
};
const char *RabbitizerRegister_RspCop2Control_Names[][2] = {
[RABBITIZER_REG_RSP_COP2_CONTROL_0] = { "$" "0", "$" "0" },
[RABBITIZER_REG_RSP_COP2_CONTROL_1] = { "$" "1", "$" "1" },
[RABBITIZER_REG_RSP_COP2_CONTROL_2] = { "$" "2", "$" "2" },
[RABBITIZER_REG_RSP_COP2_CONTROL_3] = { "$" "3", "$" "3" },
[RABBITIZER_REG_RSP_COP2_CONTROL_4] = { "$" "4", "$" "4" },
[RABBITIZER_REG_RSP_COP2_CONTROL_5] = { "$" "5", "$" "5" },
[RABBITIZER_REG_RSP_COP2_CONTROL_6] = { "$" "6", "$" "6" },
[RABBITIZER_REG_RSP_COP2_CONTROL_7] = { "$" "7", "$" "7" },
[RABBITIZER_REG_RSP_COP2_CONTROL_8] = { "$" "8", "$" "8" },
[RABBITIZER_REG_RSP_COP2_CONTROL_9] = { "$" "9", "$" "9" },
[RABBITIZER_REG_RSP_COP2_CONTROL_10] = { "$" "10", "$" "10" },
[RABBITIZER_REG_RSP_COP2_CONTROL_11] = { "$" "11", "$" "11" },
[RABBITIZER_REG_RSP_COP2_CONTROL_12] = { "$" "12", "$" "12" },
[RABBITIZER_REG_RSP_COP2_CONTROL_13] = { "$" "13", "$" "13" },
[RABBITIZER_REG_RSP_COP2_CONTROL_14] = { "$" "14", "$" "14" },
[RABBITIZER_REG_RSP_COP2_CONTROL_15] = { "$" "15", "$" "15" },
[RABBITIZER_REG_RSP_COP2_CONTROL_16] = { "$" "16", "$" "16" },
[RABBITIZER_REG_RSP_COP2_CONTROL_17] = { "$" "17", "$" "17" },
[RABBITIZER_REG_RSP_COP2_CONTROL_18] = { "$" "18", "$" "18" },
[RABBITIZER_REG_RSP_COP2_CONTROL_19] = { "$" "19", "$" "19" },
[RABBITIZER_REG_RSP_COP2_CONTROL_20] = { "$" "20", "$" "20" },
[RABBITIZER_REG_RSP_COP2_CONTROL_21] = { "$" "21", "$" "21" },
[RABBITIZER_REG_RSP_COP2_CONTROL_22] = { "$" "22", "$" "22" },
[RABBITIZER_REG_RSP_COP2_CONTROL_23] = { "$" "23", "$" "23" },
[RABBITIZER_REG_RSP_COP2_CONTROL_24] = { "$" "24", "$" "24" },
[RABBITIZER_REG_RSP_COP2_CONTROL_25] = { "$" "25", "$" "25" },
[RABBITIZER_REG_RSP_COP2_CONTROL_26] = { "$" "26", "$" "26" },
[RABBITIZER_REG_RSP_COP2_CONTROL_27] = { "$" "27", "$" "27" },
[RABBITIZER_REG_RSP_COP2_CONTROL_28] = { "$" "28", "$" "28" },
[RABBITIZER_REG_RSP_COP2_CONTROL_29] = { "$" "29", "$" "29" },
[RABBITIZER_REG_RSP_COP2_CONTROL_30] = { "$" "30", "$" "30" },
[RABBITIZER_REG_COP1_CONTROL_31] = { "$" "31", "$" "31" },
};
const char *RabbitizerRegister_RspVector_Names[][2] = {
[RABBITIZER_REG_RSP_VECTOR_v0] = { "$" "0", "$" "v0" },
[RABBITIZER_REG_RSP_VECTOR_v1] = { "$" "1", "$" "v1" },
[RABBITIZER_REG_RSP_VECTOR_v2] = { "$" "2", "$" "v2" },
[RABBITIZER_REG_RSP_VECTOR_v3] = { "$" "3", "$" "v3" },
[RABBITIZER_REG_RSP_VECTOR_v4] = { "$" "4", "$" "v4" },
[RABBITIZER_REG_RSP_VECTOR_v5] = { "$" "5", "$" "v5" },
[RABBITIZER_REG_RSP_VECTOR_v6] = { "$" "6", "$" "v6" },
[RABBITIZER_REG_RSP_VECTOR_v7] = { "$" "7", "$" "v7" },
[RABBITIZER_REG_RSP_VECTOR_v8] = { "$" "8", "$" "v8" },
[RABBITIZER_REG_RSP_VECTOR_v9] = { "$" "9", "$" "v9" },
[RABBITIZER_REG_RSP_VECTOR_v10] = { "$" "10", "$" "v10" },
[RABBITIZER_REG_RSP_VECTOR_v11] = { "$" "11", "$" "v11" },
[RABBITIZER_REG_RSP_VECTOR_v12] = { "$" "12", "$" "v12" },
[RABBITIZER_REG_RSP_VECTOR_v13] = { "$" "13", "$" "v13" },
[RABBITIZER_REG_RSP_VECTOR_v14] = { "$" "14", "$" "v14" },
[RABBITIZER_REG_RSP_VECTOR_v15] = { "$" "15", "$" "v15" },
[RABBITIZER_REG_RSP_VECTOR_v16] = { "$" "16", "$" "v16" },
[RABBITIZER_REG_RSP_VECTOR_v17] = { "$" "17", "$" "v17" },
[RABBITIZER_REG_RSP_VECTOR_v18] = { "$" "18", "$" "v18" },
[RABBITIZER_REG_RSP_VECTOR_v19] = { "$" "19", "$" "v19" },
[RABBITIZER_REG_RSP_VECTOR_v20] = { "$" "20", "$" "v20" },
[RABBITIZER_REG_RSP_VECTOR_v21] = { "$" "21", "$" "v21" },
[RABBITIZER_REG_RSP_VECTOR_v22] = { "$" "22", "$" "v22" },
[RABBITIZER_REG_RSP_VECTOR_v23] = { "$" "23", "$" "v23" },
[RABBITIZER_REG_RSP_VECTOR_v24] = { "$" "24", "$" "v24" },
[RABBITIZER_REG_RSP_VECTOR_v25] = { "$" "25", "$" "v25" },
[RABBITIZER_REG_RSP_VECTOR_v26] = { "$" "26", "$" "v26" },
[RABBITIZER_REG_RSP_VECTOR_v27] = { "$" "27", "$" "v27" },
[RABBITIZER_REG_RSP_VECTOR_v28] = { "$" "28", "$" "v28" },
[RABBITIZER_REG_RSP_VECTOR_v29] = { "$" "29", "$" "v29" },
[RABBITIZER_REG_RSP_VECTOR_v30] = { "$" "30", "$" "v30" },
[RABBITIZER_REG_RSP_VECTOR_v31] = { "$" "31", "$" "v31" },
};
const char *RabbitizerRegister_R5900VF_Names[][2] = {
[RABBITIZER_REG_R5900_VF_vf0] = { "$" "0", "$" "vf0" },
[RABBITIZER_REG_R5900_VF_vf1] = { "$" "1", "$" "vf1" },
[RABBITIZER_REG_R5900_VF_vf2] = { "$" "2", "$" "vf2" },
[RABBITIZER_REG_R5900_VF_vf3] = { "$" "3", "$" "vf3" },
[RABBITIZER_REG_R5900_VF_vf4] = { "$" "4", "$" "vf4" },
[RABBITIZER_REG_R5900_VF_vf5] = { "$" "5", "$" "vf5" },
[RABBITIZER_REG_R5900_VF_vf6] = { "$" "6", "$" "vf6" },
[RABBITIZER_REG_R5900_VF_vf7] = { "$" "7", "$" "vf7" },
[RABBITIZER_REG_R5900_VF_vf8] = { "$" "8", "$" "vf8" },
[RABBITIZER_REG_R5900_VF_vf9] = { "$" "9", "$" "vf9" },
[RABBITIZER_REG_R5900_VF_vf10] = { "$" "10", "$" "vf10" },
[RABBITIZER_REG_R5900_VF_vf11] = { "$" "11", "$" "vf11" },
[RABBITIZER_REG_R5900_VF_vf12] = { "$" "12", "$" "vf12" },
[RABBITIZER_REG_R5900_VF_vf13] = { "$" "13", "$" "vf13" },
[RABBITIZER_REG_R5900_VF_vf14] = { "$" "14", "$" "vf14" },
[RABBITIZER_REG_R5900_VF_vf15] = { "$" "15", "$" "vf15" },
[RABBITIZER_REG_R5900_VF_vf16] = { "$" "16", "$" "vf16" },
[RABBITIZER_REG_R5900_VF_vf17] = { "$" "17", "$" "vf17" },
[RABBITIZER_REG_R5900_VF_vf18] = { "$" "18", "$" "vf18" },
[RABBITIZER_REG_R5900_VF_vf19] = { "$" "19", "$" "vf19" },
[RABBITIZER_REG_R5900_VF_vf20] = { "$" "20", "$" "vf20" },
[RABBITIZER_REG_R5900_VF_vf21] = { "$" "21", "$" "vf21" },
[RABBITIZER_REG_R5900_VF_vf22] = { "$" "22", "$" "vf22" },
[RABBITIZER_REG_R5900_VF_vf23] = { "$" "23", "$" "vf23" },
[RABBITIZER_REG_R5900_VF_vf24] = { "$" "24", "$" "vf24" },
[RABBITIZER_REG_R5900_VF_vf25] = { "$" "25", "$" "vf25" },
[RABBITIZER_REG_R5900_VF_vf26] = { "$" "26", "$" "vf26" },
[RABBITIZER_REG_R5900_VF_vf27] = { "$" "27", "$" "vf27" },
[RABBITIZER_REG_R5900_VF_vf28] = { "$" "28", "$" "vf28" },
[RABBITIZER_REG_R5900_VF_vf29] = { "$" "29", "$" "vf29" },
[RABBITIZER_REG_R5900_VF_vf30] = { "$" "30", "$" "vf30" },
[RABBITIZER_REG_R5900_VF_vf31] = { "$" "31", "$" "vf31" },
};
const char *RabbitizerRegister_R5900VI_Names[][2] = {
[RABBITIZER_REG_R5900_VI_vi0] = { "$" "0", "$" "vi0" },
[RABBITIZER_REG_R5900_VI_vi1] = { "$" "1", "$" "vi1" },
[RABBITIZER_REG_R5900_VI_vi2] = { "$" "2", "$" "vi2" },
[RABBITIZER_REG_R5900_VI_vi3] = { "$" "3", "$" "vi3" },
[RABBITIZER_REG_R5900_VI_vi4] = { "$" "4", "$" "vi4" },
[RABBITIZER_REG_R5900_VI_vi5] = { "$" "5", "$" "vi5" },
[RABBITIZER_REG_R5900_VI_vi6] = { "$" "6", "$" "vi6" },
[RABBITIZER_REG_R5900_VI_vi7] = { "$" "7", "$" "vi7" },
[RABBITIZER_REG_R5900_VI_vi8] = { "$" "8", "$" "vi8" },
[RABBITIZER_REG_R5900_VI_vi9] = { "$" "9", "$" "vi9" },
[RABBITIZER_REG_R5900_VI_vi10] = { "$" "10", "$" "vi10" },
[RABBITIZER_REG_R5900_VI_vi11] = { "$" "11", "$" "vi11" },
[RABBITIZER_REG_R5900_VI_vi12] = { "$" "12", "$" "vi12" },
[RABBITIZER_REG_R5900_VI_vi13] = { "$" "13", "$" "vi13" },
[RABBITIZER_REG_R5900_VI_vi14] = { "$" "14", "$" "vi14" },
[RABBITIZER_REG_R5900_VI_vi15] = { "$" "15", "$" "vi15" },
[RABBITIZER_REG_R5900_VI_vi16] = { "$" "16", "$" "vi16" },
[RABBITIZER_REG_R5900_VI_vi17] = { "$" "17", "$" "vi17" },
[RABBITIZER_REG_R5900_VI_vi18] = { "$" "18", "$" "vi18" },
[RABBITIZER_REG_R5900_VI_vi19] = { "$" "19", "$" "vi19" },
[RABBITIZER_REG_R5900_VI_vi20] = { "$" "20", "$" "vi20" },
[RABBITIZER_REG_R5900_VI_vi21] = { "$" "21", "$" "vi21" },
[RABBITIZER_REG_R5900_VI_vi22] = { "$" "22", "$" "vi22" },
[RABBITIZER_REG_R5900_VI_vi23] = { "$" "23", "$" "vi23" },
[RABBITIZER_REG_R5900_VI_vi24] = { "$" "24", "$" "vi24" },
[RABBITIZER_REG_R5900_VI_vi25] = { "$" "25", "$" "vi25" },
[RABBITIZER_REG_R5900_VI_vi26] = { "$" "26", "$" "vi26" },
[RABBITIZER_REG_R5900_VI_vi27] = { "$" "27", "$" "vi27" },
[RABBITIZER_REG_R5900_VI_vi28] = { "$" "28", "$" "vi28" },
[RABBITIZER_REG_R5900_VI_vi29] = { "$" "29", "$" "vi29" },
[RABBITIZER_REG_R5900_VI_vi30] = { "$" "30", "$" "vi30" },
[RABBITIZER_REG_R5900_VI_vi31] = { "$" "31", "$" "vi31" },
};
#endif

View File

@ -0,0 +1,79 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RABBITIZER_DEF_REG(prefix, name, numeric) [RABBITIZER_REG_##prefix##_##name] = { "$" #numeric, "$" #name }
#define RABBITIZER_DEF_REG_NODOLLAR(prefix, name, numeric) [RABBITIZER_REG_##prefix##_##name] = { "$" #numeric, #name }
// numeric, named
const char *RabbitizerRegister_GprO32_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_GprO32.inc"
};
const char *RabbitizerRegister_GprN32_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_GprN32.inc"
};
const char *RabbitizerRegister_Cop0_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_Cop0.inc"
};
const char *RabbitizerRegister_Cop1O32_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_Cop1O32.inc"
};
const char *RabbitizerRegister_Cop1N32_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_Cop1N32.inc"
};
const char *RabbitizerRegister_Cop1N64_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_Cop1N64.inc"
};
const char *RabbitizerRegister_Cop1Control_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_Cop1Control.inc"
};
const char *RabbitizerRegister_Cop2_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_Cop2.inc"
};
/* RSP */
const char *RabbitizerRegister_RspGpr_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_RspGpr.inc"
};
const char *RabbitizerRegister_RspCop0_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_RspCop0.inc"
};
const char *RabbitizerRegister_RspCop2_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_RspCop2.inc"
};
const char *RabbitizerRegister_RspCop2Control_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_RspCop2Control.inc"
};
const char *RabbitizerRegister_RspVector_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_RspVector.inc"
};
/* RSP */
/* R5900 */
const char *RabbitizerRegister_R5900VF_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_R5900VF.inc"
};
const char *RabbitizerRegister_R5900VI_Names[][2] = {
#include "instructions/registers/RabbitizerRegister_R5900VI.inc"
};
/* R5900 */
#undef RABBITIZER_DEF_REG
#undef RABBITIZER_DEF_REG_NODOLLAR

View File

@ -12,14 +12,18 @@ HEADER_GUARD_BAD=$3
# Change dots to underscores
HEADER_GUARD=$(echo ${HEADER_GUARD_BAD} | sed 's/\./_/g')
echo "#ifndef ${HEADER_GUARD}_automatic" > ${OUTPUT_FILE}
echo "#define ${HEADER_GUARD}_automatic" >> ${OUTPUT_FILE}
echo "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */" > ${OUTPUT_FILE}
echo "/* SPDX-License-Identifier: MIT */" >> ${OUTPUT_FILE}
echo >> ${OUTPUT_FILE}
echo "/* Automatically generated. DO NOT MODIFY */" >> ${OUTPUT_FILE}
echo >> ${OUTPUT_FILE}
cpp -P ${INPUT_FILE} >> ${OUTPUT_FILE}
echo "#ifndef ${HEADER_GUARD}_automatic" >> ${OUTPUT_FILE}
echo "#define ${HEADER_GUARD}_automatic" >> ${OUTPUT_FILE}
echo >> ${OUTPUT_FILE}
cpp -P -I include ${INPUT_FILE} >> ${OUTPUT_FILE}
echo >> ${OUTPUT_FILE}