Fix borken identation in tables

This commit is contained in:
angie 2023-04-30 15:58:01 -04:00
parent d57c3b22b2
commit 3c8904b6fb
72 changed files with 9023 additions and 9021 deletions

View File

@ -106,6 +106,7 @@ static: $(STATIC_LIB) $(STATIC_LIB_XX)
dynamic: $(DYNAMIC_LIB) $(DYNAMIC_LIB_XX)
tables: $(TABLE_GENERATED)
make -C rust tables
clean:
$(RM) -rf build

View File

@ -7,13 +7,13 @@
#define AccessType_enum_class_table_h_automatic
enum class AccessType {
INVALID,
BYTE,
SHORT,
WORD,
DOUBLEWORD,
FLOAT,
DOUBLEFLOAT,
INVALID,
BYTE,
SHORT,
WORD,
DOUBLEWORD,
FLOAT,
DOUBLEFLOAT,
MAX,
};

View File

@ -8,78 +8,78 @@
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_cop2cd,
cpu_op,
cpu_code,
cpu_code_lower,
cpu_copraw,
cpu_label,
cpu_immediate,
cpu_branch_target_label,
cpu_immediate_base,
cpu_maybe_rd_rs,
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,
rsp_maybe_rd_rs,
cpu_rs,
cpu_rt,
cpu_rd,
cpu_sa,
cpu_zero,
cpu_cop0d,
cpu_fs,
cpu_ft,
cpu_fd,
cpu_cop1cs,
cpu_cop2t,
cpu_cop2cd,
cpu_op,
cpu_code,
cpu_code_lower,
cpu_copraw,
cpu_label,
cpu_immediate,
cpu_branch_target_label,
cpu_immediate_base,
cpu_maybe_rd_rs,
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,
rsp_maybe_rd_rs,
r3000gte_sf,
r3000gte_mx,
r3000gte_v,
r3000gte_cv,
r3000gte_lm,
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,
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,
};

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
RABBITIZER_DEF_ABI(NUMERIC),
RABBITIZER_DEF_ABI(O32),
RABBITIZER_DEF_ABI(N32),
RABBITIZER_DEF_ABI(N64),
RABBITIZER_DEF_ABI(NUMERIC)
RABBITIZER_DEF_ABI(O32)
RABBITIZER_DEF_ABI(N32)
RABBITIZER_DEF_ABI(N64)

View File

@ -7,10 +7,10 @@
#define Abi_enum_table_h_automatic
typedef enum RabbitizerAbi {
RABBITIZER_ABI_NUMERIC,
RABBITIZER_ABI_O32,
RABBITIZER_ABI_N32,
RABBITIZER_ABI_N64,
RABBITIZER_ABI_NUMERIC,
RABBITIZER_ABI_O32,
RABBITIZER_ABI_N32,
RABBITIZER_ABI_N64,
RABBITIZER_ABI_MAX,
} RabbitizerAbi;

View File

@ -1,12 +1,12 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define RABBITIZER_DEF_ABI(name) RABBITIZER_ABI_##name
#define RABBITIZER_DEF_ABI(name) RABBITIZER_ABI_##name,
typedef enum RabbitizerAbi {
#include "Abi.inc"
RABBITIZER_DEF_ABI(MAX),
RABBITIZER_DEF_ABI(MAX)
} RabbitizerAbi;
#undef RABBITIZER_DEF_ABI

View File

@ -1,11 +1,11 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
RAB_DEF_ACCESSTYPE(INVALID)
RAB_DEF_ACCESSTYPE(INVALID)
RAB_DEF_ACCESSTYPE(BYTE)
RAB_DEF_ACCESSTYPE(SHORT)
RAB_DEF_ACCESSTYPE(WORD)
RAB_DEF_ACCESSTYPE(DOUBLEWORD)
RAB_DEF_ACCESSTYPE(FLOAT)
RAB_DEF_ACCESSTYPE(DOUBLEFLOAT)
RAB_DEF_ACCESSTYPE(BYTE)
RAB_DEF_ACCESSTYPE(SHORT)
RAB_DEF_ACCESSTYPE(WORD)
RAB_DEF_ACCESSTYPE(DOUBLEWORD)
RAB_DEF_ACCESSTYPE(FLOAT)
RAB_DEF_ACCESSTYPE(DOUBLEFLOAT)

View File

@ -7,13 +7,13 @@
#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_INVALID,
RAB_ACCESSTYPE_BYTE,
RAB_ACCESSTYPE_SHORT,
RAB_ACCESSTYPE_WORD,
RAB_ACCESSTYPE_DOUBLEWORD,
RAB_ACCESSTYPE_FLOAT,
RAB_ACCESSTYPE_DOUBLEFLOAT,
RAB_ACCESSTYPE_MAX,
} RabbitizerAccessType;

View File

@ -1,7 +1,7 @@
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
RABBITIZER_DEF_INSTR_CATEGORY(CPU),
RABBITIZER_DEF_INSTR_CATEGORY(RSP), // N64
RABBITIZER_DEF_INSTR_CATEGORY(R3000GTE), // R3000 CPU with PS1's Geometry Transformation Engine extension
RABBITIZER_DEF_INSTR_CATEGORY(R5900), // PS2's Emotion Engine
RABBITIZER_DEF_INSTR_CATEGORY(CPU)
RABBITIZER_DEF_INSTR_CATEGORY(RSP) // N64
RABBITIZER_DEF_INSTR_CATEGORY(R3000GTE) // R3000 CPU with PS1's Geometry Transformation Engine extension
RABBITIZER_DEF_INSTR_CATEGORY(R5900) // PS2's Emotion Engine

View File

@ -7,10 +7,10 @@
#define InstrCategory_enum_table_h_automatic
typedef enum RabbitizerInstrCategory {
RABBITIZER_INSTRCAT_CPU,
RABBITIZER_INSTRCAT_RSP,
RABBITIZER_INSTRCAT_R3000GTE,
RABBITIZER_INSTRCAT_R5900,
RABBITIZER_INSTRCAT_CPU,
RABBITIZER_INSTRCAT_RSP,
RABBITIZER_INSTRCAT_R3000GTE,
RABBITIZER_INSTRCAT_R5900,
RABBITIZER_INSTRCAT_MAX,
} RabbitizerInstrCategory;

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -8,78 +8,78 @@
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_cop2cd,
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_cpu_maybe_rd_rs,
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_rsp_maybe_rd_rs,
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_cop2cd,
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_cpu_maybe_rd_rs,
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_rsp_maybe_rd_rs,
RAB_OPERAND_r3000gte_sf,
RAB_OPERAND_r3000gte_mx,
RAB_OPERAND_r3000gte_v,
RAB_OPERAND_r3000gte_cv,
RAB_OPERAND_r3000gte_lm,
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_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;

View File

