mirror of
https://github.com/Decompollaborate/rabbitizer.git
synced 2025-01-29 21:32:45 +00:00
Fix borken identation in tables
This commit is contained in:
parent
d57c3b22b2
commit
3c8904b6fb
1
Makefile
1
Makefile
@ -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
|
||||
|
@ -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,
|
||||
};
|
||||
|
||||
|
@ -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,
|
||||
};
|
||||
|
||||
|
1450
cplusplus/include/instructions/UniqueId_enum_class.table.h
generated
1450
cplusplus/include/instructions/UniqueId_enum_class.table.h
generated
File diff suppressed because it is too large
Load Diff
@ -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)
|
||||
|
8
include/common/Abi_enum.table.h
generated
8
include/common/Abi_enum.table.h
generated
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
14
include/instructions/AccessType_enum.table.h
generated
14
include/instructions/AccessType_enum.table.h
generated
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
8
include/instructions/InstrCategory_enum.table.h
generated
8
include/instructions/InstrCategory_enum.table.h
generated
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
1450
include/instructions/InstrId_enum.table.h
generated
1450
include/instructions/InstrId_enum.table.h
generated
File diff suppressed because it is too large
Load Diff
134
include/instructions/OperandType_enum.table.h
generated
134
include/instructions/OperandType_enum.table.h
generated
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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}
|
||||
)
|
||||
|
@ -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}
|
||||
)
|
||||
|
@ -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}
|
||||
)
|
||||
|
@ -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}
|
||||
)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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
@ -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
@ -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}
|
||||
)
|
||||
|
@ -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}
|
||||
)
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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}
|
||||
)
|
||||
|
@ -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}
|
||||
)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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}
|
||||
)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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"
|
||||
|
@ -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
8
rust/src/abi_enum.rs
generated
@ -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,
|
||||
}
|
||||
|
@ -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
|
||||
|
14
rust/src/access_type_enum.rs
generated
14
rust/src/access_type_enum.rs
generated
@ -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,
|
||||
}
|
||||
|
8
rust/src/instr_category_enum.rs
generated
8
rust/src/instr_category_enum.rs
generated
@ -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,
|
||||
}
|
||||
|
@ -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
1450
rust/src/instr_id_enum.rs
generated
File diff suppressed because it is too large
Load Diff
134
rust/src/operand_type_enum.rs
generated
134
rust/src/operand_type_enum.rs
generated
@ -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,
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
1450
src/instructions/InstrDescriptor_Descriptors_array.table.h
generated
1450
src/instructions/InstrDescriptor_Descriptors_array.table.h
generated
File diff suppressed because it is too large
Load Diff
1450
src/instructions/InstrId_Names_array.table.h
generated
1450
src/instructions/InstrId_Names_array.table.h
generated
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user