diff --git a/asdf.txt b/asdf.txt index 6cf7f034..b6f93e90 100644 --- a/asdf.txt +++ b/asdf.txt @@ -4060,131 +4060,19 @@ tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD00F908 InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0' gnuMode 'true' -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0101001'. Expected 'vrcp.s S010, S400', got '.word 0xD0101001 # INVALID $zero, $s0, 0x1001 # 00000000 ' +tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0161001'. Expected 'vsqrt.s S010, S400', got '.word 0xD0161001 # vsqrt.s S010 # 00001000 ' InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' gnuMode 'true' -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0101081'. Expected 'vrcp.p C010, C400', got '.word 0xD0101081 # INVALID $zero, $s0, 0x1081 # 00000000 ' +tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0161081'. Expected 'vsqrt.p C010, C400', got '.word 0xD0161081 # vsqrt.p C010 # 00001000 ' InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' gnuMode 'true' -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0109001'. Expected 'vrcp.t C010, C400', got '.word 0xD0109001 # INVALID $zero, $s0, -0x6FFF # 00000000 ' +tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0169001'. Expected 'vsqrt.t C010, C400', got '.word 0xD0169001 # vsqrt.t C010 # 00001000 ' InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' gnuMode 'true' -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0109081'. Expected 'vrcp.q C010, C400', got '.word 0xD0109081 # INVALID $zero, $s0, -0x6F7F # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0111001'. Expected 'vrsq.s S010, S400', got '.word 0xD0111001 # INVALID $zero, $s1, 0x1001 # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0111081'. Expected 'vrsq.p C010, C400', got '.word 0xD0111081 # INVALID $zero, $s1, 0x1081 # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0119001'. Expected 'vrsq.t C010, C400', got '.word 0xD0119001 # INVALID $zero, $s1, -0x6FFF # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0119081'. Expected 'vrsq.q C010, C400', got '.word 0xD0119081 # INVALID $zero, $s1, -0x6F7F # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0121001'. Expected 'vsin.s S010, S400', got '.word 0xD0121001 # INVALID $zero, $s2, 0x1001 # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0121081'. Expected 'vsin.p C010, C400', got '.word 0xD0121081 # INVALID $zero, $s2, 0x1081 # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0129001'. Expected 'vsin.t C010, C400', got '.word 0xD0129001 # INVALID $zero, $s2, -0x6FFF # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0129081'. Expected 'vsin.q C010, C400', got '.word 0xD0129081 # INVALID $zero, $s2, -0x6F7F # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0131001'. Expected 'vcos.s S010, S400', got '.word 0xD0131001 # INVALID $zero, $s3, 0x1001 # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0131081'. Expected 'vcos.p C010, C400', got '.word 0xD0131081 # INVALID $zero, $s3, 0x1081 # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0139001'. Expected 'vcos.t C010, C400', got '.word 0xD0139001 # INVALID $zero, $s3, -0x6FFF # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0139081'. Expected 'vcos.q C010, C400', got '.word 0xD0139081 # INVALID $zero, $s3, -0x6F7F # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0141001'. Expected 'vexp2.s S010, S400', got '.word 0xD0141001 # INVALID $zero, $s4, 0x1001 # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0141081'. Expected 'vexp2.p C010, C400', got '.word 0xD0141081 # INVALID $zero, $s4, 0x1081 # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0149001'. Expected 'vexp2.t C010, C400', got '.word 0xD0149001 # INVALID $zero, $s4, -0x6FFF # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0149081'. Expected 'vexp2.q C010, C400', got '.word 0xD0149081 # INVALID $zero, $s4, -0x6F7F # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0151001'. Expected 'vlog2.s S010, S400', got '.word 0xD0151001 # INVALID $zero, $s5, 0x1001 # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0151081'. Expected 'vlog2.p C010, C400', got '.word 0xD0151081 # INVALID $zero, $s5, 0x1081 # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0159001'. Expected 'vlog2.t C010, C400', got '.word 0xD0159001 # INVALID $zero, $s5, -0x6FFF # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0159081'. Expected 'vlog2.q C010, C400', got '.word 0xD0159081 # INVALID $zero, $s5, -0x6F7F # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0161001'. Expected 'vsqrt.s S010, S400', got '.word 0xD0161001 # INVALID $zero, $s6, 0x1001 # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0161081'. Expected 'vsqrt.p C010, C400', got '.word 0xD0161081 # INVALID $zero, $s6, 0x1081 # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0169001'. Expected 'vsqrt.t C010, C400', got '.word 0xD0169001 # INVALID $zero, $s6, -0x6FFF # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0169081'. Expected 'vsqrt.q C010, C400', got '.word 0xD0169081 # INVALID $zero, $s6, -0x6F7F # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0171001'. Expected 'vasin.s S010, S400', got '.word 0xD0171001 # INVALID $zero, $s7, 0x1001 # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0171081'. Expected 'vasin.p C010, C400', got '.word 0xD0171081 # INVALID $zero, $s7, 0x1081 # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0179001'. Expected 'vasin.t C010, C400', got '.word 0xD0179001 # INVALID $zero, $s7, -0x6FFF # 00000000 ' - InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' - gnuMode 'true' - -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0179081'. Expected 'vasin.q C010, C400', got '.word 0xD0179081 # INVALID $zero, $s7, -0x6F7F # 00000000 ' +tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xD0169081'. Expected 'vsqrt.q C010, C400', got '.word 0xD0169081 # vsqrt.q C010 # 00001000 ' InstrIdType: 'R4000ALLEGREX_VFPU4_FMT0_FMT0_FMT2' gnuMode 'true' @@ -13516,5 +13404,5 @@ tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: Error on word '0xFFFF032 InstrIdType: 'R4000ALLEGREX_VFPU7' gnuMode 'true' -tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: 3378 errors out of 4773 entries. 29.23% correct. +tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c: 3350 errors out of 4773 entries. 29.81% correct. diff --git a/cplusplus/include/generated/UniqueId_enum_class.hpp b/cplusplus/include/generated/UniqueId_enum_class.hpp index 0abeefba..b43aee77 100644 --- a/cplusplus/include/generated/UniqueId_enum_class.hpp +++ b/cplusplus/include/generated/UniqueId_enum_class.hpp @@ -574,6 +574,38 @@ enum class UniqueId { r4000allegrex_vone_p, r4000allegrex_vone_t, r4000allegrex_vone_q, + r4000allegrex_vrcp_s, + r4000allegrex_vrcp_p, + r4000allegrex_vrcp_t, + r4000allegrex_vrcp_q, + r4000allegrex_vrsq_s, + r4000allegrex_vrsq_p, + r4000allegrex_vrsq_t, + r4000allegrex_vrsq_q, + r4000allegrex_vsin_s, + r4000allegrex_vsin_p, + r4000allegrex_vsin_t, + r4000allegrex_vsin_q, + r4000allegrex_vcos_s, + r4000allegrex_vcos_p, + r4000allegrex_vcos_t, + r4000allegrex_vcos_q, + r4000allegrex_vexp2_s, + r4000allegrex_vexp2_p, + r4000allegrex_vexp2_t, + r4000allegrex_vexp2_q, + r4000allegrex_vlog2_s, + r4000allegrex_vlog2_p, + r4000allegrex_vlog2_t, + r4000allegrex_vlog2_q, + r4000allegrex_vsqrt_s, + r4000allegrex_vsqrt_p, + r4000allegrex_vsqrt_t, + r4000allegrex_vsqrt_q, + r4000allegrex_vasin_s, + r4000allegrex_vasin_p, + r4000allegrex_vasin_t, + r4000allegrex_vasin_q, r4000allegrex_svl_q, r4000allegrex_svr_q, r4000allegrex_USERDEF_00, diff --git a/include/generated/InstrDescriptor_Descriptors_array.h b/include/generated/InstrDescriptor_Descriptors_array.h index c0921267..666affbb 100644 --- a/include/generated/InstrDescriptor_Descriptors_array.h +++ b/include/generated/InstrDescriptor_Descriptors_array.h @@ -574,6 +574,38 @@ const RabbitizerInstrDescriptor RabbitizerInstrDescriptor_Descriptors[] = { [RABBITIZER_INSTR_ID_r4000allegrex_vone_p] = { .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, [RABBITIZER_INSTR_ID_r4000allegrex_vone_t] = { .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, [RABBITIZER_INSTR_ID_r4000allegrex_vone_q] = { .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vrcp_s] = { .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vrcp_p] = { .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vrcp_t] = { .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vrcp_q] = { .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vrsq_s] = { .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vrsq_p] = { .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vrsq_t] = { .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vrsq_q] = { .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vsin_s] = { .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vsin_p] = { .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vsin_t] = { .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vsin_q] = { .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vcos_s] = { .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vcos_p] = { .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vcos_t] = { .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vcos_q] = { .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vexp2_s] = { .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vexp2_p] = { .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vexp2_t] = { .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vexp2_q] = { .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vlog2_s] = { .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vlog2_p] = { .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vlog2_t] = { .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vlog2_q] = { .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vsqrt_s] = { .operands={RAB_OPERAND_r4000allegrex_s_vd}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vsqrt_p] = { .operands={RAB_OPERAND_r4000allegrex_p_vd}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vsqrt_t] = { .operands={RAB_OPERAND_r4000allegrex_t_vd}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vsqrt_q] = { .operands={RAB_OPERAND_r4000allegrex_q_vd}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vasin_s] = { .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vasin_p] = { .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vasin_t] = { .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vasin_q] = { .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, [RABBITIZER_INSTR_ID_r4000allegrex_svl_q] = { .operands={RAB_OPERAND_r4000allegrex_q_vt_imm, RAB_OPERAND_r4000allegrex_offset14_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true }, [RABBITIZER_INSTR_ID_r4000allegrex_svr_q] = { .operands={RAB_OPERAND_r4000allegrex_q_vt_imm, RAB_OPERAND_r4000allegrex_offset14_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .readsRs=true }, [RABBITIZER_INSTR_ID_r4000allegrex_USERDEF_00] = { .operands={0} }, diff --git a/include/generated/InstrId_Names_array.h b/include/generated/InstrId_Names_array.h index 3dc40ab6..a4026c75 100644 --- a/include/generated/InstrId_Names_array.h +++ b/include/generated/InstrId_Names_array.h @@ -574,6 +574,38 @@ const char *RabbitizerInstrId_Names[] = { [RABBITIZER_INSTR_ID_r4000allegrex_vone_p] = "vone.p", [RABBITIZER_INSTR_ID_r4000allegrex_vone_t] = "vone.t", [RABBITIZER_INSTR_ID_r4000allegrex_vone_q] = "vone.q", + [RABBITIZER_INSTR_ID_r4000allegrex_vrcp_s] = "vrcp.s", + [RABBITIZER_INSTR_ID_r4000allegrex_vrcp_p] = "vrcp.p", + [RABBITIZER_INSTR_ID_r4000allegrex_vrcp_t] = "vrcp.t", + [RABBITIZER_INSTR_ID_r4000allegrex_vrcp_q] = "vrcp.q", + [RABBITIZER_INSTR_ID_r4000allegrex_vrsq_s] = "vrsq.s", + [RABBITIZER_INSTR_ID_r4000allegrex_vrsq_p] = "vrsq.p", + [RABBITIZER_INSTR_ID_r4000allegrex_vrsq_t] = "vrsq.t", + [RABBITIZER_INSTR_ID_r4000allegrex_vrsq_q] = "vrsq.q", + [RABBITIZER_INSTR_ID_r4000allegrex_vsin_s] = "vsin.s", + [RABBITIZER_INSTR_ID_r4000allegrex_vsin_p] = "vsin.p", + [RABBITIZER_INSTR_ID_r4000allegrex_vsin_t] = "vsin.t", + [RABBITIZER_INSTR_ID_r4000allegrex_vsin_q] = "vsin.q", + [RABBITIZER_INSTR_ID_r4000allegrex_vcos_s] = "vcos.s", + [RABBITIZER_INSTR_ID_r4000allegrex_vcos_p] = "vcos.p", + [RABBITIZER_INSTR_ID_r4000allegrex_vcos_t] = "vcos.t", + [RABBITIZER_INSTR_ID_r4000allegrex_vcos_q] = "vcos.q", + [RABBITIZER_INSTR_ID_r4000allegrex_vexp2_s] = "vexp2.s", + [RABBITIZER_INSTR_ID_r4000allegrex_vexp2_p] = "vexp2.p", + [RABBITIZER_INSTR_ID_r4000allegrex_vexp2_t] = "vexp2.t", + [RABBITIZER_INSTR_ID_r4000allegrex_vexp2_q] = "vexp2.q", + [RABBITIZER_INSTR_ID_r4000allegrex_vlog2_s] = "vlog2.s", + [RABBITIZER_INSTR_ID_r4000allegrex_vlog2_p] = "vlog2.p", + [RABBITIZER_INSTR_ID_r4000allegrex_vlog2_t] = "vlog2.t", + [RABBITIZER_INSTR_ID_r4000allegrex_vlog2_q] = "vlog2.q", + [RABBITIZER_INSTR_ID_r4000allegrex_vsqrt_s] = "vsqrt.s", + [RABBITIZER_INSTR_ID_r4000allegrex_vsqrt_p] = "vsqrt.p", + [RABBITIZER_INSTR_ID_r4000allegrex_vsqrt_t] = "vsqrt.t", + [RABBITIZER_INSTR_ID_r4000allegrex_vsqrt_q] = "vsqrt.q", + [RABBITIZER_INSTR_ID_r4000allegrex_vasin_s] = "vasin.s", + [RABBITIZER_INSTR_ID_r4000allegrex_vasin_p] = "vasin.p", + [RABBITIZER_INSTR_ID_r4000allegrex_vasin_t] = "vasin.t", + [RABBITIZER_INSTR_ID_r4000allegrex_vasin_q] = "vasin.q", [RABBITIZER_INSTR_ID_r4000allegrex_svl_q] = "svl.q", [RABBITIZER_INSTR_ID_r4000allegrex_svr_q] = "svr.q", [RABBITIZER_INSTR_ID_r4000allegrex_USERDEF_00] = "USERDEF_00", diff --git a/include/generated/InstrId_enum.h b/include/generated/InstrId_enum.h index 1168e044..071125e9 100644 --- a/include/generated/InstrId_enum.h +++ b/include/generated/InstrId_enum.h @@ -574,6 +574,38 @@ typedef enum RabbitizerInstrId { RABBITIZER_INSTR_ID_r4000allegrex_vone_p, RABBITIZER_INSTR_ID_r4000allegrex_vone_t, RABBITIZER_INSTR_ID_r4000allegrex_vone_q, + RABBITIZER_INSTR_ID_r4000allegrex_vrcp_s, + RABBITIZER_INSTR_ID_r4000allegrex_vrcp_p, + RABBITIZER_INSTR_ID_r4000allegrex_vrcp_t, + RABBITIZER_INSTR_ID_r4000allegrex_vrcp_q, + RABBITIZER_INSTR_ID_r4000allegrex_vrsq_s, + RABBITIZER_INSTR_ID_r4000allegrex_vrsq_p, + RABBITIZER_INSTR_ID_r4000allegrex_vrsq_t, + RABBITIZER_INSTR_ID_r4000allegrex_vrsq_q, + RABBITIZER_INSTR_ID_r4000allegrex_vsin_s, + RABBITIZER_INSTR_ID_r4000allegrex_vsin_p, + RABBITIZER_INSTR_ID_r4000allegrex_vsin_t, + RABBITIZER_INSTR_ID_r4000allegrex_vsin_q, + RABBITIZER_INSTR_ID_r4000allegrex_vcos_s, + RABBITIZER_INSTR_ID_r4000allegrex_vcos_p, + RABBITIZER_INSTR_ID_r4000allegrex_vcos_t, + RABBITIZER_INSTR_ID_r4000allegrex_vcos_q, + RABBITIZER_INSTR_ID_r4000allegrex_vexp2_s, + RABBITIZER_INSTR_ID_r4000allegrex_vexp2_p, + RABBITIZER_INSTR_ID_r4000allegrex_vexp2_t, + RABBITIZER_INSTR_ID_r4000allegrex_vexp2_q, + RABBITIZER_INSTR_ID_r4000allegrex_vlog2_s, + RABBITIZER_INSTR_ID_r4000allegrex_vlog2_p, + RABBITIZER_INSTR_ID_r4000allegrex_vlog2_t, + RABBITIZER_INSTR_ID_r4000allegrex_vlog2_q, + RABBITIZER_INSTR_ID_r4000allegrex_vsqrt_s, + RABBITIZER_INSTR_ID_r4000allegrex_vsqrt_p, + RABBITIZER_INSTR_ID_r4000allegrex_vsqrt_t, + RABBITIZER_INSTR_ID_r4000allegrex_vsqrt_q, + RABBITIZER_INSTR_ID_r4000allegrex_vasin_s, + RABBITIZER_INSTR_ID_r4000allegrex_vasin_p, + RABBITIZER_INSTR_ID_r4000allegrex_vasin_t, + RABBITIZER_INSTR_ID_r4000allegrex_vasin_q, RABBITIZER_INSTR_ID_r4000allegrex_svl_q, RABBITIZER_INSTR_ID_r4000allegrex_svr_q, RABBITIZER_INSTR_ID_r4000allegrex_USERDEF_00, diff --git a/rabbitizer/InstrId.pyi b/rabbitizer/InstrId.pyi index 5e18dec0..4b379f1d 100644 --- a/rabbitizer/InstrId.pyi +++ b/rabbitizer/InstrId.pyi @@ -515,6 +515,38 @@ class InstrId: r4000allegrex_vone_p: Enum r4000allegrex_vone_t: Enum r4000allegrex_vone_q: Enum + r4000allegrex_vrcp_s: Enum + r4000allegrex_vrcp_p: Enum + r4000allegrex_vrcp_t: Enum + r4000allegrex_vrcp_q: Enum + r4000allegrex_vrsq_s: Enum + r4000allegrex_vrsq_p: Enum + r4000allegrex_vrsq_t: Enum + r4000allegrex_vrsq_q: Enum + r4000allegrex_vsin_s: Enum + r4000allegrex_vsin_p: Enum + r4000allegrex_vsin_t: Enum + r4000allegrex_vsin_q: Enum + r4000allegrex_vcos_s: Enum + r4000allegrex_vcos_p: Enum + r4000allegrex_vcos_t: Enum + r4000allegrex_vcos_q: Enum + r4000allegrex_vexp2_s: Enum + r4000allegrex_vexp2_p: Enum + r4000allegrex_vexp2_t: Enum + r4000allegrex_vexp2_q: Enum + r4000allegrex_vlog2_s: Enum + r4000allegrex_vlog2_p: Enum + r4000allegrex_vlog2_t: Enum + r4000allegrex_vlog2_q: Enum + r4000allegrex_vsqrt_s: Enum + r4000allegrex_vsqrt_p: Enum + r4000allegrex_vsqrt_t: Enum + r4000allegrex_vsqrt_q: Enum + r4000allegrex_vasin_s: Enum + r4000allegrex_vasin_p: Enum + r4000allegrex_vasin_t: Enum + r4000allegrex_vasin_q: Enum r4000allegrex_svl_q: Enum r4000allegrex_svr_q: Enum r4000allegrex_MAX: Enum diff --git a/rust/src/instr_id_enum.rs b/rust/src/instr_id_enum.rs index 708f674a..07e35181 100644 --- a/rust/src/instr_id_enum.rs +++ b/rust/src/instr_id_enum.rs @@ -574,6 +574,38 @@ pub enum InstrId { r4000allegrex_vone_p, r4000allegrex_vone_t, r4000allegrex_vone_q, + r4000allegrex_vrcp_s, + r4000allegrex_vrcp_p, + r4000allegrex_vrcp_t, + r4000allegrex_vrcp_q, + r4000allegrex_vrsq_s, + r4000allegrex_vrsq_p, + r4000allegrex_vrsq_t, + r4000allegrex_vrsq_q, + r4000allegrex_vsin_s, + r4000allegrex_vsin_p, + r4000allegrex_vsin_t, + r4000allegrex_vsin_q, + r4000allegrex_vcos_s, + r4000allegrex_vcos_p, + r4000allegrex_vcos_t, + r4000allegrex_vcos_q, + r4000allegrex_vexp2_s, + r4000allegrex_vexp2_p, + r4000allegrex_vexp2_t, + r4000allegrex_vexp2_q, + r4000allegrex_vlog2_s, + r4000allegrex_vlog2_p, + r4000allegrex_vlog2_t, + r4000allegrex_vlog2_q, + r4000allegrex_vsqrt_s, + r4000allegrex_vsqrt_p, + r4000allegrex_vsqrt_t, + r4000allegrex_vsqrt_q, + r4000allegrex_vasin_s, + r4000allegrex_vasin_p, + r4000allegrex_vasin_t, + r4000allegrex_vasin_q, r4000allegrex_svl_q, r4000allegrex_svr_q, r4000allegrex_USERDEF_00, diff --git a/tables/tables/instr_id/r4000allegrex/r4000allegrex_vfpu4_fmt0_fmt0_fmt2.inc b/tables/tables/instr_id/r4000allegrex/r4000allegrex_vfpu4_fmt0_fmt0_fmt2.inc index 9c18a777..ad75fbcf 100644 --- a/tables/tables/instr_id/r4000allegrex/r4000allegrex_vfpu4_fmt0_fmt0_fmt2.inc +++ b/tables/tables/instr_id/r4000allegrex/r4000allegrex_vfpu4_fmt0_fmt0_fmt2.inc @@ -6,10 +6,10 @@ | = COP2 |0 0|0 0 0|1 0| fmt |t| |p| | ------6-------2----3----2----3---1---------------1--------------- |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| fmt - 00 | --- | --- | --- | --- | --- | --- | --- | --- | - 01 | --- | --- | --- | --- | --- | --- | --- | --- | - 10 | --- | --- | --- | --- | --- | --- | --- | --- | - 11 | --- | --- | --- | --- | --- | --- | --- | --- | + 00 | vrcp.s| vrsq.s| vsin.s| vcos.s|vexp2.s|vlog2.s|vsqrt.s|vasin.s| + 01 | vrcp.p| vrsq.p| vsin.p| vcos.p|vexp2.p|vlog2.p|vsqrt.p|vasin.p| + 10 | vrcp.t| vrsq.t| vsin.t| vcos.t|vexp2.t|vlog2.t|vsqrt.t|vasin.t| + 11 | vrcp.q| vrsq.q| vsin.q| vcos.q|vexp2.q|vlog2.q|vsqrt.q|vasin.q| tp |-------|-------|-------|-------|-------|-------|-------|-------| */ @@ -20,6 +20,12 @@ vrcp.s ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x00 << 2 | 0x0, vrcp_s, vrcp.s, + .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // ReCiProcal Single word + /* vrcp.p 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -27,6 +33,12 @@ vrcp.p ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x00 << 2 | 0x1, vrcp_p, vrcp.p, + .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // ReCiProcal Pair word + /* vrcp.t 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -34,6 +46,12 @@ vrcp.t ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x00 << 2 | 0x2, vrcp_t, vrcp.t, + .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // ReCiProcal Triple word + /* vrcp.q 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -41,6 +59,12 @@ vrcp.q ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x00 << 2 | 0x3, vrcp_q, vrcp.q, + .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // ReCiProcal Quad word + /* vrsq.s 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -48,6 +72,12 @@ vrsq.s ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x01 << 2 | 0x0, vrsq_s, vrsq.s, + .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // Reciprocal Square Root value Single word + /* vrsq.p 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -55,6 +85,12 @@ vrsq.p ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x01 << 2 | 0x1, vrsq_p, vrsq.p, + .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // Reciprocal Square Root value Pair word + /* vrsq.t 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -62,6 +98,12 @@ vrsq.t ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x01 << 2 | 0x2, vrsq_t, vrsq.t, + .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // Reciprocal Square Root value Triple word + /* vrsq.q 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -69,6 +111,13 @@ vrsq.q ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x01 << 2 | 0x3, vrsq_q, vrsq.q, + .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // Reciprocal Square Root value Quad word + + /* vsin.s 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -76,6 +125,13 @@ vsin.s ------6-------2----3----2----3---1-------7-------1-------7------- */ + + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x02 << 2 | 0x0, vsin_s, vsin.s, + .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // SINe Single word + /* vsin.p 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -83,6 +139,12 @@ vsin.p ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x02 << 2 | 0x1, vsin_p, vsin.p, + .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // SINe Pair word + /* vsin.t 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -90,6 +152,12 @@ vsin.t ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x02 << 2 | 0x2, vsin_t, vsin.t, + .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // SINe Triple word + /* vsin.q 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -97,6 +165,12 @@ vsin.q ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x02 << 2 | 0x3, vsin_q, vsin.q, + .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // SINe Quad word + /* vcos.s 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -104,6 +178,12 @@ vcos.s ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x03 << 2 | 0x0, vcos_s, vcos.s, + .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // COSine Pair word + /* vcos.p 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -111,6 +191,12 @@ vcos.p ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x03 << 2 | 0x1, vcos_p, vcos.p, + .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // COSine Pair word + /* vcos.t 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -118,6 +204,12 @@ vcos.t ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x03 << 2 | 0x2, vcos_t, vcos.t, + .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // COSine Quad word + /* vcos.q 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -125,6 +217,12 @@ vcos.q ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x03 << 2 | 0x3, vcos_q, vcos.q, + .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // COSine Quad word + /* vexp2.s 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -132,6 +230,12 @@ vexp2.s ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x04 << 2 | 0x0, vexp2_s, vexp2.s, + .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // EXPonential base 2 Single word + /* vexp2.p 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -139,6 +243,12 @@ vexp2.p ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x04 << 2 | 0x1, vexp2_p, vexp2.p, + .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // EXPonential base 2 Pair word + /* vexp2.t 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -146,6 +256,12 @@ vexp2.t ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x04 << 2 | 0x2, vexp2_t, vexp2.t, + .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // EXPonential base 2 Triple word + /* vexp2.q 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -153,6 +269,12 @@ vexp2.q ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x04 << 2 | 0x3, vexp2_q, vexp2.q, + .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // EXPonential base 2 Quad word + /* vlog2.s 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -160,6 +282,12 @@ vlog2.s ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x05 << 2 | 0x0, vlog2_s, vlog2.s, + .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // LOGarithm base 2 Single word + /* vlog2.p 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -167,6 +295,12 @@ vlog2.p ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x05 << 2 | 0x1, vlog2_p, vlog2.p, + .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // LOGarithm base 2 Pair word + /* vlog2.t 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -174,6 +308,12 @@ vlog2.t ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x05 << 2 | 0x2, vlog2_t, vlog2.t, + .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // LOGarithm base 2 Triple word + /* vlog2.q 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -181,6 +321,12 @@ vlog2.q ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x05 << 2 | 0x3, vlog2_q, vlog2.q, + .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // LOGarithm base 2 Quad word + /* vsqrt.s 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -188,6 +334,12 @@ vsqrt.s ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x06 << 2 | 0x0, vsqrt_s, vsqrt.s, + .operands={RAB_OPERAND_r4000allegrex_s_vd}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // SQuare RooT Single word + /* vsqrt.p 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -195,6 +347,12 @@ vsqrt.p ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x06 << 2 | 0x1, vsqrt_p, vsqrt.p, + .operands={RAB_OPERAND_r4000allegrex_p_vd}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // SQuare RooT Pair word + /* vsqrt.t 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -202,6 +360,12 @@ vsqrt.t ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x06 << 2 | 0x2, vsqrt_t, vsqrt.t, + .operands={RAB_OPERAND_r4000allegrex_t_vd}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // SQuare RooT Triple word + /* vsqrt.q 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -209,6 +373,12 @@ vsqrt.q ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x06 << 2 | 0x3, vsqrt_q, vsqrt.q, + .operands={RAB_OPERAND_r4000allegrex_q_vd}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // SQuare RooT Quad word + /* vasin.s 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -216,6 +386,12 @@ vasin.s ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x07 << 2 | 0x0, vasin_s, vasin.s, + .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // Arc SINe Single word + /* vasin.p 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -223,6 +399,12 @@ vasin.p ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x07 << 2 | 0x1, vasin_p, vasin.p, + .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // Arc SINe Pair word + /* vasin.t 31--------26-25-24--21--19----16---14----------8---6------------0 @@ -230,9 +412,21 @@ vasin.t ------6-------2----3----2----3---1-------7-------1-------7------- */ + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x07 << 2 | 0x2, vasin_t, vasin.t, + .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // Arc SINe Triple word + /* vasin.q 31--------26-25-24--21--19----16---14----------8---6------------0 | VFPU4 |0 0|0 0 0|1 0|1 1 1|1| vs |1| vd | ------6-------2----3----2----3---1-------7-------1-------7------- */ + + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x07 << 2 | 0x3, vasin_q, vasin.q, + .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // Arc SINe Quad word