@ -6,77 +6,77 @@
#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_cop2cd (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_cpu_maybe_rd_rs (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_rsp_maybe_rd_rs (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
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_cop2cd (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_cpu_maybe_rd_rs (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_rsp_maybe_rd_rs (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r3000gte_sf (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r3000gte_mx (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r3000gte_v (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r3000gte_cv (const struct RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);
size_t RabbitizerOperandType_process_r3000gte_lm (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);
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

@ -1,107 +1,107 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
RABBITIZER_DEF_INSTR_ID(
cpu, , INVALID,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , INVALID,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate}
)
#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"
#include "cpu/cpu_cop2.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"
#include "cpu/cpu_cop2.inc"
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_00,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_01,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_02,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_03,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_04,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_05,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_06,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_07,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_08,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_09,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_10,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_11,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_12,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_13,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_14,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_15,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_16,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_17,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_18,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_19,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_00,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_01,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_02,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_03,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_04,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_05,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_06,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_07,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_08,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_09,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_10,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_11,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_12,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_13,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_14,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_15,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_16,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_17,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_18,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , USERDEF_19,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , MAX,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
cpu, , MAX,
.operands={0}
)

View File

@ -1,96 +1,96 @@
/* SPDX-FileCopyrightText: © 2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
RABBITIZER_DEF_INSTR_ID(
r3000gte, , INVALID,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , INVALID,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN
)
#include "r3000gte/r3000gte_cop2_gte.inc"
#include "r3000gte/r3000gte_cop2_gte.inc"
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_00,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_01,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_02,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_03,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_04,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_05,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_06,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_07,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_08,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_09,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_10,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_11,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_12,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_13,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_14,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_15,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_16,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_17,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_18,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_19,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_00,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_01,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_02,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_03,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_04,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_05,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_06,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_07,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_08,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_09,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_10,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_11,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_12,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_13,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_14,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_15,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_16,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_17,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_18,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , USERDEF_19,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , MAX,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, , MAX,
.operands={0}
)

View File

@ -1,113 +1,113 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
RABBITIZER_DEF_INSTR_ID(
r5900, , INVALID,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN
)
RABBITIZER_DEF_INSTR_ID(
r5900, , INVALID,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN
)
#include "r5900/r5900_normal.inc"
#include "r5900/r5900_special.inc"
#include "r5900/r5900_regimm.inc"
#include "r5900/r5900_normal.inc"
#include "r5900/r5900_special.inc"
#include "r5900/r5900_regimm.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 "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 "r5900/r5900_cop0_tlb.inc"
#include "r5900/r5900_cop0_tlb.inc"
#include "r5900/r5900_cop1_fpu_s.inc"
#include "r5900/r5900_cop1_fpu_s.inc"
#include "r5900/r5900_cop2.inc"
#include "r5900/r5900_cop2_bc2.inc"
#include "r5900/r5900_cop2_special1.inc"
#include "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,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_01,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_02,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_03,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_04,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_05,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_06,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_07,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_08,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_09,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_10,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_11,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_12,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_13,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_14,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_15,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_16,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_17,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_18,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_19,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_00,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_01,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_02,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_03,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_04,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_05,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_06,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_07,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_08,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_09,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_10,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_11,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_12,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_13,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_14,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_15,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_16,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_17,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_18,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , USERDEF_19,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , MAX,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, , MAX,
.operands={0}
)

View File

@ -1,107 +1,108 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// RSP instructions
RABBITIZER_DEF_INSTR_ID(
rsp, , INVALID,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
// RSP instructions
#include "rsp/rsp_cop2.inc"
#include "rsp/rsp_cop2_vu.inc"
RABBITIZER_DEF_INSTR_ID(
rsp, , INVALID,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
#include "rsp/rsp_normal_lwc2.inc"
#include "rsp/rsp_normal_swc2.inc"
#include "rsp/rsp_cop2.inc"
#include "rsp/rsp_cop2_vu.inc"
// CPU instructions but with rsp registers
#include "rsp/rsp_normal_lwc2.inc"
#include "rsp/rsp_normal_swc2.inc"
#include "rsp/rsp_normal.inc"
#include "rsp/rsp_special.inc"
#include "rsp/rsp_regimm.inc"
#include "rsp/rsp_cop0.inc"
// CPU instructions but with rsp registers
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_00,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_01,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_02,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_03,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_04,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_05,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_06,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_07,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_08,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_09,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_10,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_11,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_12,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_13,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_14,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_15,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_16,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_17,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_18,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_19,
.operands={0}
)
#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, , MAX,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_00,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_01,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_02,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_03,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_04,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_05,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_06,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_07,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_08,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_09,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_10,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_11,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_12,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_13,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_14,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_15,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_16,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_17,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_18,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , USERDEF_19,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
rsp, , MAX,
.operands={0}
)

View File

@ -1,46 +1,46 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP rt, cop0d
RABBITIZER_DEF_INSTR_ID(
cpu, 0x00, mfc0,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.modifiesRt=true,
.notEmittedByCompilers=true
) // Move word From CP0
RABBITIZER_DEF_INSTR_ID(
cpu, 0x01, dmfc0,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.modifiesRt=true,
.notEmittedByCompilers=true
) // Doubleword Move From CP0
RABBITIZER_DEF_INSTR_ID(
cpu, 0x02, cfc0,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.modifiesRt=true,
.notEmittedByCompilers=true
) // Move control word From CP0
RABBITIZER_DEF_INSTR_ID(
cpu, 0x04, mtc0,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.readsRt=true,
.notEmittedByCompilers=true
) // Move word to CP0
RABBITIZER_DEF_INSTR_ID(
cpu, 0x05, dmtc0,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.readsRt=true,
.notEmittedByCompilers=true
) // Doubleword Move To CP0
RABBITIZER_DEF_INSTR_ID(
cpu, 0x06, ctc0,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.readsRt=true,
.notEmittedByCompilers=true
) // Move control word To CP0
// OP rt, cop0d
RABBITIZER_DEF_INSTR_ID(
cpu, 0x00, mfc0,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.modifiesRt=true,
.notEmittedByCompilers=true
) // Move word From CP0
RABBITIZER_DEF_INSTR_ID(
cpu, 0x01, dmfc0,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.modifiesRt=true,
.notEmittedByCompilers=true
) // Doubleword Move From CP0
RABBITIZER_DEF_INSTR_ID(
cpu, 0x02, cfc0,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.modifiesRt=true,
.notEmittedByCompilers=true
) // Move control word From CP0
RABBITIZER_DEF_INSTR_ID(
cpu, 0x04, mtc0,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.readsRt=true,
.notEmittedByCompilers=true
) // Move word to CP0
RABBITIZER_DEF_INSTR_ID(
cpu, 0x05, dmtc0,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.readsRt=true,
.notEmittedByCompilers=true
) // Doubleword Move To CP0
RABBITIZER_DEF_INSTR_ID(
cpu, 0x06, ctc0,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.readsRt=true,
.notEmittedByCompilers=true
) // Move control word To CP0

View File

@ -1,30 +1,30 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP IMM
RABBITIZER_DEF_INSTR_ID(
cpu, 0x00, bc0f,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isBranch=true
) // Branch on FP False
RABBITIZER_DEF_INSTR_ID(
cpu, 0x01, bc0t,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isBranch=true
) // Branch on FP True
RABBITIZER_DEF_INSTR_ID(
cpu, 0x02, bc0fl,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isBranch=true,
.isBranchLikely=true
) // Branch on FP False Likely
RABBITIZER_DEF_INSTR_ID(
cpu, 0x03, bc0tl,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isBranch=true,
.isBranchLikely=true
) // Branch on FP True Likely
// OP IMM
RABBITIZER_DEF_INSTR_ID(
cpu, 0x00, bc0f,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isBranch=true
) // Branch on FP False
RABBITIZER_DEF_INSTR_ID(
cpu, 0x01, bc0t,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isBranch=true
) // Branch on FP True
RABBITIZER_DEF_INSTR_ID(
cpu, 0x02, bc0fl,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isBranch=true,
.isBranchLikely=true
) // Branch on FP False Likely
RABBITIZER_DEF_INSTR_ID(
cpu, 0x03, bc0tl,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isBranch=true,
.isBranchLikely=true
) // Branch on FP True Likely

View File

@ -1,36 +1,36 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP
RABBITIZER_DEF_INSTR_ID(
cpu, 0x01, tlbr,
.operands={0},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.notEmittedByCompilers=true
) // Read Indexed TLB Entry
RABBITIZER_DEF_INSTR_ID(
cpu, 0x02, tlbwi,
.operands={0},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.notEmittedByCompilers=true
) // Write Indexed TLB Entry
// OP
RABBITIZER_DEF_INSTR_ID(
cpu, 0x01, tlbr,
.operands={0},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.notEmittedByCompilers=true
) // Read Indexed TLB Entry
RABBITIZER_DEF_INSTR_ID(
cpu, 0x02, tlbwi,
.operands={0},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.notEmittedByCompilers=true
) // Write Indexed TLB Entry
RABBITIZER_DEF_INSTR_ID(
cpu, 0x06, tlbwr,
.operands={0},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN
) // Write Random TLB Entry
RABBITIZER_DEF_INSTR_ID(
cpu, 0x06, tlbwr,
.operands={0},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN
) // Write Random TLB Entry
RABBITIZER_DEF_INSTR_ID(
cpu, 0x08, tlbp,
.operands={0},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.notEmittedByCompilers=true
) // Probe TLB for Matching Entry
RABBITIZER_DEF_INSTR_ID(
cpu, 0x08, tlbp,
.operands={0},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.notEmittedByCompilers=true
) // Probe TLB for Matching Entry
RABBITIZER_DEF_INSTR_ID(
cpu, 0x18, eret,
.operands={0},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.notEmittedByCompilers=true
) // Return from Exception
RABBITIZER_DEF_INSTR_ID(
cpu, 0x18, eret,
.operands={0},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.notEmittedByCompilers=true
) // Return from Exception

View File

@ -1,52 +1,52 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP rt, fs
RABBITIZER_DEF_INSTR_ID(
cpu, 0x00, mfc1,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesRt=true,
.readsFs=true
) // Move Word From Floating-Point
RABBITIZER_DEF_INSTR_ID(
cpu, 0x01, dmfc1,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesRt=true,
.readsFs=true
) // Doubleword Move From Floating-Point
RABBITIZER_DEF_INSTR_ID(
cpu, 0x04, mtc1,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsRt=true,
.modifiesFs=true
) // Move Word to Floating-Point
RABBITIZER_DEF_INSTR_ID(
cpu, 0x05, dmtc1,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsRt=true,
.modifiesFs=true
) // Doubleword Move To Floating-Point
// OP rt, fs
RABBITIZER_DEF_INSTR_ID(
cpu, 0x00, mfc1,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesRt=true,
.readsFs=true
) // Move Word From Floating-Point
RABBITIZER_DEF_INSTR_ID(
cpu, 0x01, dmfc1,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesRt=true,
.readsFs=true
) // Doubleword Move From Floating-Point
RABBITIZER_DEF_INSTR_ID(
cpu, 0x04, mtc1,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsRt=true,
.modifiesFs=true
) // Move Word to Floating-Point
RABBITIZER_DEF_INSTR_ID(
cpu, 0x05, dmtc1,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsRt=true,
.modifiesFs=true
) // Doubleword Move To Floating-Point
// OP rt, cop1cs
RABBITIZER_DEF_INSTR_ID(
cpu, 0x02, cfc1,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop1cs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesRt=true
) // Move Control Word from Floating-Point
RABBITIZER_DEF_INSTR_ID(
cpu, 0x06, ctc1,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop1cs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsRt=true
) // Move Control Word to Floating-Point
// OP rt, cop1cs
RABBITIZER_DEF_INSTR_ID(
cpu, 0x02, cfc1,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop1cs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesRt=true
) // Move Control Word from Floating-Point
RABBITIZER_DEF_INSTR_ID(
cpu, 0x06, ctc1,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop1cs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsRt=true
) // Move Control Word to Floating-Point

View File

@ -1,30 +1,30 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP IMM
RABBITIZER_DEF_INSTR_ID(
cpu, 0x00, bc1f,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isBranch=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x01, bc1t,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isBranch=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x02, bc1fl,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isBranch=true,
.isBranchLikely=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x03, bc1tl,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isBranch=true,
.isBranchLikely=true
)
// OP IMM
RABBITIZER_DEF_INSTR_ID(
cpu, 0x00, bc1f,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isBranch=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x01, bc1t,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isBranch=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x02, bc1fl,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isBranch=true,
.isBranchLikely=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x03, bc1tl,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isBranch=true,
.isBranchLikely=true
)

View File

@ -1,300 +1,300 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP fd, fs, ft
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x00, add_d, add.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // Floating-Point Add
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x01, sub_d, sub.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // Floating-Point Sub
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x02, mul_d, mul.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // Floating-Point Multiply
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x03, div_d, div.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // Floating-Point Divide
// OP fd, fs, ft
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x00, add_d, add.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // Floating-Point Add
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x01, sub_d, sub.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // Floating-Point Sub
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x02, mul_d, mul.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // Floating-Point Multiply
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x03, div_d, div.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // Floating-Point Divide
// OP fd, fs
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x04, sqrt_d, sqrt.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Square Root
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x05, abs_d, abs.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Absolute Value
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x06, mov_d, mov.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Move
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x07, neg_d, neg.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Negate
// OP fd, fs
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x04, sqrt_d, sqrt.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Square Root
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x05, abs_d, abs.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Absolute Value
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x06, mov_d, mov.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Move
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x07, neg_d, neg.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Negate
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x08, round_l_d, round.l.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Round to Long Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x09, trunc_l_d, trunc.l.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Truncate to Long Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0A, ceil_l_d, ceil.l.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Ceiling Convert to Long Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0B, floor_l_d, floor.l.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Floor Convert to Long Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x08, round_l_d, round.l.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Round to Long Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x09, trunc_l_d, trunc.l.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Truncate to Long Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0A, ceil_l_d, ceil.l.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Ceiling Convert to Long Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0B, floor_l_d, floor.l.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Floor Convert to Long Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0C, round_w_d, round.w.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Round to Word Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0D, trunc_w_d, trunc.w.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Truncate to Word Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0E, ceil_w_d, ceil.w.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Ceiling Convert to Word Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0F, floor_w_d, floor.w.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Floor Convert to Word Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0C, round_w_d, round.w.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Round to Word Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0D, trunc_w_d, trunc.w.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Truncate to Word Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0E, ceil_w_d, ceil.w.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Ceiling Convert to Word Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0F, floor_w_d, floor.w.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Floor Convert to Word Fixed-Point
// OP fd, fs
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x20, cvt_s_d, cvt.s.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.isDouble=true,
.modifiesFd=true,
.readsFs=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x24, cvt_w_d, cvt.w.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.isDouble=true,
.modifiesFd=true,
.readsFs=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x25, cvt_l_d, cvt.l.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.isDouble=true,
.modifiesFd=true,
.readsFs=true
)
// OP fd, fs
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x20, cvt_s_d, cvt.s.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.isDouble=true,
.modifiesFd=true,
.readsFs=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x24, cvt_w_d, cvt.w.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.isDouble=true,
.modifiesFd=true,
.readsFs=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x25, cvt_l_d, cvt.l.d,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.isDouble=true,
.modifiesFd=true,
.readsFs=true
)
// OP fs, ft
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x30, c_f_d, c.f.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x31, c_un_d, c.un.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x32, c_eq_d, c.eq.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x33, c_ueq_d, c.ueq.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x34, c_olt_d, c.olt.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x35, c_ult_d, c.ult.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x36, c_ole_d, c.ole.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x37, c_ule_d, c.ule.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
// OP fs, ft
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x30, c_f_d, c.f.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x31, c_un_d, c.un.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x32, c_eq_d, c.eq.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x33, c_ueq_d, c.ueq.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x34, c_olt_d, c.olt.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x35, c_ult_d, c.ult.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x36, c_ole_d, c.ole.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x37, c_ule_d, c.ule.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x38, c_df_d, c.df.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x39, c_ngle_d, c.ngle.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3A, c_deq_d, c.deq.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3B, c_ngl_d, c.ngl.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3C, c_lt_d, c.lt.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3D, c_nge_d, c.nge.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3E, c_le_d, c.le.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3F, c_ngt_d, c.ngt.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x38, c_df_d, c.df.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x39, c_ngle_d, c.ngle.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3A, c_deq_d, c.deq.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3B, c_ngl_d, c.ngl.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3C, c_lt_d, c.lt.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3D, c_nge_d, c.nge.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3E, c_le_d, c.le.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3F, c_ngt_d, c.ngt.d,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)

View File

@ -1,21 +1,21 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP fd, fs
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x20, cvt_s_l, cvt.s.l,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x21, cvt_d_l, cvt.d.l,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.isDouble=true,
.modifiesFd=true,
.readsFs=true
)
// OP fd, fs
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x20, cvt_s_l, cvt.s.l,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x21, cvt_d_l, cvt.d.l,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.isDouble=true,
.modifiesFd=true,
.readsFs=true
)

View File

@ -1,298 +1,298 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP fd, fs, ft
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x00, add_s, add.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // Floating-Point Add
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x01, sub_s, sub.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // Floating-Point Sub
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x02, mul_s, mul.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // Floating-Point Multiply
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x03, div_s, div.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // Floating-Point Divide
// OP fd, fs, ft
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x00, add_s, add.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // Floating-Point Add
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x01, sub_s, sub.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // Floating-Point Sub
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x02, mul_s, mul.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // Floating-Point Multiply
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x03, div_s, div.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // Floating-Point Divide
// OP fd, fs
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x04, sqrt_s, sqrt.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Square Root
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x05, abs_s, abs.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Absolute Value
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x06, mov_s, mov.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Move
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x07, neg_s, neg.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Negate
// OP fd, fs
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x04, sqrt_s, sqrt.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Square Root
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x05, abs_s, abs.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Absolute Value
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x06, mov_s, mov.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Move
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x07, neg_s, neg.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Negate
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x08, round_l_s, round.l.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Round to Long Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x09, trunc_l_s, trunc.l.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Truncate to Long Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0A, ceil_l_s, ceil.l.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Ceiling Convert to Long Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0B, floor_l_s, floor.l.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Floor Convert to Long Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x08, round_l_s, round.l.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Round to Long Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x09, trunc_l_s, trunc.l.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Truncate to Long Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0A, ceil_l_s, ceil.l.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Ceiling Convert to Long Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0B, floor_l_s, floor.l.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Floor Convert to Long Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0C, round_w_s, round.w.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Round to Word Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0D, trunc_w_s, trunc.w.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Truncate to Word Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0E, ceil_w_s, ceil.w.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Ceiling Convert to Word Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0F, floor_w_s, floor.w.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Floor Convert to Word Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0C, round_w_s, round.w.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Round to Word Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0D, trunc_w_s, trunc.w.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Truncate to Word Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0E, ceil_w_s, ceil.w.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Ceiling Convert to Word Fixed-Point
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x0F, floor_w_s, floor.w.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
) // Floating-Point Floor Convert to Word Fixed-Point
// OP fd, fs
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x21, cvt_d_s, cvt.d.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.isDouble=true,
.modifiesFd=true,
.readsFs=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x24, cvt_w_s, cvt.w.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x25, cvt_l_s, cvt.l.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
)
// OP fd, fs
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x21, cvt_d_s, cvt.d.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.isDouble=true,
.modifiesFd=true,
.readsFs=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x24, cvt_w_s, cvt.w.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x25, cvt_l_s, cvt.l.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
)
// OP fs, ft
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x30, c_f_s, c.f.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x31, c_un_s, c.un.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x32, c_eq_s, c.eq.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x33, c_ueq_s, c.ueq.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x34, c_olt_s, c.olt.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x35, c_ult_s, c.ult.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x36, c_ole_s, c.ole.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x37, c_ule_s, c.ule.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
// OP fs, ft
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x30, c_f_s, c.f.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x31, c_un_s, c.un.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x32, c_eq_s, c.eq.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x33, c_ueq_s, c.ueq.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x34, c_olt_s, c.olt.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x35, c_ult_s, c.ult.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x36, c_ole_s, c.ole.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x37, c_ule_s, c.ule.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x38, c_sf_s, c.sf.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x39, c_ngle_s, c.ngle.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3A, c_seq_s, c.seq.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3B, c_ngl_s, c.ngl.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3C, c_lt_s, c.lt.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3D, c_nge_s, c.nge.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3E, c_le_s, c.le.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3F, c_ngt_s, c.ngt.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x38, c_sf_s, c.sf.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x39, c_ngle_s, c.ngle.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3A, c_seq_s, c.seq.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3B, c_ngl_s, c.ngl.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3C, c_lt_s, c.lt.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3D, c_nge_s, c.nge.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3E, c_le_s, c.le.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x3F, c_ngt_s, c.ngt.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.readsFs=true,
.readsFt=true
)

View File

@ -1,21 +1,21 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP fd, fs
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x20, cvt_s_w, cvt.s.w,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x21, cvt_d_w, cvt.d.w,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.isDouble=true,
.modifiesFd=true,
.readsFs=true
)
// OP fd, fs
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x20, cvt_s_w, cvt.s.w,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.modifiesFd=true,
.readsFs=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
cpu, 0x21, cvt_d_w, cvt.d.w,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.isFloat=true,
.isDouble=true,
.modifiesFd=true,
.readsFs=true
)

View File

@ -1,26 +1,26 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP rt, cop2cd
RABBITIZER_DEF_INSTR_ID(
cpu, 0x00, mfc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop2cd},
.modifiesRt=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x04, mtc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop2cd},
.readsRt=true
)
// OP rt, cop2cd
RABBITIZER_DEF_INSTR_ID(
cpu, 0x00, mfc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop2cd},
.modifiesRt=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x04, mtc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop2cd},
.readsRt=true
)
// OP rt, cop2cd
RABBITIZER_DEF_INSTR_ID(
cpu, 0x02, cfc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop2cd},
.modifiesRt=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x06, ctc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop2cd},
.readsRt=true
)
// OP rt, cop2cd
RABBITIZER_DEF_INSTR_ID(
cpu, 0x02, cfc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop2cd},
.modifiesRt=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x06, ctc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop2cd},
.readsRt=true
)

File diff suppressed because it is too large Load Diff

View File

@ -1,132 +1,132 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP rs, IMM
RABBITIZER_DEF_INSTR_ID(
cpu, 0x00, bltz,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.readsRs=true
) // Branch on Less Than Zero
RABBITIZER_DEF_INSTR_ID(
cpu, 0x01, bgez,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.readsRs=true
) // Branch on Greater than or Equal to Zero
RABBITIZER_DEF_INSTR_ID(
cpu, 0x02, bltzl,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.isBranchLikely=true,
.readsRs=true
) // Branch on Less Than Zero Likely
RABBITIZER_DEF_INSTR_ID(
cpu, 0x03, bgezl,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.isBranchLikely=true,
.readsRs=true
) // Branch on Greater than or Equal to Zero Likely
// OP rs, IMM
RABBITIZER_DEF_INSTR_ID(
cpu, 0x00, bltz,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.readsRs=true
) // Branch on Less Than Zero
RABBITIZER_DEF_INSTR_ID(
cpu, 0x01, bgez,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.readsRs=true
) // Branch on Greater than or Equal to Zero
RABBITIZER_DEF_INSTR_ID(
cpu, 0x02, bltzl,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.isBranchLikely=true,
.readsRs=true
) // Branch on Less Than Zero Likely
RABBITIZER_DEF_INSTR_ID(
cpu, 0x03, bgezl,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.isBranchLikely=true,
.readsRs=true
) // Branch on Greater than or Equal to Zero Likely
RABBITIZER_DEF_INSTR_ID(
cpu, 0x08, tgei,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isTrap=true,
.readsRs=true,
.notEmittedByCompilers=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x09, tgeiu,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isTrap=true,
.readsRs=true,
.notEmittedByCompilers=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x0A, tlti,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isTrap=true,
.readsRs=true,
.notEmittedByCompilers=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x0B, tltiu,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isTrap=true,
.readsRs=true,
.notEmittedByCompilers=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x0C, teqi,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isTrap=true,
.readsRs=true,
.notEmittedByCompilers=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x0E, tnei,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isTrap=true,
.readsRs=true,
.notEmittedByCompilers=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x08, tgei,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isTrap=true,
.readsRs=true,
.notEmittedByCompilers=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x09, tgeiu,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isTrap=true,
.readsRs=true,
.notEmittedByCompilers=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x0A, tlti,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isTrap=true,
.readsRs=true,
.notEmittedByCompilers=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x0B, tltiu,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isTrap=true,
.readsRs=true,
.notEmittedByCompilers=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x0C, teqi,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isTrap=true,
.readsRs=true,
.notEmittedByCompilers=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x0E, tnei,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isTrap=true,
.readsRs=true,
.notEmittedByCompilers=true
)
RABBITIZER_DEF_INSTR_ID(
cpu, 0x10, bltzal,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.readsRs=true,
.doesLink=true
) // Branch on Less Than Zero and Link
RABBITIZER_DEF_INSTR_ID(
cpu, 0x11, bgezal,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.readsRs=true,
.doesLink=true
) // Branch on Greater Than or Equal to Zero and Link
RABBITIZER_DEF_INSTR_ID(
cpu, 0x12, 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
) // Branch on Less Than Zero and Link Likely
RABBITIZER_DEF_INSTR_ID(
cpu, 0x13, bgezall,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.isBranchLikely=true,
.readsRs=true,
.notEmittedByCompilers=true,
.doesLink=true
) // Branch on Greater Than or Equal to Zero and Link Likely
RABBITIZER_DEF_INSTR_ID(
cpu, 0x10, bltzal,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.readsRs=true,
.doesLink=true
) // Branch on Less Than Zero and Link
RABBITIZER_DEF_INSTR_ID(
cpu, 0x11, bgezal,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.readsRs=true,
.doesLink=true
) // Branch on Greater Than or Equal to Zero and Link
RABBITIZER_DEF_INSTR_ID(
cpu, 0x12, 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
) // Branch on Less Than Zero and Link Likely
RABBITIZER_DEF_INSTR_ID(
cpu, 0x13, bgezall,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.isBranchLikely=true,
.readsRs=true,
.notEmittedByCompilers=true,
.doesLink=true
) // Branch on Greater Than or Equal to Zero and Link Likely
// Pseudo-Instruction Unique IDs
// Pseudo-Instruction Unique IDs
RABBITIZER_DEF_INSTR_ID(
cpu, -0x11, bal,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.notEmittedByCompilers=true,
.doesLink=true,
.isPseudo=true
) // Branch and Link
RABBITIZER_DEF_INSTR_ID(
cpu, -0x11, bal,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.notEmittedByCompilers=true,
.doesLink=true,
.isPseudo=true
) // Branch and Link

File diff suppressed because it is too large Load Diff

View File

@ -1,114 +1,114 @@
/* SPDX-FileCopyrightText: © 2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/* Indexed by "function" operand */
/* Indexed by "function" operand */
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x01, RTPS,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x01, RTPS,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x30, RTPT,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x30, RTPT,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x29, DPCL,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x29, DPCL,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x10, DPCS,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x10, DPCS,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x2A, DPCT,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x2A, DPCT,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x11, INTPL,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x11, INTPL,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x1E, NCS,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x1E, NCS,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x20, NCT,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x20, NCT,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x13, NCDS,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x13, NCDS,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x16, NCDT,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x16, NCDT,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x1B, NCCS,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x1B, NCCS,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x3F, NCCT,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x3F, NCCT,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x14, CDP,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x14, CDP,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x1C, CC,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x1C, CC,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x06, NCLIP,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x06, NCLIP,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x2D, AVSZ3,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x2D, AVSZ3,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x2E, AVSZ4,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x2E, AVSZ4,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x12, MVMVA,
.operands={RAB_OPERAND_r3000gte_sf, RAB_OPERAND_r3000gte_mx, RAB_OPERAND_r3000gte_v, RAB_OPERAND_r3000gte_cv, RAB_OPERAND_r3000gte_lm}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x12, MVMVA,
.operands={RAB_OPERAND_r3000gte_sf, RAB_OPERAND_r3000gte_mx, RAB_OPERAND_r3000gte_v, RAB_OPERAND_r3000gte_cv, RAB_OPERAND_r3000gte_lm}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x28, SQR,
.operands={RAB_OPERAND_r3000gte_sf}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x28, SQR,
.operands={RAB_OPERAND_r3000gte_sf}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x0C, OP,
.operands={RAB_OPERAND_r3000gte_sf}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x0C, OP,
.operands={RAB_OPERAND_r3000gte_sf}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x3D, GPF,
.operands={RAB_OPERAND_r3000gte_sf}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x3D, GPF,
.operands={RAB_OPERAND_r3000gte_sf}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x3E, GPL,
.operands={RAB_OPERAND_r3000gte_sf}
)
RABBITIZER_DEF_INSTR_ID(
r3000gte, 0x3E, GPL,
.operands={RAB_OPERAND_r3000gte_sf}
)

View File

@ -1,4 +1,4 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/*
@ -17,13 +17,13 @@
hi |-------|-------|-------|-------|-------|-------|-------|-------|
*/
// The other instructions are implemented using the main CPU table
// The other instructions are implemented using the main CPU table
RABBITIZER_DEF_INSTR_ID(
r5900, 0x38, ei,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x39, di,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x38, ei,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x39, di,
.operands={0}
)

View File

@ -1,4 +1,4 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/*
@ -17,103 +17,103 @@
hi |-------|-------|-------|-------|-------|-------|-------|-------|
*/
// The other instructions are implemented using the main CPU table
// The other instructions are implemented using the main CPU table
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x04, c1__sqrt_s, c1,
.operands={RAB_OPERAND_cpu_copraw}
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x04, c1__sqrt_s, c1,
.operands={RAB_OPERAND_cpu_copraw}
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x16, rsqrt_s, rsqrt.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // floating point Reciprocal SQuare RooT
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x16, rsqrt_s, rsqrt.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // floating point Reciprocal SQuare RooT
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x18, adda_s, adda.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.modifiesFs=true,
.readsFt=true
) // floating point ADD to Accumulator
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x19, suba_s, suba.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.modifiesFs=true,
.readsFt=true
) // floating point SUBtract to Accumulator
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x1A, mula_s, mula.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.modifiesFs=true,
.readsFt=true
) // floating point MULtiply to Accumulator
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x18, adda_s, adda.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.modifiesFs=true,
.readsFt=true
) // floating point ADD to Accumulator
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x19, suba_s, suba.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.modifiesFs=true,
.readsFt=true
) // floating point SUBtract to Accumulator
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x1A, mula_s, mula.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.modifiesFs=true,
.readsFt=true
) // floating point MULtiply to Accumulator
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x1C, madd_s, madd.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // floating point Multiply-ADD
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x1D, msub_s, msub.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // floating point Multiply abd SUBtract
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x1E, madda_s, madda.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.readsFs=true,
.readsFt=true
) // floating point Multiply-ADD Accumulator
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x1F, msuba_s, msuba.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.readsFs=true,
.readsFt=true
) // floating point Multiply SUBtract from Accumulator
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x1C, madd_s, madd.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // floating point Multiply-ADD
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x1D, msub_s, msub.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // floating point Multiply abd SUBtract
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x1E, madda_s, madda.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.readsFs=true,
.readsFt=true
) // floating point Multiply-ADD Accumulator
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x1F, msuba_s, msuba.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.readsFs=true,
.readsFt=true
) // floating point Multiply SUBtract from Accumulator
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x28, max_s, max.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // floating point MAXimum
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x29, min_s, min.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // floating point MINimum
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x28, max_s, max.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // floating point MAXimum
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x29, min_s, min.s,
.operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.modifiesFd=true,
.readsFs=true,
.readsFt=true
) // floating point MINimum
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x34, c_lt_s, c.lt.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x36, c_le_s, c.le.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x34, c_lt_s, c.lt.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.readsFs=true,
.readsFt=true
)
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, 0x36, c_le_s, c.le.s,
.operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft},
.isFloat=true,
.readsFs=true,
.readsFt=true
)

View File

@ -1,4 +1,4 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/*
@ -14,24 +14,24 @@
*1 = BC instructions, see BC2 list *2 =see special1 table
*/
// TODO: properties
RABBITIZER_DEF_INSTR_ID(
r5900, 0x01, qmfc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_r5900_vfs},
.modifiesRt=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x02, cfc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_r5900_vis},
.modifiesRt=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x05, qmtc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_r5900_vfs},
.readsRt=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x06, ctc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_r5900_vis},
.readsRt=true
)
// TODO: properties
RABBITIZER_DEF_INSTR_ID(
r5900, 0x01, qmfc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_r5900_vfs},
.modifiesRt=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x02, cfc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_r5900_vis},
.modifiesRt=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x05, qmtc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_r5900_vfs},
.readsRt=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x06, ctc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_r5900_vis},
.readsRt=true
)

View File

@ -1,4 +1,4 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/*
@ -13,27 +13,27 @@
hi |-------|-------|-------|-------|-------|-------|-------|-------|
*/
// TODO: operands and properties
// TODO: operands and properties
RABBITIZER_DEF_INSTR_ID(
r5900, 0x00, bc2f,
.operands={RAB_OPERAND_cpu_branch_target_label},
.isBranch=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x01, bc2t,
.operands={RAB_OPERAND_cpu_branch_target_label},
.isBranch=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x02, bc2fl,
.operands={RAB_OPERAND_cpu_branch_target_label},
.isBranch=true,
.isBranchLikely=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x03, bc2tl,
.operands={RAB_OPERAND_cpu_branch_target_label},
.isBranch=true,
.isBranchLikely=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x00, bc2f,
.operands={RAB_OPERAND_cpu_branch_target_label},
.isBranch=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x01, bc2t,
.operands={RAB_OPERAND_cpu_branch_target_label},
.isBranch=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x02, bc2fl,
.operands={RAB_OPERAND_cpu_branch_target_label},
.isBranch=true,
.isBranchLikely=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x03, bc2tl,
.operands={RAB_OPERAND_cpu_branch_target_label},
.isBranch=true,
.isBranchLikely=true
)

View File

@ -1,4 +1,4 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/*
@ -18,326 +18,326 @@
*1=see special2 table
*/
// TODO: properties
// TODO: properties
RABBITIZER_DEF_INSTR_ID(
r5900, 0x00, vaddx,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // ADD broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x01, vaddy,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // ADD broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x02, vaddz,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // ADD broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x03, vaddw,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // ADD broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x04, vsubx,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // SUBtract broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x05, vsuby,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // SUBtract broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x06, vsubz,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // SUBtract broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x07, vsubw,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // SUBtract broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x08, vmaddx,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-ADD broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x09, vmaddy,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-ADD broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0A, vmaddz,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-ADD broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0B, vmaddw,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-ADD broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0C, vmsubx,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-SUBtract broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0D, vmsuby,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-SUBtract broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0E, vmsubz,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-SUBtract broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0F, vmsubw,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-SUBtract broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x00, vaddx,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // ADD broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x01, vaddy,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // ADD broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x02, vaddz,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // ADD broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x03, vaddw,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // ADD broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x04, vsubx,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // SUBtract broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x05, vsuby,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // SUBtract broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x06, vsubz,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // SUBtract broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x07, vsubw,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // SUBtract broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x08, vmaddx,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-ADD broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x09, vmaddy,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-ADD broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0A, vmaddz,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-ADD broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0B, vmaddw,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-ADD broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0C, vmsubx,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-SUBtract broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0D, vmsuby,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-SUBtract broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0E, vmsubz,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-SUBtract broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0F, vmsubw,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-SUBtract broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x10, vmaxx,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MAXimum broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x11, vmaxy,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MAXimum broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x12, vmaxz,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MAXimum broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x13, vmaxw,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MAXimum broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x14, vminix,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MINimum broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x15, vminiy,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MINimum broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x16, vminiz,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MINimum broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x17, vminiw,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MINimum broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x18, vmulx,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MULtiply broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x19, vmuly,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MULtiply broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1A, vmulz,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MULtiply broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1B, vmulw,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MULtiply broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1C, vmulq,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MULtiply Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1D, vmaxi,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MAXimum I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1E, vmuli,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MULtiply I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1F, vminii,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MINImum I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x10, vmaxx,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MAXimum broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x11, vmaxy,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MAXimum broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x12, vmaxz,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MAXimum broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x13, vmaxw,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MAXimum broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x14, vminix,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MINimum broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x15, vminiy,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MINimum broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x16, vminiz,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MINimum broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x17, vminiw,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MINimum broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x18, vmulx,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MULtiply broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x19, vmuly,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MULtiply broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1A, vmulz,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MULtiply broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1B, vmulw,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MULtiply broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1C, vmulq,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MULtiply Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1D, vmaxi,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MAXimum I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1E, vmuli,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MULtiply I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1F, vminii,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MINImum I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x20, vaddq,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // ADD Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x21, vmaddq,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-ADD Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x22, vaddi,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // ADD I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x23, vmaddi,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-ADD I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x24, vsubq,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // SUBtract Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x25, vmsubq,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-SUBtract Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x26, vsubi,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // SUBtract I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x27, vmsubi,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-SUBtract I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x28, vadd,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // ADD
RABBITIZER_DEF_INSTR_ID(
r5900, 0x29, vmadd,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-ADD
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2A, vmul,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MULtiply
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2B, vmax,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MAXimum
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2C, vsub,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // SUBtract
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2D, vmsub,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-SUBtract
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2E, vopmsub,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Outer product post decrement
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2F, vmini,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MINImum
RABBITIZER_DEF_INSTR_ID(
r5900, 0x20, vaddq,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // ADD Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x21, vmaddq,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-ADD Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x22, vaddi,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // ADD I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x23, vmaddi,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-ADD I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x24, vsubq,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // SUBtract Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x25, vmsubq,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-SUBtract Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x26, vsubi,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // SUBtract I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x27, vmsubi,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-SUBtract I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x28, vadd,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // ADD
RABBITIZER_DEF_INSTR_ID(
r5900, 0x29, vmadd,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-ADD
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2A, vmul,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MULtiply
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2B, vmax,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MAXimum
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2C, vsub,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // SUBtract
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2D, vmsub,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply-SUBtract
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2E, vopmsub,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Outer product post decrement
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2F, vmini,
.operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // MINImum
RABBITIZER_DEF_INSTR_ID(
r5900, 0x30, viadd,
.operands={RAB_OPERAND_r5900_vid, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_vit}
) // Integer ADD
RABBITIZER_DEF_INSTR_ID(
r5900, 0x31, visub,
.operands={RAB_OPERAND_r5900_vid, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_vit}
) // Integer SUBtract
RABBITIZER_DEF_INSTR_ID(
r5900, 0x32, viaddi,
.operands={RAB_OPERAND_r5900_vit, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_immediate5}
) // Integer ADD Immediate
RABBITIZER_DEF_INSTR_ID(
r5900, 0x34, viand,
.operands={RAB_OPERAND_r5900_vid, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_vit}
) // Integer AND
RABBITIZER_DEF_INSTR_ID(
r5900, 0x35, vior,
.operands={RAB_OPERAND_r5900_vid, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_vit}
) // Integer OR
RABBITIZER_DEF_INSTR_ID(
r5900, 0x30, viadd,
.operands={RAB_OPERAND_r5900_vid, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_vit}
) // Integer ADD
RABBITIZER_DEF_INSTR_ID(
r5900, 0x31, visub,
.operands={RAB_OPERAND_r5900_vid, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_vit}
) // Integer SUBtract
RABBITIZER_DEF_INSTR_ID(
r5900, 0x32, viaddi,
.operands={RAB_OPERAND_r5900_vit, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_immediate5}
) // Integer ADD Immediate
RABBITIZER_DEF_INSTR_ID(
r5900, 0x34, viand,
.operands={RAB_OPERAND_r5900_vid, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_vit}
) // Integer AND
RABBITIZER_DEF_INSTR_ID(
r5900, 0x35, vior,
.operands={RAB_OPERAND_r5900_vid, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_vit}
) // Integer OR
// TODO: operands and properties
RABBITIZER_DEF_INSTR_ID(
r5900, 0x38, vcallms,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x39, vcallmsr,
.operands={RAB_OPERAND_r5900_vis}
)
// TODO: operands and properties
RABBITIZER_DEF_INSTR_ID(
r5900, 0x38, vcallms,
.operands={0}
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x39, vcallmsr,
.operands={RAB_OPERAND_r5900_vis}
)

View File

@ -1,4 +1,4 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/*
@ -28,416 +28,416 @@ Note: opcode is flo | (
hi |-------|-------|-------|-------|-------|-------|-------|-------|
*/
// TODO: operands and properties
// TODO: operands and properties
RABBITIZER_DEF_INSTR_ID(
r5900, 0x00, vaddax,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Add accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x01, vadday,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Add accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x02, vaddaz,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Add accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x03, vaddaw,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Add accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x04, vsubax,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x05, vsubay,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x06, vsubaz,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x07, vsubaw,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x08, vmaddax,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
) // Multiply and add accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x09, vmadday,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
) // Multiply and add accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0A, vmaddaz,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
) // Multiply and add accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0B, vmaddaw,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
) // Multiply and add accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0C, vmsubax,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0D, vmsubay,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0E, vmsubaz,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0F, vmsubaw,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x00, vaddax,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Add accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x01, vadday,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Add accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x02, vaddaz,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Add accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x03, vaddaw,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Add accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x04, vsubax,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x05, vsubay,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x06, vsubaz,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x07, vsubaw,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x08, vmaddax,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
) // Multiply and add accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x09, vmadday,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
) // Multiply and add accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0A, vmaddaz,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
) // Multiply and add accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0B, vmaddaw,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
) // Multiply and add accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0C, vmsubax,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0D, vmsubay,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0E, vmsubaz,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0F, vmsubaw,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator broadcast
RABBITIZER_DEF_INSTR_ID(
r5900, 0x10, vitof0,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Integer to floating point
RABBITIZER_DEF_INSTR_ID(
r5900, 0x11, vitof4,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Integer to floating point
RABBITIZER_DEF_INSTR_ID(
r5900, 0x12, vitof12,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Integer to floating point
RABBITIZER_DEF_INSTR_ID(
r5900, 0x13, vitof15,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Integer to floating point
RABBITIZER_DEF_INSTR_ID(
r5900, 0x14, vftoi0,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Floating to integer
RABBITIZER_DEF_INSTR_ID(
r5900, 0x15, vftoi4,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Floating to integer
RABBITIZER_DEF_INSTR_ID(
r5900, 0x16, vftoi12,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Floating to integer
RABBITIZER_DEF_INSTR_ID(
r5900, 0x17, vftoi15,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Floating to integer
RABBITIZER_DEF_INSTR_ID(
r5900, 0x10, vitof0,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Integer to floating point
RABBITIZER_DEF_INSTR_ID(
r5900, 0x11, vitof4,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Integer to floating point
RABBITIZER_DEF_INSTR_ID(
r5900, 0x12, vitof12,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Integer to floating point
RABBITIZER_DEF_INSTR_ID(
r5900, 0x13, vitof15,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Integer to floating point
RABBITIZER_DEF_INSTR_ID(
r5900, 0x14, vftoi0,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Floating to integer
RABBITIZER_DEF_INSTR_ID(
r5900, 0x15, vftoi4,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Floating to integer
RABBITIZER_DEF_INSTR_ID(
r5900, 0x16, vftoi12,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Floating to integer
RABBITIZER_DEF_INSTR_ID(
r5900, 0x17, vftoi15,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Floating to integer
RABBITIZER_DEF_INSTR_ID(
r5900, 0x18, vmulax,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x19, vmulay,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1A, vmulaz,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1B, vmulaw,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
)
// TODO
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1C, vmulaq,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x18, vmulax,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x19, vmulay,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1A, vmulaz,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1B, vmulaw,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
)
// TODO
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1C, vmulaq,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1D, vabs,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Absolute
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1D, vabs,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Absolute
// TODO
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1E, vmulai,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
)
// TODO
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1E, vmulai,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1F, vclipw,
.operands={RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Clip
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1F, vclipw,
.operands={RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Clip
RABBITIZER_DEF_INSTR_ID(
r5900, 0x20, vaddaq,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Add accumulator Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x21, vmaddaq,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and add accumulator Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x22, vaddai,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Add accumulator I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x23, vmaddai,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and add accumulator I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x24, vsubaq,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Subtract accumulator Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x25, vmsubaq,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and Subtract accumulator Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x26, vsubai,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Subtract accumulator I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x27, vmsubai,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and Subtract accumulator I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x28, vadda,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Add accumulator
RABBITIZER_DEF_INSTR_ID(
r5900, 0x29, vmadda,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and add accumulator
RABBITIZER_DEF_INSTR_ID(
r5900, 0x20, vaddaq,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Add accumulator Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x21, vmaddaq,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and add accumulator Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x22, vaddai,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Add accumulator I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x23, vmaddai,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and add accumulator I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x24, vsubaq,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Subtract accumulator Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x25, vmsubaq,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and Subtract accumulator Q
RABBITIZER_DEF_INSTR_ID(
r5900, 0x26, vsubai,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Subtract accumulator I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x27, vmsubai,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and Subtract accumulator I
RABBITIZER_DEF_INSTR_ID(
r5900, 0x28, vadda,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Add accumulator
RABBITIZER_DEF_INSTR_ID(
r5900, 0x29, vmadda,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and add accumulator
// TODO
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2A, vmula,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
)
// TODO
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2A, vmula,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2C, vsuba,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2D, vmsuba,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2E, vopmula,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Outer product pre increment
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2F, vnop,
.operands={0}
) // No operation
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2C, vsuba,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2D, vmsuba,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Multiply and substract accumulator
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2E, vopmula,
.operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Outer product pre increment
RABBITIZER_DEF_INSTR_ID(
r5900, 0x2F, vnop,
.operands={0}
) // No operation
RABBITIZER_DEF_INSTR_ID(
r5900, 0x30, vmove,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Move floating point registers
RABBITIZER_DEF_INSTR_ID(
r5900, 0x31, vmr32,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Move and rotate per word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x34, vlqi,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vis_postincr},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Load quadraword post increment
RABBITIZER_DEF_INSTR_ID(
r5900, 0x35, vsqi,
.operands={RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vit_postincr},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Store quadraword post increment
RABBITIZER_DEF_INSTR_ID(
r5900, 0x36, vlqd,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vis_predecr},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Load quadraword pre decrement
RABBITIZER_DEF_INSTR_ID(
r5900, 0x37, vsqd,
.operands={RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vit_predecr},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Store quadraword pre decrement
RABBITIZER_DEF_INSTR_ID(
r5900, 0x30, vmove,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Move floating point registers
RABBITIZER_DEF_INSTR_ID(
r5900, 0x31, vmr32,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Move and rotate per word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x34, vlqi,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vis_postincr},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Load quadraword post increment
RABBITIZER_DEF_INSTR_ID(
r5900, 0x35, vsqi,
.operands={RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vit_postincr},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Store quadraword post increment
RABBITIZER_DEF_INSTR_ID(
r5900, 0x36, vlqd,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vis_predecr},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Load quadraword pre decrement
RABBITIZER_DEF_INSTR_ID(
r5900, 0x37, vsqd,
.operands={RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vit_predecr},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Store quadraword pre decrement
RABBITIZER_DEF_INSTR_ID(
r5900, 0x38, vdiv,
.operands={RAB_OPERAND_r5900_Q, RAB_OPERAND_r5900_vfsl, RAB_OPERAND_r5900_vftm}
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x39, vsqrt,
.operands={RAB_OPERAND_r5900_Q, RAB_OPERAND_r5900_vftm}
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3A, vrsqrt,
.operands={RAB_OPERAND_r5900_Q, RAB_OPERAND_r5900_vfsl,RAB_OPERAND_r5900_vftm}
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x38, vdiv,
.operands={RAB_OPERAND_r5900_Q, RAB_OPERAND_r5900_vfsl, RAB_OPERAND_r5900_vftm}
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x39, vsqrt,
.operands={RAB_OPERAND_r5900_Q, RAB_OPERAND_r5900_vftm}
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3A, vrsqrt,
.operands={RAB_OPERAND_r5900_Q, RAB_OPERAND_r5900_vfsl,RAB_OPERAND_r5900_vftm}
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3B, vwaitq,
.operands={0}
) // Wait Q operation
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3B, vwaitq,
.operands={0}
) // Wait Q operation
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3C, vmtir,
.operands={RAB_OPERAND_r5900_vit, RAB_OPERAND_r5900_vfsl}
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3C, vmtir,
.operands={RAB_OPERAND_r5900_vit, RAB_OPERAND_r5900_vfsl}
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3D, vmfir,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vis},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Move from integer register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3D, vmfir,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vis},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // Move from integer register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3E, vilwr,
.operands={RAB_OPERAND_r5900_vit, RAB_OPERAND_r5900_vis},
.isFloat=true,
.doesDereference=true,
.doesLoad=true
) // Integer load word register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3F, viswr,
.operands={RAB_OPERAND_r5900_vit, RAB_OPERAND_r5900_vis},
.isFloat=true,
.doesDereference=true,
.doesStore=true
) // Integer store word register
/*
"vilwr.w", RAB_OPERAND_r5900_vit,(
RAB_OPERAND_r5900_vis
)
"vilwr.x", RAB_OPERAND_r5900_vit,(
RAB_OPERAND_r5900_vis
)
"vilwr.y", RAB_OPERAND_r5900_vit,(
RAB_OPERAND_r5900_vis
)
"vilwr.z", RAB_OPERAND_r5900_vit,(
RAB_OPERAND_r5900_vis
)
"viswr.w", RAB_OPERAND_r5900_vit,(
RAB_OPERAND_r5900_vis
)
"viswr.x", RAB_OPERAND_r5900_vit,(
RAB_OPERAND_r5900_vis
)
"viswr.y", RAB_OPERAND_r5900_vit,(
RAB_OPERAND_r5900_vis
)
"viswr.z", RAB_OPERAND_r5900_vit,(
RAB_OPERAND_r5900_vis
)
*/
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3E, vilwr,
.operands={RAB_OPERAND_r5900_vit, RAB_OPERAND_r5900_vis},
.isFloat=true,
.doesDereference=true,
.doesLoad=true
) // Integer load word register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3F, viswr,
.operands={RAB_OPERAND_r5900_vit, RAB_OPERAND_r5900_vis},
.isFloat=true,
.doesDereference=true,
.doesStore=true
) // Integer store word register
/*
"vilwr.w", RAB_OPERAND_r5900_vit,(
RAB_OPERAND_r5900_vis
)
"vilwr.x", RAB_OPERAND_r5900_vit,(
RAB_OPERAND_r5900_vis
)
"vilwr.y", RAB_OPERAND_r5900_vit,(
RAB_OPERAND_r5900_vis
)
"vilwr.z", RAB_OPERAND_r5900_vit,(
RAB_OPERAND_r5900_vis
)
"viswr.w", RAB_OPERAND_r5900_vit,(
RAB_OPERAND_r5900_vis
)
"viswr.x", RAB_OPERAND_r5900_vit,(
RAB_OPERAND_r5900_vis
)
"viswr.y", RAB_OPERAND_r5900_vit,(
RAB_OPERAND_r5900_vis
)
"viswr.z", RAB_OPERAND_r5900_vit,(
RAB_OPERAND_r5900_vis
)
*/
RABBITIZER_DEF_INSTR_ID(
r5900, 0x40, vrnext,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_R},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // R next
RABBITIZER_DEF_INSTR_ID(
r5900, 0x41, vrget,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_R},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // R move
RABBITIZER_DEF_INSTR_ID(
r5900, 0x40, vrnext,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_R},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // R next
RABBITIZER_DEF_INSTR_ID(
r5900, 0x41, vrget,
.operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_R},
.instrSuffix=RABINSTRSUFFIX_R5900_xyzw,
.isFloat=true
) // R move
// TODO
RABBITIZER_DEF_INSTR_ID(
r5900, 0x42, vrinit,
.operands={RAB_OPERAND_r5900_R, RAB_OPERAND_r5900_vfsl}
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x43, vrxor,
.operands={RAB_OPERAND_r5900_R, RAB_OPERAND_r5900_vfsl}
)
// TODO
RABBITIZER_DEF_INSTR_ID(
r5900, 0x42, vrinit,
.operands={RAB_OPERAND_r5900_R, RAB_OPERAND_r5900_vfsl}
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x43, vrxor,
.operands={RAB_OPERAND_r5900_R, RAB_OPERAND_r5900_vfsl}
)

View File

@ -1,4 +1,4 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/*
@ -19,136 +19,136 @@
*3 = MMI1 list *4 = MMI3 list
*/
RABBITIZER_DEF_INSTR_ID(
r5900, 0x00, madd,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Multiply-ADD word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x01, maddu,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Multiply-ADD Unsigned word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x04, plzcw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs},
.modifiesRd=true,
.readsRs=true
) // Parallel Leading Zero or one Count Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x00, madd,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Multiply-ADD word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x01, maddu,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Multiply-ADD Unsigned word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x04, plzcw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs},
.modifiesRd=true,
.readsRs=true
) // Parallel Leading Zero or one Count Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x10, mfhi1,
.operands={RAB_OPERAND_cpu_rd},
.modifiesRd=true
) // Move From HI1 register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x11, mthi1,
.operands={RAB_OPERAND_cpu_rs},
.readsRs=true
) // Move To HI1 register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x12, mflo1,
.operands={RAB_OPERAND_cpu_rd},
.readsRd=true
) // Move From LO1 register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x13, mtlo1,
.operands={RAB_OPERAND_cpu_rs},
.readsRs=true
) // Move To LO1 register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x10, mfhi1,
.operands={RAB_OPERAND_cpu_rd},
.modifiesRd=true
) // Move From HI1 register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x11, mthi1,
.operands={RAB_OPERAND_cpu_rs},
.readsRs=true
) // Move To HI1 register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x12, mflo1,
.operands={RAB_OPERAND_cpu_rd},
.readsRd=true
) // Move From LO1 register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x13, mtlo1,
.operands={RAB_OPERAND_cpu_rs},
.readsRs=true
) // Move To LO1 register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x18, mult1,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // MULTiply word pipeline 1
RABBITIZER_DEF_INSTR_ID(
r5900, 0x19, multu1,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // MULTiply Unsigned word pipeline 1
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1A, div1,
.operands={RAB_OPERAND_cpu_zero, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.readsRs=true,
.readsRt=true
) // DIVide word pipeline 1
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1B, divu1,
.operands={RAB_OPERAND_cpu_zero, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.readsRs=true,
.readsRt=true
) // DIVide Unsigned word pipeline 1
RABBITIZER_DEF_INSTR_ID(
r5900, 0x18, mult1,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // MULTiply word pipeline 1
RABBITIZER_DEF_INSTR_ID(
r5900, 0x19, multu1,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // MULTiply Unsigned word pipeline 1
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1A, div1,
.operands={RAB_OPERAND_cpu_zero, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.readsRs=true,
.readsRt=true
) // DIVide word pipeline 1
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1B, divu1,
.operands={RAB_OPERAND_cpu_zero, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.readsRs=true,
.readsRt=true
) // DIVide Unsigned word pipeline 1
RABBITIZER_DEF_INSTR_ID(
r5900, 0x20, madd1,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Multiply-ADD word pipeline 1
RABBITIZER_DEF_INSTR_ID(
r5900, 0x21, maddu1,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Multiply-ADD Unsigned word pipeline 1
RABBITIZER_DEF_INSTR_ID(
r5900, 0x20, madd1,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Multiply-ADD word pipeline 1
RABBITIZER_DEF_INSTR_ID(
r5900, 0x21, maddu1,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Multiply-ADD Unsigned word pipeline 1
// TODO: check this two instruction, it is supposed to have an extra .fmt
RABBITIZER_DEF_INSTR_ID(
r5900, 0x30, pmfhl,
.operands={RAB_OPERAND_cpu_rd},
.modifiesRd=true
) // Parallel Move From Hi/Lo register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x31, pmthl,
.operands={RAB_OPERAND_cpu_rs},
.readsRs=true
) // Parallel Move To Hi/Lo register
// TODO: check this two instruction, it is supposed to have an extra .fmt
RABBITIZER_DEF_INSTR_ID(
r5900, 0x30, pmfhl,
.operands={RAB_OPERAND_cpu_rd},
.modifiesRd=true
) // Parallel Move From Hi/Lo register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x31, pmthl,
.operands={RAB_OPERAND_cpu_rs},
.readsRs=true
) // Parallel Move To Hi/Lo register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x34, psllh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa},
.modifiesRd=true,
.readsRt=true
) // Parallel Shift Left Logical Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x36, psrlh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa},
.modifiesRd=true,
.readsRt=true
) // Parallel Shift Right Logical Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x37, psrah,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa},
.modifiesRd=true,
.readsRt=true
) // Parallel Shift Right Arithmetic Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x34, psllh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa},
.modifiesRd=true,
.readsRt=true
) // Parallel Shift Left Logical Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x36, psrlh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa},
.modifiesRd=true,
.readsRt=true
) // Parallel Shift Right Logical Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x37, psrah,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa},
.modifiesRd=true,
.readsRt=true
) // Parallel Shift Right Arithmetic Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3C, psllw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa},
.modifiesRd=true,
.readsRt=true
) // Parallel Shift Left Logical Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3E, psrlw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa},
.modifiesRd=true,
.readsRt=true
) // Parallel Shift Right Logical Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3F, psraw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa},
.modifiesRd=true,
.readsRt=true
) // Parallel Shift Right Arithmetic Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3C, psllw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa},
.modifiesRd=true,
.readsRt=true
) // Parallel Shift Left Logical Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3E, psrlw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa},
.modifiesRd=true,
.readsRt=true
) // Parallel Shift Right Logical Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3F, psraw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa},
.modifiesRd=true,
.readsRt=true
) // Parallel Shift Right Arithmetic Word

View File

@ -1,4 +1,4 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/*
@ -17,182 +17,182 @@
hi |-------|-------|-------|-------|
*/
RABBITIZER_DEF_INSTR_ID(
r5900, 0x00, paddw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x01, psubw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x02, pcgtw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Compare for Greater Than Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x03, pmaxw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel MAXimum Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x00, paddw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x01, psubw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x02, pcgtw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Compare for Greater Than Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x03, pmaxw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel MAXimum Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x04, paddh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x05, psubh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x06, pcgth,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Compare for Greater Than Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x07, pmaxh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel MAXimum Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x04, paddh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x05, psubh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x06, pcgth,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Compare for Greater Than Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x07, pmaxh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel MAXimum Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x08, paddb,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD Byte
RABBITIZER_DEF_INSTR_ID(
r5900, 0x09, psubb,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract Byte
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0A, pcgtb,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Compare for Greater Than Byte
RABBITIZER_DEF_INSTR_ID(
r5900, 0x08, paddb,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD Byte
RABBITIZER_DEF_INSTR_ID(
r5900, 0x09, psubb,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract Byte
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0A, pcgtb,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Compare for Greater Than Byte
RABBITIZER_DEF_INSTR_ID(
r5900, 0x10, paddsw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD with Signed saturation Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x11, psubsw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract with Signed saturation Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x12, pextlw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel EXTend Lower from Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x13, ppacw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel PACk to Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x10, paddsw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD with Signed saturation Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x11, psubsw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract with Signed saturation Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x12, pextlw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel EXTend Lower from Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x13, ppacw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel PACk to Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x14, paddsh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD with Signed saturation Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x15, psubsh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract with Signed saturation Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x16, pextlh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel EXTend Lower from Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x17, ppach,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel PACk to Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x14, paddsh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD with Signed saturation Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x15, psubsh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract with Signed saturation Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x16, pextlh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel EXTend Lower from Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x17, ppach,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel PACk to Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x18, paddsb,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD with Signed saturation Bytes
RABBITIZER_DEF_INSTR_ID(
r5900, 0x19, psubsb,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract with Signed saturation Bytes
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1A, pextlb,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel EXTend Lower from Bytes
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1B, ppacb,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel PACk to Bytes
RABBITIZER_DEF_INSTR_ID(
r5900, 0x18, paddsb,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD with Signed saturation Bytes
RABBITIZER_DEF_INSTR_ID(
r5900, 0x19, psubsb,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract with Signed saturation Bytes
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1A, pextlb,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel EXTend Lower from Bytes
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1B, ppacb,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel PACk to Bytes
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1E, pext5,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel EXTend from 5-bits
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1F, ppac5,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel PACk to 5-bits
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1E, pext5,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel EXTend from 5-bits
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1F, ppac5,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel PACk to 5-bits

View File

@ -1,4 +1,4 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/*
@ -17,133 +17,133 @@
hi |-------|-------|-------|-------|
*/
// TODO: operands and properties
RABBITIZER_DEF_INSTR_ID(
r5900, 0x01, pabsw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel ABSolute Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x02, pceqw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Compare for EQual Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x03, pminw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel MINimum Word
// TODO: operands and properties
RABBITIZER_DEF_INSTR_ID(
r5900, 0x01, pabsw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel ABSolute Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x02, pceqw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Compare for EQual Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x03, pminw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel MINimum Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x04, padsbh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADd/SuBtract Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x05, pabsh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel ABSolute Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x06, pceqh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Compare for EQual Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x07, pminh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel MINimum Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x04, padsbh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADd/SuBtract Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x05, pabsh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel ABSolute Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x06, pceqh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Compare for EQual Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x07, pminh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel MINimum Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0A, pceqb,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Compare for EQual Byte
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0A, pceqb,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Compare for EQual Byte
RABBITIZER_DEF_INSTR_ID(
r5900, 0x10, padduw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD Unsigned saturation Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x11, psubuw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract Unsigned saturation Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x12, pextuw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel EXTend Upper from Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x10, padduw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD Unsigned saturation Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x11, psubuw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract Unsigned saturation Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x12, pextuw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel EXTend Upper from Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x14, padduh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD Unsigned saturation Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x15, psubuh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract Unsigned saturation Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x16, pextuh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel EXTend Upper from Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x14, padduh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD Unsigned saturation Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x15, psubuh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract Unsigned saturation Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x16, pextuh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel EXTend Upper from Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x18, paddub,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD Unsigned saturation Byte
RABBITIZER_DEF_INSTR_ID(
r5900, 0x19, psubub,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract Unsigned saturation Byte
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1A, pextub,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel EXTend Upper from Byte
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1B, qfsrv,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Quadword Funnel Shift Right Variable
RABBITIZER_DEF_INSTR_ID(
r5900, 0x18, paddub,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel ADD Unsigned saturation Byte
RABBITIZER_DEF_INSTR_ID(
r5900, 0x19, psubub,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel SUBtract Unsigned saturation Byte
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1A, pextub,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel EXTend Upper from Byte
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1B, qfsrv,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Quadword Funnel Shift Right Variable

View File

@ -1,4 +1,4 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/*
@ -17,154 +17,154 @@
hi |-------|-------|-------|-------|
*/
RABBITIZER_DEF_INSTR_ID(
r5900, 0x00, pmaddw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Multiply-ADD Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x02, psllvw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Shift Left Logical Variable Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x03, psrlvw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Shift Right Logical Variable Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x00, pmaddw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Multiply-ADD Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x02, psllvw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Shift Left Logical Variable Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x03, psrlvw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Shift Right Logical Variable Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x04, pmsubw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Multiply-SUBtract Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x04, pmsubw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Multiply-SUBtract Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x08, pmfhi,
.operands={RAB_OPERAND_cpu_rd},
.modifiesRd=true
) // Parallel Move From HI register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x09, pmflo,
.operands={RAB_OPERAND_cpu_rd},
.modifiesRd=true
) // Parallel Move From LO register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0A, pinth,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel INTerleave Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x08, pmfhi,
.operands={RAB_OPERAND_cpu_rd},
.modifiesRd=true
) // Parallel Move From HI register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x09, pmflo,
.operands={RAB_OPERAND_cpu_rd},
.modifiesRd=true
) // Parallel Move From LO register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0A, pinth,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel INTerleave Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0C, pmultw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel MULTiply Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0D, pdivw,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.readsRs=true,
.readsRt=true
) // Parallel DIVide Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0E, pcpyld,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel CoPY Lower Doubleword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0C, pmultw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel MULTiply Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0D, pdivw,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.readsRs=true,
.readsRt=true
) // Parallel DIVide Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0E, pcpyld,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel CoPY Lower Doubleword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x10, pmaddh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Multiply-ADD Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x11, phmadh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Horizontal Multiply-ADd Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x12, pand,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel AND
RABBITIZER_DEF_INSTR_ID(
r5900, 0x13, pxor,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel eXclusive OR
RABBITIZER_DEF_INSTR_ID(
r5900, 0x10, pmaddh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Multiply-ADD Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x11, phmadh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Horizontal Multiply-ADd Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x12, pand,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel AND
RABBITIZER_DEF_INSTR_ID(
r5900, 0x13, pxor,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel eXclusive OR
RABBITIZER_DEF_INSTR_ID(
r5900, 0x14, pmsubh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Multiply-SUBtract Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x15, phmsbh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Horizontal Multiply-Subtract Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x14, pmsubh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Multiply-SUBtract Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x15, phmsbh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Horizontal Multiply-Subtract Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1A, pexeh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel EXchange Even Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1B, prevh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel REVerse Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1A, pexeh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel EXchange Even Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1B, prevh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel REVerse Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1C, pmulth,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Multiply Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1D, pdivbw,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.readsRs=true,
.readsRt=true
) // Parallel DIVide Broadcast Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1E, pexew,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel EXchange Even Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1F, prot3w,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel ROTate 3 Words left
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1C, pmulth,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Multiply Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1D, pdivbw,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.readsRs=true,
.readsRt=true
) // Parallel DIVide Broadcast Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1E, pexew,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel EXchange Even Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1F, prot3w,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel ROTate 3 Words left

View File

@ -1,4 +1,4 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/*
@ -17,91 +17,91 @@
hi |-------|-------|-------|-------|
*/
RABBITIZER_DEF_INSTR_ID(
r5900, 0x00, pmadduw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Multiply-ADD Unsigned Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x03, psravw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Shift Right Arithmetic Variable Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x00, pmadduw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Multiply-ADD Unsigned Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x03, psravw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Shift Right Arithmetic Variable Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x08, pmthi,
.operands={RAB_OPERAND_cpu_rs},
.readsRs=true
) // Parallel Move To HI register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x09, pmtlo,
.operands={RAB_OPERAND_cpu_rs},
.readsRs=true
) // Parallel Move To LO register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0A, pinteh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel INTerleave Even Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x08, pmthi,
.operands={RAB_OPERAND_cpu_rs},
.readsRs=true
) // Parallel Move To HI register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x09, pmtlo,
.operands={RAB_OPERAND_cpu_rs},
.readsRs=true
) // Parallel Move To LO register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0A, pinteh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel INTerleave Even Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0C, pmultuw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel MULTiply Unsigned Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0D, pdivuw,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.readsRs=true,
.readsRt=true
) // Prallel DIVide Unsigned Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0E, pcpyud,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel CoPY Upper Doubleword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0C, pmultuw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel MULTiply Unsigned Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0D, pdivuw,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.readsRs=true,
.readsRt=true
) // Prallel DIVide Unsigned Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x0E, pcpyud,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel CoPY Upper Doubleword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x12, por,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel OR
RABBITIZER_DEF_INSTR_ID(
r5900, 0x13, pnor,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Not OR
RABBITIZER_DEF_INSTR_ID(
r5900, 0x12, por,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel OR
RABBITIZER_DEF_INSTR_ID(
r5900, 0x13, pnor,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRs=true,
.readsRt=true
) // Parallel Not OR
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1A, pexch,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel EXchange Center Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1B, pcpyh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel CoPY Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1A, pexch,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel EXchange Center Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1B, pcpyh,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel CoPY Halfword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1E, pexcw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel EXchange Center Word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1E, pexcw,
.operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt},
.modifiesRd=true,
.readsRt=true
) // Parallel EXchange Center Word

View File

@ -1,4 +1,4 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/*
@ -20,44 +20,44 @@
*5 = COP2 *6 = MMI table
*/
// The other instructions are implemented using the main CPU table
// The other instructions are implemented using the main CPU table
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1E, 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
) // Load Quadword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1F, 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
) // Store Quadword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1E, 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
) // Load Quadword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x1F, 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
) // Store Quadword
RABBITIZER_DEF_INSTR_ID(
r5900, 0x36, lqc2,
.operands={RAB_OPERAND_r5900_vft, RAB_OPERAND_cpu_immediate_base},
.readsRs=true,
.canBeLo=true,
.doesDereference=true,
.doesLoad=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x36, lqc2,
.operands={RAB_OPERAND_r5900_vft, RAB_OPERAND_cpu_immediate_base},
.readsRs=true,
.canBeLo=true,
.doesDereference=true,
.doesLoad=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3E, sqc2,
.operands={RAB_OPERAND_r5900_vft, RAB_OPERAND_cpu_immediate_base},
.readsRs=true,
.canBeLo=true,
.doesDereference=true,
.doesStore=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x3E, sqc2,
.operands={RAB_OPERAND_r5900_vft, RAB_OPERAND_cpu_immediate_base},
.readsRs=true,
.canBeLo=true,
.doesDereference=true,
.doesStore=true
)

View File

@ -1,4 +1,4 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/*
@ -13,18 +13,18 @@
hi |-------|-------|-------|-------|-------|-------|-------|-------|
*/
// The other instructions are implemented using the main CPU table
// The other instructions are implemented using the main CPU table
// OP rs, IMM
RABBITIZER_DEF_INSTR_ID(
r5900, 0x18, mtsab,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x19, mtsah,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true
)
// OP rs, IMM
RABBITIZER_DEF_INSTR_ID(
r5900, 0x18, mtsab,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
r5900, 0x19, mtsah,
.operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true
)

View File

@ -1,4 +1,4 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
/*
@ -17,30 +17,30 @@
hi |-------|-------|-------|-------|-------|-------|-------|-------|
*/
// The other instructions are implemented using the main CPU table
// The other instructions are implemented using the main CPU table
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, -0x0F, sync_p, sync.p,
.operands={0},
.instrType=RABBITIZER_INSTR_TYPE_R
) // Sync
RABBITIZER_DEF_INSTR_ID_ALTNAME(
r5900, -0x0F, sync_p, sync.p,
.operands={0},
.instrType=RABBITIZER_INSTR_TYPE_R
) // Sync
RABBITIZER_DEF_INSTR_ID(
r5900, 0x18, 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
) // MULTtiply word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x18, 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
) // MULTtiply word
RABBITIZER_DEF_INSTR_ID(
r5900, 0x28, mfsa,
.operands={RAB_OPERAND_cpu_rd},
.modifiesRd=true
) // Move From Shift Amount register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x29, mtsa,
.operands={RAB_OPERAND_cpu_rs},
.readsRs=true
) // Move To Shift Amount register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x28, mfsa,
.operands={RAB_OPERAND_cpu_rd},
.modifiesRd=true
) // Move From Shift Amount register
RABBITIZER_DEF_INSTR_ID(
r5900, 0x29, mtsa,
.operands={RAB_OPERAND_cpu_rs},
.readsRs=true
) // Move To Shift Amount register

View File

@ -1,18 +1,18 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP rt, cop0d
RABBITIZER_DEF_INSTR_ID(
rsp, 0x00, mfc0,
.operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_cop0d},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.modifiesRt=true,
.notEmittedByCompilers=true
) // Move word From CP0
RABBITIZER_DEF_INSTR_ID(
rsp, 0x04, mtc0,
.operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_cop0d},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.readsRt=true,
.notEmittedByCompilers=true
) // Move word to CP0
// OP rt, cop0d
RABBITIZER_DEF_INSTR_ID(
rsp, 0x00, mfc0,
.operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_cop0d},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.modifiesRt=true,
.notEmittedByCompilers=true
) // Move word From CP0
RABBITIZER_DEF_INSTR_ID(
rsp, 0x04, mtc0,
.operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_cop0d},
.instrType=RABBITIZER_INSTR_TYPE_UNKNOWN,
.readsRt=true,
.notEmittedByCompilers=true
) // Move word to CP0

View File

@ -1,24 +1,24 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP cop2t, vd[index]
RABBITIZER_DEF_INSTR_ID(
rsp, 0x00, mfc2,
.operands={RAB_OPERAND_rsp_cop2t, RAB_OPERAND_rsp_vs_index}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x04, mtc2,
.operands={RAB_OPERAND_rsp_cop2t, RAB_OPERAND_rsp_vs_index}
)
// OP cop2t, vd[index]
RABBITIZER_DEF_INSTR_ID(
rsp, 0x00, mfc2,
.operands={RAB_OPERAND_rsp_cop2t, RAB_OPERAND_rsp_vs_index}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x04, mtc2,
.operands={RAB_OPERAND_rsp_cop2t, RAB_OPERAND_rsp_vs_index}
)
// OP rt, cop2cd
RABBITIZER_DEF_INSTR_ID(
rsp, 0x02, cfc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_rsp_cop2cd},
.modifiesRt=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x06, ctc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_rsp_cop2cd},
.readsRt=true
)
// OP rt, cop2cd
RABBITIZER_DEF_INSTR_ID(
rsp, 0x02, cfc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_rsp_cop2cd},
.modifiesRt=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x06, ctc2,
.operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_rsp_cop2cd},
.readsRt=true
)

View File

@ -1,185 +1,185 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP vd, vs, vt[elementhigh]
RABBITIZER_DEF_INSTR_ID(
rsp, 0x00, vmulf,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x01, vmulu,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x02, vrndp,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x03, vmulq,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x04, vmudl,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x05, vmudm,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x06, vmudn,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x07, vmudh,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x08, vmacf,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x09, vmacu,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0A, vrndn,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0B, vmacq,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0C, vmadl,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0D, vmadm,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0E, vmadn,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0F, vmadh,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x10, vadd,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x11, vsub,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x13, vabs,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x14, vaddc,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x15, vsubc,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x1D, vsar,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x28, vand,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x29, vnand,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x2A, vor,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x2B, vnor,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x2C, vxor,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x2D, vnxor,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
// OP vd, vs, vt[elementhigh]
RABBITIZER_DEF_INSTR_ID(
rsp, 0x00, vmulf,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x01, vmulu,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x02, vrndp,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x03, vmulq,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x04, vmudl,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x05, vmudm,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x06, vmudn,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x07, vmudh,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x08, vmacf,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x09, vmacu,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0A, vrndn,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0B, vmacq,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0C, vmadl,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0D, vmadm,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0E, vmadn,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0F, vmadh,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x10, vadd,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x11, vsub,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x13, vabs,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x14, vaddc,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x15, vsubc,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x1D, vsar,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x28, vand,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x29, vnand,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x2A, vor,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x2B, vnor,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x2C, vxor,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x2D, vnxor,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x20, vlt,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x21, veq,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x22, vne,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x23, vge,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x24, vcl,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x25, vch,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x26, vcr,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x27, vmrg,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x20, vlt,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x21, veq,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x22, vne,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x23, vge,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x24, vcl,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x25, vch,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x26, vcr,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x27, vmrg,
.operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh}
)
// OP vd[de], vt[elementhigh]
RABBITIZER_DEF_INSTR_ID(
rsp, 0x30, vrcp,
.operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x31, vrcpl,
.operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh}
) // operands may be wrong
RABBITIZER_DEF_INSTR_ID(
rsp, 0x32, vrcph,
.operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x33, vmov,
.operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x34, vrsq,
.operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x35, vrsql,
.operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x36, vrsqh,
.operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh}
)
// OP vd[de], vt[elementhigh]
RABBITIZER_DEF_INSTR_ID(
rsp, 0x30, vrcp,
.operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x31, vrcpl,
.operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh}
) // operands may be wrong
RABBITIZER_DEF_INSTR_ID(
rsp, 0x32, vrcph,
.operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x33, vmov,
.operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x34, vrsq,
.operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x35, vrsql,
.operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh}
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x36, vrsqh,
.operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh}
)
// OP
RABBITIZER_DEF_INSTR_ID(
rsp, 0x37, vnop,
.operands={0}
)
// OP
RABBITIZER_DEF_INSTR_ID(
rsp, 0x37, vnop,
.operands={0}
)

View File

@ -1,247 +1,247 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP LABEL
RABBITIZER_DEF_INSTR_ID(
rsp, 0x02, j,
.operands={RAB_OPERAND_cpu_label},
.instrType=RABBITIZER_INSTR_TYPE_J,
.isJump=true,
.isJumpWithAddress=true
) // Jump
RABBITIZER_DEF_INSTR_ID(
rsp, 0x03, jal,
.operands={RAB_OPERAND_cpu_label},
.instrType=RABBITIZER_INSTR_TYPE_J,
.isJump=true,
.isJumpWithAddress=true,
.doesLink=true
) // Jump And Link
// OP LABEL
RABBITIZER_DEF_INSTR_ID(
rsp, 0x02, j,
.operands={RAB_OPERAND_cpu_label},
.instrType=RABBITIZER_INSTR_TYPE_J,
.isJump=true,
.isJumpWithAddress=true
) // Jump
RABBITIZER_DEF_INSTR_ID(
rsp, 0x03, jal,
.operands={RAB_OPERAND_cpu_label},
.instrType=RABBITIZER_INSTR_TYPE_J,
.isJump=true,
.isJumpWithAddress=true,
.doesLink=true
) // Jump And Link
// OP rs, rt, IMM
RABBITIZER_DEF_INSTR_ID(
rsp, 0x04, 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
) // Branch on EQual
RABBITIZER_DEF_INSTR_ID(
rsp, 0x05, 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
) // Branch on Not Equal
// OP rs, rt, IMM
RABBITIZER_DEF_INSTR_ID(
rsp, 0x04, 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
) // Branch on EQual
RABBITIZER_DEF_INSTR_ID(
rsp, 0x05, 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
) // Branch on Not Equal
// OP rs, IMM
RABBITIZER_DEF_INSTR_ID(
rsp, 0x06, blez,
.operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true,
.isBranch=true
) // Branch on Less than or Equal to Zero
RABBITIZER_DEF_INSTR_ID(
rsp, 0x07, bgtz,
.operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true,
.isBranch=true
) // Branch on Greater Than Zero
// OP rs, IMM
RABBITIZER_DEF_INSTR_ID(
rsp, 0x06, blez,
.operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true,
.isBranch=true
) // Branch on Less than or Equal to Zero
RABBITIZER_DEF_INSTR_ID(
rsp, 0x07, bgtz,
.operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true,
.isBranch=true
) // Branch on Greater Than Zero
// OP rt, rs, IMM
RABBITIZER_DEF_INSTR_ID(
rsp, 0x08, addi,
.operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_I,
.modifiesRt=true,
.readsRs=true,
.notEmittedByCompilers=true,
.canBeLo=true
) // Add Immediate
RABBITIZER_DEF_INSTR_ID(
rsp, 0x09, 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
) // Add Immediate Unsigned Word
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0A, slti,
.operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_I,
.modifiesRt=true,
.readsRs=true
) // Set on Less Than Immediate
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0B, sltiu,
.operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_I,
.modifiesRt=true,
.readsRs=true
) // Set on Less Than Immediate Unsigned
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0C, 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
) // And Immediate
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0D, 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
) // Or Immediate
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0E, 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
) // eXclusive OR Immediate
// OP rt, rs, IMM
RABBITIZER_DEF_INSTR_ID(
rsp, 0x08, addi,
.operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_I,
.modifiesRt=true,
.readsRs=true,
.notEmittedByCompilers=true,
.canBeLo=true
) // Add Immediate
RABBITIZER_DEF_INSTR_ID(
rsp, 0x09, 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
) // Add Immediate Unsigned Word
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0A, slti,
.operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_I,
.modifiesRt=true,
.readsRs=true
) // Set on Less Than Immediate
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0B, sltiu,
.operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_I,
.modifiesRt=true,
.readsRs=true
) // Set on Less Than Immediate Unsigned
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0C, 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
) // And Immediate
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0D, 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
) // Or Immediate
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0E, 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
) // eXclusive OR Immediate
// OP rt, IMM
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0F, lui,
.operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_I,
.isUnsigned=true,
.modifiesRt=true,
.canBeHi=true
) // Load Upper Immediate
// OP rt, IMM
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0F, lui,
.operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_immediate},
.instrType=RABBITIZER_INSTR_TYPE_I,
.isUnsigned=true,
.modifiesRt=true,
.canBeHi=true
) // Load Upper Immediate
// OP rt, IMM(base)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x20, 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
) // Load Byte
RABBITIZER_DEF_INSTR_ID(
rsp, 0x21, 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
) // Load Halfword
RABBITIZER_DEF_INSTR_ID(
rsp, 0x23, 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
) // Load Word
RABBITIZER_DEF_INSTR_ID(
rsp, 0x24, 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
) // Load Byte Insigned
RABBITIZER_DEF_INSTR_ID(
rsp, 0x25, 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
) // Load Halfword Unsigned
RABBITIZER_DEF_INSTR_ID(
rsp, 0x28, 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
) // Store Byte
RABBITIZER_DEF_INSTR_ID(
rsp, 0x29, 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
) // Store Halfword
RABBITIZER_DEF_INSTR_ID(
rsp, 0x2B, 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
) // Store Word
RABBITIZER_DEF_INSTR_ID(
rsp, 0x33, pref,
.operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base},
.instrType=RABBITIZER_INSTR_TYPE_I,
.readsRs=true,
.readsRt=true
) // Prefetch
// OP rt, IMM(base)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x20, 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
) // Load Byte
RABBITIZER_DEF_INSTR_ID(
rsp, 0x21, 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
) // Load Halfword
RABBITIZER_DEF_INSTR_ID(
rsp, 0x23, 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
) // Load Word
RABBITIZER_DEF_INSTR_ID(
rsp, 0x24, 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
) // Load Byte Insigned
RABBITIZER_DEF_INSTR_ID(
rsp, 0x25, 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
) // Load Halfword Unsigned
RABBITIZER_DEF_INSTR_ID(
rsp, 0x28, 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
) // Store Byte
RABBITIZER_DEF_INSTR_ID(
rsp, 0x29, 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
) // Store Halfword
RABBITIZER_DEF_INSTR_ID(
rsp, 0x2B, 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
) // Store Word
RABBITIZER_DEF_INSTR_ID(
rsp, 0x33, pref,
.operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base},
.instrType=RABBITIZER_INSTR_TYPE_I,
.readsRs=true,
.readsRt=true
) // Prefetch
// Pseudo-Instruction Unique IDs
// Pseudo-Instruction Unique IDs
// OP IMM
RABBITIZER_DEF_INSTR_ID(
rsp, -0x03, b,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true
) // Branch (unconditional)
// OP IMM
RABBITIZER_DEF_INSTR_ID(
rsp, -0x03, b,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true
) // Branch (unconditional)
// OP rs, IMM
RABBITIZER_DEF_INSTR_ID(
rsp, -0x04, beqz,
.operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true,
.isBranch=true
) // Branch on EQual Zero
RABBITIZER_DEF_INSTR_ID(
rsp, -0x05, bnez,
.operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true,
.isBranch=true
) // Branch on Not Equal Zero
// OP rs, IMM
RABBITIZER_DEF_INSTR_ID(
rsp, -0x04, beqz,
.operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true,
.isBranch=true
) // Branch on EQual Zero
RABBITIZER_DEF_INSTR_ID(
rsp, -0x05, bnez,
.operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true,
.isBranch=true
) // Branch on Not Equal Zero

View File

@ -1,59 +1,59 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP vt[elementlow], offset(vs)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x00, lbv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x01, lsv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x02, llv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x03, ldv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x04, lqv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x05, lrv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x06, lpv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x07, luv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x08, lhv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x09, lfv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0B, ltv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
// OP vt[elementlow], offset(vs)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x00, lbv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x01, lsv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x02, llv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x03, ldv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x04, lqv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x05, lrv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x06, lpv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x07, luv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x08, lhv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x09, lfv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0B, ltv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)

View File

@ -1,65 +1,65 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP vt[elementlow], offset(vs)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x00, sbv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x01, ssv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x02, slv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x03, sdv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x04, sqv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x05, srv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x06, spv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x07, suv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x08, shv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x09, sfv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0B, stv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
// OP vt[elementlow], offset(vs)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x00, sbv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x01, ssv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x02, slv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x03, sdv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x04, sqv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x05, srv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x06, spv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x07, suv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x08, shv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x09, sfv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0B, stv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, -0x07, swv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)
RABBITIZER_DEF_INSTR_ID(
rsp, -0x07, swv,
.operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs},
.readsRs=true
)

View File

@ -1,49 +1,49 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP rs, IMM
RABBITIZER_DEF_INSTR_ID(
rsp, 0x00, bltz,
.operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true,
.isBranch=true
) // Branch on Less Than Zero
RABBITIZER_DEF_INSTR_ID(
rsp, 0x01, bgez,
.operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true,
.isBranch=true
) // Branch on Greater than or Equal to Zero
// OP rs, IMM
RABBITIZER_DEF_INSTR_ID(
rsp, 0x00, bltz,
.operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true,
.isBranch=true
) // Branch on Less Than Zero
RABBITIZER_DEF_INSTR_ID(
rsp, 0x01, bgez,
.operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true,
.isBranch=true
) // Branch on Greater than or Equal to Zero
RABBITIZER_DEF_INSTR_ID(
rsp, 0x10, bltzal,
.operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true,
.isBranch=true,
.doesLink=true
) // Branch on Less Than Zero and Link
RABBITIZER_DEF_INSTR_ID(
rsp, 0x11, bgezal,
.operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true,
.isBranch=true,
.notEmittedByCompilers=true,
.doesLink=true
) // Branch on Greater Than or Equal to Zero and Link
RABBITIZER_DEF_INSTR_ID(
rsp, 0x10, bltzal,
.operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true,
.isBranch=true,
.doesLink=true
) // Branch on Less Than Zero and Link
RABBITIZER_DEF_INSTR_ID(
rsp, 0x11, bgezal,
.operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.readsRs=true,
.isBranch=true,
.notEmittedByCompilers=true,
.doesLink=true
) // Branch on Greater Than or Equal to Zero and Link
// Pseudo-Instruction Unique IDs
// Pseudo-Instruction Unique IDs
RABBITIZER_DEF_INSTR_ID(
rsp, -0x11, bal,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.notEmittedByCompilers=true,
.doesLink=true,
.isPseudo=true
) // Branch and Link
RABBITIZER_DEF_INSTR_ID(
rsp, -0x11, bal,
.operands={RAB_OPERAND_cpu_branch_target_label},
.instrType=RABBITIZER_INSTR_TYPE_REGIMM,
.isBranch=true,
.notEmittedByCompilers=true,
.doesLink=true,
.isPseudo=true
) // Branch and Link

View File

@ -1,215 +1,215 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
// OP rd, rt, sa
RABBITIZER_DEF_INSTR_ID(
rsp, 0x00, sll,
.operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_sa},
.instrType=RABBITIZER_INSTR_TYPE_R,
.modifiesRd=true,
.readsRt=true
) // Shift word Left Logical
RABBITIZER_DEF_INSTR_ID(
rsp, 0x02, srl,
.operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_sa},
.instrType=RABBITIZER_INSTR_TYPE_R,
.modifiesRd=true,
.readsRt=true
) // Shift word Right Logical
RABBITIZER_DEF_INSTR_ID(
rsp, 0x03, sra,
.operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_sa},
.instrType=RABBITIZER_INSTR_TYPE_R,
.modifiesRd=true,
.readsRt=true
) // Shift word Right Arithmetic
// OP rd, rt, sa
RABBITIZER_DEF_INSTR_ID(
rsp, 0x00, sll,
.operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_sa},
.instrType=RABBITIZER_INSTR_TYPE_R,
.modifiesRd=true,
.readsRt=true
) // Shift word Left Logical
RABBITIZER_DEF_INSTR_ID(
rsp, 0x02, srl,
.operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_sa},
.instrType=RABBITIZER_INSTR_TYPE_R,
.modifiesRd=true,
.readsRt=true
) // Shift word Right Logical
RABBITIZER_DEF_INSTR_ID(
rsp, 0x03, sra,
.operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_sa},
.instrType=RABBITIZER_INSTR_TYPE_R,
.modifiesRd=true,
.readsRt=true
) // Shift word Right Arithmetic
// OP rd, rt, rs
RABBITIZER_DEF_INSTR_ID(
rsp, 0x04, 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
) // Shift word Left Logical Variable
RABBITIZER_DEF_INSTR_ID(
rsp, 0x06, 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
) // Shift word Right Logical Variable
RABBITIZER_DEF_INSTR_ID(
rsp, 0x07, 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
) // Shift word Right Arithmetic Variable
// OP rd, rt, rs
RABBITIZER_DEF_INSTR_ID(
rsp, 0x04, 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
) // Shift word Left Logical Variable
RABBITIZER_DEF_INSTR_ID(
rsp, 0x06, 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
) // Shift word Right Logical Variable
RABBITIZER_DEF_INSTR_ID(
rsp, 0x07, 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
) // Shift word Right Arithmetic Variable
// OP rs
RABBITIZER_DEF_INSTR_ID(
rsp, 0x08, jr,
.operands={RAB_OPERAND_rsp_rs},
.instrType=RABBITIZER_INSTR_TYPE_R,
.readsRs=true,
.isJump=true
) // Jump Register
RABBITIZER_DEF_INSTR_ID(
rsp, 0x09, jalr,
.operands={RAB_OPERAND_rsp_maybe_rd_rs},
.instrType=RABBITIZER_INSTR_TYPE_R,
.isJump=true,
.modifiesRd=true,
.readsRs=true,
.doesLink=true
) // Jump And Link Register
// OP rs
RABBITIZER_DEF_INSTR_ID(
rsp, 0x08, jr,
.operands={RAB_OPERAND_rsp_rs},
.instrType=RABBITIZER_INSTR_TYPE_R,
.readsRs=true,
.isJump=true
) // Jump Register
RABBITIZER_DEF_INSTR_ID(
rsp, 0x09, jalr,
.operands={RAB_OPERAND_rsp_maybe_rd_rs},
.instrType=RABBITIZER_INSTR_TYPE_R,
.isJump=true,
.modifiesRd=true,
.readsRs=true,
.doesLink=true
) // Jump And Link Register
// OP rd, rs, rt
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0A, 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
) // MOVe conditional on Zero
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0B, 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
) // MOVe conditional on Not zero
// OP rd, rs, rt
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0A, 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
) // MOVe conditional on Zero
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0B, 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
) // MOVe conditional on Not zero
RABBITIZER_DEF_INSTR_ID(
rsp, 0x20, 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,
.notEmittedByCompilers=true
) // ADD word
RABBITIZER_DEF_INSTR_ID(
rsp, 0x21, 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
) // ADD Unsigned word
RABBITIZER_DEF_INSTR_ID(
rsp, 0x22, sub,
.operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt},
.instrType=RABBITIZER_INSTR_TYPE_R,
.modifiesRd=true,
.notEmittedByCompilers=true,
.readsRs=true,
.readsRt=true
) // Subtract word
RABBITIZER_DEF_INSTR_ID(
rsp, 0x23, 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
) // SUBtract Unsigned word
RABBITIZER_DEF_INSTR_ID(
rsp, 0x24, 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
) // AND
RABBITIZER_DEF_INSTR_ID(
rsp, 0x25, 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
) // OR
RABBITIZER_DEF_INSTR_ID(
rsp, 0x26, 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
) // eXclusive OR
RABBITIZER_DEF_INSTR_ID(
rsp, 0x27, 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
) // Not OR
RABBITIZER_DEF_INSTR_ID(
rsp, 0x2A, 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
) // Set on Less Than
RABBITIZER_DEF_INSTR_ID(
rsp, 0x2B, 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
) // Set on Less Than Unsigned
RABBITIZER_DEF_INSTR_ID(
rsp, 0x20, 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,
.notEmittedByCompilers=true
) // ADD word
RABBITIZER_DEF_INSTR_ID(
rsp, 0x21, 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
) // ADD Unsigned word
RABBITIZER_DEF_INSTR_ID(
rsp, 0x22, sub,
.operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt},
.instrType=RABBITIZER_INSTR_TYPE_R,
.modifiesRd=true,
.notEmittedByCompilers=true,
.readsRs=true,
.readsRt=true
) // Subtract word
RABBITIZER_DEF_INSTR_ID(
rsp, 0x23, 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
) // SUBtract Unsigned word
RABBITIZER_DEF_INSTR_ID(
rsp, 0x24, 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
) // AND
RABBITIZER_DEF_INSTR_ID(
rsp, 0x25, 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
) // OR
RABBITIZER_DEF_INSTR_ID(
rsp, 0x26, 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
) // eXclusive OR
RABBITIZER_DEF_INSTR_ID(
rsp, 0x27, 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
) // Not OR
RABBITIZER_DEF_INSTR_ID(
rsp, 0x2A, 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
) // Set on Less Than
RABBITIZER_DEF_INSTR_ID(
rsp, 0x2B, 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
) // Set on Less Than Unsigned
// OP code
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0D, break,
.operands={RAB_OPERAND_cpu_code},
.instrType=RABBITIZER_INSTR_TYPE_R
) // Break
// OP code
RABBITIZER_DEF_INSTR_ID(
rsp, 0x0D, break,
.operands={RAB_OPERAND_cpu_code},
.instrType=RABBITIZER_INSTR_TYPE_R
) // Break
// Pseudo-Instruction Unique IDs
// OP
RABBITIZER_DEF_INSTR_ID(
rsp, -0x01, nop,
.operands={0},
.instrType=RABBITIZER_INSTR_TYPE_R,
.isPseudo=true
) // No OPeration
// Pseudo-Instruction Unique IDs
// OP
RABBITIZER_DEF_INSTR_ID(
rsp, -0x01, nop,
.operands={0},
.instrType=RABBITIZER_INSTR_TYPE_R,
.isPseudo=true
) // No OPeration
// OP rd, rs
RABBITIZER_DEF_INSTR_ID(
rsp, -0x25, move,
.operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs},
.instrType=RABBITIZER_INSTR_TYPE_R,
.modifiesRd=true,
.readsRs=true,
.isPseudo=true
) // Move
RABBITIZER_DEF_INSTR_ID(
rsp, -0x27, not,
.operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs},
.instrType=RABBITIZER_INSTR_TYPE_R,
.modifiesRd=true,
.readsRs=true,
.isPseudo=true
) // Not
// OP rd, rs
RABBITIZER_DEF_INSTR_ID(
rsp, -0x25, move,
.operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs},
.instrType=RABBITIZER_INSTR_TYPE_R,
.modifiesRd=true,
.readsRs=true,
.isPseudo=true
) // Move
RABBITIZER_DEF_INSTR_ID(
rsp, -0x27, not,
.operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs},
.instrType=RABBITIZER_INSTR_TYPE_R,
.modifiesRd=true,
.readsRs=true,
.isPseudo=true
) // Not
// OP rd, rt
RABBITIZER_DEF_INSTR_ID(
rsp, -0x23, negu,
.operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt},
.instrType=RABBITIZER_INSTR_TYPE_R,
.modifiesRd=true,
.readsRt=true,
.isPseudo=true
)
// OP rd, rt
RABBITIZER_DEF_INSTR_ID(
rsp, -0x23, negu,
.operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt},
.instrType=RABBITIZER_INSTR_TYPE_R,
.modifiesRd=true,
.readsRt=true,
.isPseudo=true
)

View File

@ -1,27 +1,27 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
RAB_DEF_OPERAND(cpu, rs)
RAB_DEF_OPERAND(cpu, rt)
RAB_DEF_OPERAND(cpu, rd)
RAB_DEF_OPERAND(cpu, sa)
RAB_DEF_OPERAND(cpu, zero) // $zero
// RAB_DEF_OPERAND(cpu, function)
RAB_DEF_OPERAND(cpu, cop0d)
RAB_DEF_OPERAND(cpu, fs)
RAB_DEF_OPERAND(cpu, ft)
RAB_DEF_OPERAND(cpu, fd)
RAB_DEF_OPERAND(cpu, cop1cs) // Coprocessor 1 control fs
RAB_DEF_OPERAND(cpu, cop2t)
RAB_DEF_OPERAND(cpu, cop2cd) // Coprocessor 2 control rd
RAB_DEF_OPERAND(cpu, op)
RAB_DEF_OPERAND(cpu, code)
RAB_DEF_OPERAND(cpu, code_lower)
RAB_DEF_OPERAND(cpu, copraw)
RAB_DEF_OPERAND(cpu, label)
RAB_DEF_OPERAND(cpu, immediate)
RAB_DEF_OPERAND(cpu, branch_target_label)
RAB_DEF_OPERAND(cpu, rs)
RAB_DEF_OPERAND(cpu, rt)
RAB_DEF_OPERAND(cpu, rd)
RAB_DEF_OPERAND(cpu, sa)
RAB_DEF_OPERAND(cpu, zero) // $zero
// RAB_DEF_OPERAND(cpu, function)
RAB_DEF_OPERAND(cpu, cop0d)
RAB_DEF_OPERAND(cpu, fs)
RAB_DEF_OPERAND(cpu, ft)
RAB_DEF_OPERAND(cpu, fd)
RAB_DEF_OPERAND(cpu, cop1cs) // Coprocessor 1 control fs
RAB_DEF_OPERAND(cpu, cop2t)
RAB_DEF_OPERAND(cpu, cop2cd) // Coprocessor 2 control rd
RAB_DEF_OPERAND(cpu, op)
RAB_DEF_OPERAND(cpu, code)
RAB_DEF_OPERAND(cpu, code_lower)
RAB_DEF_OPERAND(cpu, copraw)
RAB_DEF_OPERAND(cpu, label)
RAB_DEF_OPERAND(cpu, immediate)
RAB_DEF_OPERAND(cpu, branch_target_label)
// composed/aliased operands
RAB_DEF_OPERAND(cpu, immediate_base)
RAB_DEF_OPERAND(cpu, maybe_rd_rs) // $rd is omitted if it is $ra
// composed/aliased operands
RAB_DEF_OPERAND(cpu, immediate_base)
RAB_DEF_OPERAND(cpu, maybe_rd_rs) // $rd is omitted if it is $ra

View File

@ -1,33 +1,33 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
RAB_DEF_OPERAND(r5900, I)
RAB_DEF_OPERAND(r5900, Q)
RAB_DEF_OPERAND(r5900, R)
RAB_DEF_OPERAND(r5900, ACC)
RAB_DEF_OPERAND(r5900, ACCxyzw)
RAB_DEF_OPERAND(r5900, vfs)
RAB_DEF_OPERAND(r5900, vft)
RAB_DEF_OPERAND(r5900, vfd)
RAB_DEF_OPERAND(r5900, vfsxyzw)
RAB_DEF_OPERAND(r5900, vftxyzw)
RAB_DEF_OPERAND(r5900, vfdxyzw)
RAB_DEF_OPERAND(r5900, vfsn)
RAB_DEF_OPERAND(r5900, vftn)
RAB_DEF_OPERAND(r5900, vfdn)
RAB_DEF_OPERAND(r5900, vfsl)
RAB_DEF_OPERAND(r5900, vftl)
RAB_DEF_OPERAND(r5900, vfdl)
RAB_DEF_OPERAND(r5900, vfsm)
RAB_DEF_OPERAND(r5900, vftm)
RAB_DEF_OPERAND(r5900, vfdm)
RAB_DEF_OPERAND(r5900, vis)
RAB_DEF_OPERAND(r5900, vit)
RAB_DEF_OPERAND(r5900, vid)
RAB_DEF_OPERAND(r5900, vis_predecr)
RAB_DEF_OPERAND(r5900, vit_predecr)
RAB_DEF_OPERAND(r5900, vid_predecr)
RAB_DEF_OPERAND(r5900, vis_postincr)
RAB_DEF_OPERAND(r5900, vit_postincr)
RAB_DEF_OPERAND(r5900, vid_postincr)
RAB_DEF_OPERAND(r5900, immediate5)
RAB_DEF_OPERAND(r5900, I)
RAB_DEF_OPERAND(r5900, Q)
RAB_DEF_OPERAND(r5900, R)
RAB_DEF_OPERAND(r5900, ACC)
RAB_DEF_OPERAND(r5900, ACCxyzw)
RAB_DEF_OPERAND(r5900, vfs)
RAB_DEF_OPERAND(r5900, vft)
RAB_DEF_OPERAND(r5900, vfd)
RAB_DEF_OPERAND(r5900, vfsxyzw)
RAB_DEF_OPERAND(r5900, vftxyzw)
RAB_DEF_OPERAND(r5900, vfdxyzw)
RAB_DEF_OPERAND(r5900, vfsn)
RAB_DEF_OPERAND(r5900, vftn)
RAB_DEF_OPERAND(r5900, vfdn)
RAB_DEF_OPERAND(r5900, vfsl)
RAB_DEF_OPERAND(r5900, vftl)
RAB_DEF_OPERAND(r5900, vfdl)
RAB_DEF_OPERAND(r5900, vfsm)
RAB_DEF_OPERAND(r5900, vftm)
RAB_DEF_OPERAND(r5900, vfdm)
RAB_DEF_OPERAND(r5900, vis)
RAB_DEF_OPERAND(r5900, vit)
RAB_DEF_OPERAND(r5900, vid)
RAB_DEF_OPERAND(r5900, vis_predecr)
RAB_DEF_OPERAND(r5900, vit_predecr)
RAB_DEF_OPERAND(r5900, vid_predecr)
RAB_DEF_OPERAND(r5900, vis_postincr)
RAB_DEF_OPERAND(r5900, vit_postincr)
RAB_DEF_OPERAND(r5900, vid_postincr)
RAB_DEF_OPERAND(r5900, immediate5)

View File

@ -1,25 +1,25 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
RAB_DEF_OPERAND(rsp, rs)
RAB_DEF_OPERAND(rsp, rt)
RAB_DEF_OPERAND(rsp, rd)
RAB_DEF_OPERAND(rsp, cop0d)
RAB_DEF_OPERAND(rsp, cop2t)
RAB_DEF_OPERAND(rsp, cop2cd) // Coprocessor 2 control rd
RAB_DEF_OPERAND(rsp, vs)
RAB_DEF_OPERAND(rsp, vt)
RAB_DEF_OPERAND(rsp, vd)
// RAB_DEF_OPERAND(rsp, elementhigh)
// RAB_DEF_OPERAND(rsp, elementlow)
// RAB_DEF_OPERAND(rsp, index)
// RAB_DEF_OPERAND(rsp, offset)
RAB_DEF_OPERAND(rsp, rs)
RAB_DEF_OPERAND(rsp, rt)
RAB_DEF_OPERAND(rsp, rd)
RAB_DEF_OPERAND(rsp, cop0d)
RAB_DEF_OPERAND(rsp, cop2t)
RAB_DEF_OPERAND(rsp, cop2cd) // Coprocessor 2 control rd
RAB_DEF_OPERAND(rsp, vs)
RAB_DEF_OPERAND(rsp, vt)
RAB_DEF_OPERAND(rsp, vd)
// RAB_DEF_OPERAND(rsp, elementhigh)
// RAB_DEF_OPERAND(rsp, elementlow)
// RAB_DEF_OPERAND(rsp, index)
// RAB_DEF_OPERAND(rsp, offset)
// composed/aliased operands
RAB_DEF_OPERAND(rsp, vt_elementhigh)
RAB_DEF_OPERAND(rsp, vt_elementlow)
RAB_DEF_OPERAND(rsp, vd_de)
RAB_DEF_OPERAND(rsp, vs_index)
RAB_DEF_OPERAND(rsp, offset_rs)
RAB_DEF_OPERAND(rsp, immediate_base)
RAB_DEF_OPERAND(rsp, maybe_rd_rs)
// composed/aliased operands
RAB_DEF_OPERAND(rsp, vt_elementhigh)
RAB_DEF_OPERAND(rsp, vt_elementlow)
RAB_DEF_OPERAND(rsp, vd_de)
RAB_DEF_OPERAND(rsp, vs_index)
RAB_DEF_OPERAND(rsp, offset_rs)
RAB_DEF_OPERAND(rsp, immediate_base)
RAB_DEF_OPERAND(rsp, maybe_rd_rs)

View File

@ -6,7 +6,7 @@
#include "common/Utils.h"
#define RABBITIZER_DEF_ABI(name) { "Abi", #name, RABBITIZER_ABI_##name, false, NULL }
#define RABBITIZER_DEF_ABI(name) { "Abi", #name, RABBITIZER_ABI_##name, false, NULL },
RabbitizerEnumMetadata rabbitizer_enum_Abi_enumvalues[] = {
#include "common/Abi.inc"

View File

@ -1,11 +1,11 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#include "enums_utils.h"
#include "instructions/RabbitizerInstruction.h"
#define RABBITIZER_DEF_INSTR_CATEGORY(name) { "InstrCategory", #name, RABBITIZER_INSTRCAT_##name, false, NULL }
#define RABBITIZER_DEF_INSTR_CATEGORY(name) { "InstrCategory", #name, RABBITIZER_INSTRCAT_##name, false, NULL },
RabbitizerEnumMetadata rabbitizer_enum_InstrCategory_enumvalues[] = {
#include "instructions/InstrCategory.inc"

8
rust/src/abi_enum.rs generated
View File

@ -7,9 +7,9 @@
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum Abi {
NUMERIC,
O32,
N32,
N64,
NUMERIC,
O32,
N32,
N64,
MAX,
}

View File

@ -5,7 +5,7 @@
#define HASH_EXPANSION(x) x
#define SPECIAL_RS_TAG(...) HASH_EXPANSION(HASH)[__VA_ARGS__]
#define RABBITIZER_DEF_ABI(name) name
#define RABBITIZER_DEF_ABI(name) name,
SPECIAL_RS_TAG(repr(u32))
SPECIAL_RS_TAG(derive(Debug, Copy, Clone, Hash, PartialEq, Eq))
@ -13,7 +13,7 @@ SPECIAL_RS_TAG(allow(non_camel_case_types))
pub enum Abi {
#include "common/Abi.inc"
RABBITIZER_DEF_ABI(MAX),
RABBITIZER_DEF_ABI(MAX)
}
#undef RABBITIZER_DEF_ABI

View File

@ -7,12 +7,12 @@
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum AccessType {
INVALID,
BYTE,
SHORT,
WORD,
DOUBLEWORD,
FLOAT,
DOUBLEFLOAT,
INVALID,
BYTE,
SHORT,
WORD,
DOUBLEWORD,
FLOAT,
DOUBLEFLOAT,
MAX,
}

View File

@ -7,9 +7,9 @@
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum InstrCategory {
CPU,
RSP,
R3000GTE,
R5900,
CPU,
RSP,
R3000GTE,
R5900,
MAX,
}

View File

@ -1,11 +1,11 @@
/* SPDX-FileCopyrightText: © 2022 Decompollaborate */
/* SPDX-FileCopyrightText: © 2022-2023 Decompollaborate */
/* SPDX-License-Identifier: MIT */
#define HASH #
#define HASH_EXPANSION(x) x
#define SPECIAL_RS_TAG(...) HASH_EXPANSION(HASH)[__VA_ARGS__]
#define RABBITIZER_DEF_INSTR_CATEGORY(name) name
#define RABBITIZER_DEF_INSTR_CATEGORY(name) name,
SPECIAL_RS_TAG(repr(u32))
SPECIAL_RS_TAG(derive(Debug, Copy, Clone, Hash, PartialEq, Eq))
@ -13,7 +13,7 @@ SPECIAL_RS_TAG(allow(non_camel_case_types))
pub enum InstrCategory {
#include "instructions/InstrCategory.inc"
RABBITIZER_DEF_INSTR_CATEGORY(MAX),
RABBITIZER_DEF_INSTR_CATEGORY(MAX)
}
#undef RABBITIZER_DEF_INSTR_CATEGORY

1450
rust/src/instr_id_enum.rs generated

File diff suppressed because it is too large Load Diff

View File

@ -8,77 +8,77 @@
#[allow(non_camel_case_types)]
pub enum 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_cop2cd,
cpu_op,
cpu_code,
cpu_code_lower,
cpu_copraw,
cpu_label,
cpu_immediate,
cpu_branch_target_label,
cpu_immediate_base,
cpu_maybe_rd_rs,
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,
rsp_maybe_rd_rs,
cpu_rs,
cpu_rt,
cpu_rd,
cpu_sa,
cpu_zero,
cpu_cop0d,
cpu_fs,
cpu_ft,
cpu_fd,
cpu_cop1cs,
cpu_cop2t,
cpu_cop2cd,
cpu_op,
cpu_code,
cpu_code_lower,
cpu_copraw,
cpu_label,
cpu_immediate,
cpu_branch_target_label,
cpu_immediate_base,
cpu_maybe_rd_rs,
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,
rsp_maybe_rd_rs,
r3000gte_sf,
r3000gte_mx,
r3000gte_v,
r3000gte_cv,
r3000gte_lm,
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,
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,
}

View File

@ -7,10 +7,10 @@
#define InstrCategory_Names_array_table_h_automatic
const char *const RabbitizerInstrCategory_Names[] = {
[RABBITIZER_INSTRCAT_CPU] = "CPU",
[RABBITIZER_INSTRCAT_RSP] = "RSP",
[RABBITIZER_INSTRCAT_R3000GTE] = "R3000GTE",
[RABBITIZER_INSTRCAT_R5900] = "R5900",
[RABBITIZER_INSTRCAT_CPU] = "CPU",
[RABBITIZER_INSTRCAT_RSP] = "RSP",
[RABBITIZER_INSTRCAT_R3000GTE] = "R3000GTE",
[RABBITIZER_INSTRCAT_R5900] = "R5900",
};
#endif

View File

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,78 +7,78 @@
#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_cop2cd] = RabbitizerOperandType_process_cpu_cop2cd,
[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_cpu_maybe_rd_rs] = RabbitizerOperandType_process_cpu_maybe_rd_rs,
[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_rsp_maybe_rd_rs] = RabbitizerOperandType_process_rsp_maybe_rd_rs,
[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_cop2cd] = RabbitizerOperandType_process_cpu_cop2cd,
[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_cpu_maybe_rd_rs] = RabbitizerOperandType_process_cpu_maybe_rd_rs,
[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_rsp_maybe_rd_rs] = RabbitizerOperandType_process_rsp_maybe_rd_rs,
[RAB_OPERAND_r3000gte_sf] = RabbitizerOperandType_process_r3000gte_sf,
[RAB_OPERAND_r3000gte_mx] = RabbitizerOperandType_process_r3000gte_mx,
[RAB_OPERAND_r3000gte_v] = RabbitizerOperandType_process_r3000gte_v,
[RAB_OPERAND_r3000gte_cv] = RabbitizerOperandType_process_r3000gte_cv,
[RAB_OPERAND_r3000gte_lm] = RabbitizerOperandType_process_r3000gte_lm,
[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,
[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