From 38c20686f9cb6be995cad481e8437aaf8e3c5637 Mon Sep 17 00:00:00 2001 From: Angie Date: Wed, 17 Apr 2024 22:41:16 -0400 Subject: [PATCH] vcmovt, vcmovf --- asdf.txt | 128 +++++++++--------- .../include/generated/UniqueId_enum_class.hpp | 8 ++ .../InstrDescriptor_Descriptors_array.h | 8 ++ include/generated/InstrId_Names_array.h | 8 ++ include/generated/InstrId_enum.h | 8 ++ rabbitizer/InstrId.pyi | 8 ++ rust/src/instr_id_enum.rs | 8 ++ .../r4000allegrex_vfpu4_fmt2_fmt5.inc | 64 ++++++++- 8 files changed, 172 insertions(+), 68 deletions(-) diff --git a/asdf.txt b/asdf.txt index 2ed6734c..0d4a6f8f 100644 --- a/asdf.txt +++ b/asdf.txt @@ -12654,322 +12654,322 @@ Error on word '0xD29F9081'. Expected 'vi2f.q C010, C400, 31', got '.word InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT4' gnuMode 'true' -Error on word '0xD2A01001'. Expected 'vcmovt.s S010, S400, cc0', got '.word 0xD2A01001 # INVALID $s5, $zero, 0x1001 # 00000000 ' +Error on word '0xD2A01001'. Expected 'vcmovt.s S010, S400, cc0', got 'vcmovt.s S010, S400' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A01081'. Expected 'vcmovt.p C010, C400, cc0', got '.word 0xD2A01081 # INVALID $s5, $zero, 0x1081 # 00000000 ' +Error on word '0xD2A01081'. Expected 'vcmovt.p C010, C400, cc0', got 'vcmovt.p C010, C400' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A09001'. Expected 'vcmovt.t C010, C400, cc0', got '.word 0xD2A09001 # INVALID $s5, $zero, -0x6FFF # 00000000 ' +Error on word '0xD2A09001'. Expected 'vcmovt.t C010, C400, cc0', got 'vcmovt.t C010, C400' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A09081'. Expected 'vcmovt.q C010, C400, cc0', got '.word 0xD2A09081 # INVALID $s5, $zero, -0x6F7F # 00000000 ' +Error on word '0xD2A09081'. Expected 'vcmovt.q C010, C400, cc0', got 'vcmovt.q C010, C400' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A11001'. Expected 'vcmovt.s S010, S400, cc1', got '.word 0xD2A11001 # INVALID $s5, $at, 0x1001 # 00000000 ' +Error on word '0xD2A11001'. Expected 'vcmovt.s S010, S400, cc1', got '.word 0xD2A11001 # vcmovt.s S010, S400 # 00010000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A11081'. Expected 'vcmovt.p C010, C400, cc1', got '.word 0xD2A11081 # INVALID $s5, $at, 0x1081 # 00000000 ' +Error on word '0xD2A11081'. Expected 'vcmovt.p C010, C400, cc1', got '.word 0xD2A11081 # vcmovt.p C010, C400 # 00010000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A19001'. Expected 'vcmovt.t C010, C400, cc1', got '.word 0xD2A19001 # INVALID $s5, $at, -0x6FFF # 00000000 ' +Error on word '0xD2A19001'. Expected 'vcmovt.t C010, C400, cc1', got '.word 0xD2A19001 # vcmovt.t C010, C400 # 00010000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A19081'. Expected 'vcmovt.q C010, C400, cc1', got '.word 0xD2A19081 # INVALID $s5, $at, -0x6F7F # 00000000 ' +Error on word '0xD2A19081'. Expected 'vcmovt.q C010, C400, cc1', got '.word 0xD2A19081 # vcmovt.q C010, C400 # 00010000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A21001'. Expected 'vcmovt.s S010, S400, cc2', got '.word 0xD2A21001 # INVALID $s5, $v0, 0x1001 # 00000000 ' +Error on word '0xD2A21001'. Expected 'vcmovt.s S010, S400, cc2', got '.word 0xD2A21001 # vcmovt.s S010, S400 # 00020000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A21081'. Expected 'vcmovt.p C010, C400, cc2', got '.word 0xD2A21081 # INVALID $s5, $v0, 0x1081 # 00000000 ' +Error on word '0xD2A21081'. Expected 'vcmovt.p C010, C400, cc2', got '.word 0xD2A21081 # vcmovt.p C010, C400 # 00020000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A29001'. Expected 'vcmovt.t C010, C400, cc2', got '.word 0xD2A29001 # INVALID $s5, $v0, -0x6FFF # 00000000 ' +Error on word '0xD2A29001'. Expected 'vcmovt.t C010, C400, cc2', got '.word 0xD2A29001 # vcmovt.t C010, C400 # 00020000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A29081'. Expected 'vcmovt.q C010, C400, cc2', got '.word 0xD2A29081 # INVALID $s5, $v0, -0x6F7F # 00000000 ' +Error on word '0xD2A29081'. Expected 'vcmovt.q C010, C400, cc2', got '.word 0xD2A29081 # vcmovt.q C010, C400 # 00020000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A31001'. Expected 'vcmovt.s S010, S400, cc3', got '.word 0xD2A31001 # INVALID $s5, $v1, 0x1001 # 00000000 ' +Error on word '0xD2A31001'. Expected 'vcmovt.s S010, S400, cc3', got '.word 0xD2A31001 # vcmovt.s S010, S400 # 00030000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A31081'. Expected 'vcmovt.p C010, C400, cc3', got '.word 0xD2A31081 # INVALID $s5, $v1, 0x1081 # 00000000 ' +Error on word '0xD2A31081'. Expected 'vcmovt.p C010, C400, cc3', got '.word 0xD2A31081 # vcmovt.p C010, C400 # 00030000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A39001'. Expected 'vcmovt.t C010, C400, cc3', got '.word 0xD2A39001 # INVALID $s5, $v1, -0x6FFF # 00000000 ' +Error on word '0xD2A39001'. Expected 'vcmovt.t C010, C400, cc3', got '.word 0xD2A39001 # vcmovt.t C010, C400 # 00030000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A39081'. Expected 'vcmovt.q C010, C400, cc3', got '.word 0xD2A39081 # INVALID $s5, $v1, -0x6F7F # 00000000 ' +Error on word '0xD2A39081'. Expected 'vcmovt.q C010, C400, cc3', got '.word 0xD2A39081 # vcmovt.q C010, C400 # 00030000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A41001'. Expected 'vcmovt.s S010, S400, cc4', got '.word 0xD2A41001 # INVALID $s5, $a0, 0x1001 # 00000000 ' +Error on word '0xD2A41001'. Expected 'vcmovt.s S010, S400, cc4', got '.word 0xD2A41001 # vcmovt.s S010, S400 # 00040000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A41081'. Expected 'vcmovt.p C010, C400, cc4', got '.word 0xD2A41081 # INVALID $s5, $a0, 0x1081 # 00000000 ' +Error on word '0xD2A41081'. Expected 'vcmovt.p C010, C400, cc4', got '.word 0xD2A41081 # vcmovt.p C010, C400 # 00040000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A49001'. Expected 'vcmovt.t C010, C400, cc4', got '.word 0xD2A49001 # INVALID $s5, $a0, -0x6FFF # 00000000 ' +Error on word '0xD2A49001'. Expected 'vcmovt.t C010, C400, cc4', got '.word 0xD2A49001 # vcmovt.t C010, C400 # 00040000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A49081'. Expected 'vcmovt.q C010, C400, cc4', got '.word 0xD2A49081 # INVALID $s5, $a0, -0x6F7F # 00000000 ' +Error on word '0xD2A49081'. Expected 'vcmovt.q C010, C400, cc4', got '.word 0xD2A49081 # vcmovt.q C010, C400 # 00040000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A51001'. Expected 'vcmovt.s S010, S400, cc5', got '.word 0xD2A51001 # INVALID $s5, $a1, 0x1001 # 00000000 ' +Error on word '0xD2A51001'. Expected 'vcmovt.s S010, S400, cc5', got '.word 0xD2A51001 # vcmovt.s S010, S400 # 00050000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A51081'. Expected 'vcmovt.p C010, C400, cc5', got '.word 0xD2A51081 # INVALID $s5, $a1, 0x1081 # 00000000 ' +Error on word '0xD2A51081'. Expected 'vcmovt.p C010, C400, cc5', got '.word 0xD2A51081 # vcmovt.p C010, C400 # 00050000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A59001'. Expected 'vcmovt.t C010, C400, cc5', got '.word 0xD2A59001 # INVALID $s5, $a1, -0x6FFF # 00000000 ' +Error on word '0xD2A59001'. Expected 'vcmovt.t C010, C400, cc5', got '.word 0xD2A59001 # vcmovt.t C010, C400 # 00050000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A59081'. Expected 'vcmovt.q C010, C400, cc5', got '.word 0xD2A59081 # INVALID $s5, $a1, -0x6F7F # 00000000 ' +Error on word '0xD2A59081'. Expected 'vcmovt.q C010, C400, cc5', got '.word 0xD2A59081 # vcmovt.q C010, C400 # 00050000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A61001'. Expected 'vcmovt.s S010, S400, cc6', got '.word 0xD2A61001 # INVALID $s5, $a2, 0x1001 # 00000000 ' +Error on word '0xD2A61001'. Expected 'vcmovt.s S010, S400, cc6', got '.word 0xD2A61001 # vcmovt.s S010, S400 # 00060000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A61081'. Expected 'vcmovt.p C010, C400, cc6', got '.word 0xD2A61081 # INVALID $s5, $a2, 0x1081 # 00000000 ' +Error on word '0xD2A61081'. Expected 'vcmovt.p C010, C400, cc6', got '.word 0xD2A61081 # vcmovt.p C010, C400 # 00060000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A69001'. Expected 'vcmovt.t C010, C400, cc6', got '.word 0xD2A69001 # INVALID $s5, $a2, -0x6FFF # 00000000 ' +Error on word '0xD2A69001'. Expected 'vcmovt.t C010, C400, cc6', got '.word 0xD2A69001 # vcmovt.t C010, C400 # 00060000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A69081'. Expected 'vcmovt.q C010, C400, cc6', got '.word 0xD2A69081 # INVALID $s5, $a2, -0x6F7F # 00000000 ' +Error on word '0xD2A69081'. Expected 'vcmovt.q C010, C400, cc6', got '.word 0xD2A69081 # vcmovt.q C010, C400 # 00060000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A71001'. Expected 'vcmovt.s S010, S400, cc7', got '.word 0xD2A71001 # INVALID $s5, $a3, 0x1001 # 00000000 ' +Error on word '0xD2A71001'. Expected 'vcmovt.s S010, S400, cc7', got '.word 0xD2A71001 # vcmovt.s S010, S400 # 00070000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A71081'. Expected 'vcmovt.p C010, C400, cc7', got '.word 0xD2A71081 # INVALID $s5, $a3, 0x1081 # 00000000 ' +Error on word '0xD2A71081'. Expected 'vcmovt.p C010, C400, cc7', got '.word 0xD2A71081 # vcmovt.p C010, C400 # 00070000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A79001'. Expected 'vcmovt.t C010, C400, cc7', got '.word 0xD2A79001 # INVALID $s5, $a3, -0x6FFF # 00000000 ' +Error on word '0xD2A79001'. Expected 'vcmovt.t C010, C400, cc7', got '.word 0xD2A79001 # vcmovt.t C010, C400 # 00070000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A79081'. Expected 'vcmovt.q C010, C400, cc7', got '.word 0xD2A79081 # INVALID $s5, $a3, -0x6F7F # 00000000 ' +Error on word '0xD2A79081'. Expected 'vcmovt.q C010, C400, cc7', got '.word 0xD2A79081 # vcmovt.q C010, C400 # 00070000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A81001'. Expected 'vcmovf.s S010, S400, cc0', got '.word 0xD2A81001 # INVALID $s5, $t0, 0x1001 # 00000000 ' +Error on word '0xD2A81001'. Expected 'vcmovf.s S010, S400, cc0', got 'vcmovf.s S010, S400' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A81081'. Expected 'vcmovf.p C010, C400, cc0', got '.word 0xD2A81081 # INVALID $s5, $t0, 0x1081 # 00000000 ' +Error on word '0xD2A81081'. Expected 'vcmovf.p C010, C400, cc0', got 'vcmovf.p C010, C400' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A89001'. Expected 'vcmovf.t C010, C400, cc0', got '.word 0xD2A89001 # INVALID $s5, $t0, -0x6FFF # 00000000 ' +Error on word '0xD2A89001'. Expected 'vcmovf.t C010, C400, cc0', got 'vcmovf.t C010, C400' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A89081'. Expected 'vcmovf.q C010, C400, cc0', got '.word 0xD2A89081 # INVALID $s5, $t0, -0x6F7F # 00000000 ' +Error on word '0xD2A89081'. Expected 'vcmovf.q C010, C400, cc0', got 'vcmovf.q C010, C400' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A91001'. Expected 'vcmovf.s S010, S400, cc1', got '.word 0xD2A91001 # INVALID $s5, $t1, 0x1001 # 00000000 ' +Error on word '0xD2A91001'. Expected 'vcmovf.s S010, S400, cc1', got '.word 0xD2A91001 # vcmovf.s S010, S400 # 00010000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A91081'. Expected 'vcmovf.p C010, C400, cc1', got '.word 0xD2A91081 # INVALID $s5, $t1, 0x1081 # 00000000 ' +Error on word '0xD2A91081'. Expected 'vcmovf.p C010, C400, cc1', got '.word 0xD2A91081 # vcmovf.p C010, C400 # 00010000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A99001'. Expected 'vcmovf.t C010, C400, cc1', got '.word 0xD2A99001 # INVALID $s5, $t1, -0x6FFF # 00000000 ' +Error on word '0xD2A99001'. Expected 'vcmovf.t C010, C400, cc1', got '.word 0xD2A99001 # vcmovf.t C010, C400 # 00010000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2A99081'. Expected 'vcmovf.q C010, C400, cc1', got '.word 0xD2A99081 # INVALID $s5, $t1, -0x6F7F # 00000000 ' +Error on word '0xD2A99081'. Expected 'vcmovf.q C010, C400, cc1', got '.word 0xD2A99081 # vcmovf.q C010, C400 # 00010000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AA1001'. Expected 'vcmovf.s S010, S400, cc2', got '.word 0xD2AA1001 # INVALID $s5, $t2, 0x1001 # 00000000 ' +Error on word '0xD2AA1001'. Expected 'vcmovf.s S010, S400, cc2', got '.word 0xD2AA1001 # vcmovf.s S010, S400 # 00020000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AA1081'. Expected 'vcmovf.p C010, C400, cc2', got '.word 0xD2AA1081 # INVALID $s5, $t2, 0x1081 # 00000000 ' +Error on word '0xD2AA1081'. Expected 'vcmovf.p C010, C400, cc2', got '.word 0xD2AA1081 # vcmovf.p C010, C400 # 00020000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AA9001'. Expected 'vcmovf.t C010, C400, cc2', got '.word 0xD2AA9001 # INVALID $s5, $t2, -0x6FFF # 00000000 ' +Error on word '0xD2AA9001'. Expected 'vcmovf.t C010, C400, cc2', got '.word 0xD2AA9001 # vcmovf.t C010, C400 # 00020000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AA9081'. Expected 'vcmovf.q C010, C400, cc2', got '.word 0xD2AA9081 # INVALID $s5, $t2, -0x6F7F # 00000000 ' +Error on word '0xD2AA9081'. Expected 'vcmovf.q C010, C400, cc2', got '.word 0xD2AA9081 # vcmovf.q C010, C400 # 00020000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AB1001'. Expected 'vcmovf.s S010, S400, cc3', got '.word 0xD2AB1001 # INVALID $s5, $t3, 0x1001 # 00000000 ' +Error on word '0xD2AB1001'. Expected 'vcmovf.s S010, S400, cc3', got '.word 0xD2AB1001 # vcmovf.s S010, S400 # 00030000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AB1081'. Expected 'vcmovf.p C010, C400, cc3', got '.word 0xD2AB1081 # INVALID $s5, $t3, 0x1081 # 00000000 ' +Error on word '0xD2AB1081'. Expected 'vcmovf.p C010, C400, cc3', got '.word 0xD2AB1081 # vcmovf.p C010, C400 # 00030000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AB9001'. Expected 'vcmovf.t C010, C400, cc3', got '.word 0xD2AB9001 # INVALID $s5, $t3, -0x6FFF # 00000000 ' +Error on word '0xD2AB9001'. Expected 'vcmovf.t C010, C400, cc3', got '.word 0xD2AB9001 # vcmovf.t C010, C400 # 00030000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AB9081'. Expected 'vcmovf.q C010, C400, cc3', got '.word 0xD2AB9081 # INVALID $s5, $t3, -0x6F7F # 00000000 ' +Error on word '0xD2AB9081'. Expected 'vcmovf.q C010, C400, cc3', got '.word 0xD2AB9081 # vcmovf.q C010, C400 # 00030000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AC1001'. Expected 'vcmovf.s S010, S400, cc4', got '.word 0xD2AC1001 # INVALID $s5, $t4, 0x1001 # 00000000 ' +Error on word '0xD2AC1001'. Expected 'vcmovf.s S010, S400, cc4', got '.word 0xD2AC1001 # vcmovf.s S010, S400 # 00040000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AC1081'. Expected 'vcmovf.p C010, C400, cc4', got '.word 0xD2AC1081 # INVALID $s5, $t4, 0x1081 # 00000000 ' +Error on word '0xD2AC1081'. Expected 'vcmovf.p C010, C400, cc4', got '.word 0xD2AC1081 # vcmovf.p C010, C400 # 00040000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AC9001'. Expected 'vcmovf.t C010, C400, cc4', got '.word 0xD2AC9001 # INVALID $s5, $t4, -0x6FFF # 00000000 ' +Error on word '0xD2AC9001'. Expected 'vcmovf.t C010, C400, cc4', got '.word 0xD2AC9001 # vcmovf.t C010, C400 # 00040000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AC9081'. Expected 'vcmovf.q C010, C400, cc4', got '.word 0xD2AC9081 # INVALID $s5, $t4, -0x6F7F # 00000000 ' +Error on word '0xD2AC9081'. Expected 'vcmovf.q C010, C400, cc4', got '.word 0xD2AC9081 # vcmovf.q C010, C400 # 00040000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AD1001'. Expected 'vcmovf.s S010, S400, cc5', got '.word 0xD2AD1001 # INVALID $s5, $t5, 0x1001 # 00000000 ' +Error on word '0xD2AD1001'. Expected 'vcmovf.s S010, S400, cc5', got '.word 0xD2AD1001 # vcmovf.s S010, S400 # 00050000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AD1081'. Expected 'vcmovf.p C010, C400, cc5', got '.word 0xD2AD1081 # INVALID $s5, $t5, 0x1081 # 00000000 ' +Error on word '0xD2AD1081'. Expected 'vcmovf.p C010, C400, cc5', got '.word 0xD2AD1081 # vcmovf.p C010, C400 # 00050000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AD9001'. Expected 'vcmovf.t C010, C400, cc5', got '.word 0xD2AD9001 # INVALID $s5, $t5, -0x6FFF # 00000000 ' +Error on word '0xD2AD9001'. Expected 'vcmovf.t C010, C400, cc5', got '.word 0xD2AD9001 # vcmovf.t C010, C400 # 00050000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AD9081'. Expected 'vcmovf.q C010, C400, cc5', got '.word 0xD2AD9081 # INVALID $s5, $t5, -0x6F7F # 00000000 ' +Error on word '0xD2AD9081'. Expected 'vcmovf.q C010, C400, cc5', got '.word 0xD2AD9081 # vcmovf.q C010, C400 # 00050000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AE1001'. Expected 'vcmovf.s S010, S400, cc6', got '.word 0xD2AE1001 # INVALID $s5, $t6, 0x1001 # 00000000 ' +Error on word '0xD2AE1001'. Expected 'vcmovf.s S010, S400, cc6', got '.word 0xD2AE1001 # vcmovf.s S010, S400 # 00060000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AE1081'. Expected 'vcmovf.p C010, C400, cc6', got '.word 0xD2AE1081 # INVALID $s5, $t6, 0x1081 # 00000000 ' +Error on word '0xD2AE1081'. Expected 'vcmovf.p C010, C400, cc6', got '.word 0xD2AE1081 # vcmovf.p C010, C400 # 00060000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AE9001'. Expected 'vcmovf.t C010, C400, cc6', got '.word 0xD2AE9001 # INVALID $s5, $t6, -0x6FFF # 00000000 ' +Error on word '0xD2AE9001'. Expected 'vcmovf.t C010, C400, cc6', got '.word 0xD2AE9001 # vcmovf.t C010, C400 # 00060000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AE9081'. Expected 'vcmovf.q C010, C400, cc6', got '.word 0xD2AE9081 # INVALID $s5, $t6, -0x6F7F # 00000000 ' +Error on word '0xD2AE9081'. Expected 'vcmovf.q C010, C400, cc6', got '.word 0xD2AE9081 # vcmovf.q C010, C400 # 00060000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AF1001'. Expected 'vcmovf.s S010, S400, cc7', got '.word 0xD2AF1001 # INVALID $s5, $t7, 0x1001 # 00000000 ' +Error on word '0xD2AF1001'. Expected 'vcmovf.s S010, S400, cc7', got '.word 0xD2AF1001 # vcmovf.s S010, S400 # 00070000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AF1081'. Expected 'vcmovf.p C010, C400, cc7', got '.word 0xD2AF1081 # INVALID $s5, $t7, 0x1081 # 00000000 ' +Error on word '0xD2AF1081'. Expected 'vcmovf.p C010, C400, cc7', got '.word 0xD2AF1081 # vcmovf.p C010, C400 # 00070000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AF9001'. Expected 'vcmovf.t C010, C400, cc7', got '.word 0xD2AF9001 # INVALID $s5, $t7, -0x6FFF # 00000000 ' +Error on word '0xD2AF9001'. Expected 'vcmovf.t C010, C400, cc7', got '.word 0xD2AF9001 # vcmovf.t C010, C400 # 00070000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' -Error on word '0xD2AF9081'. Expected 'vcmovf.q C010, C400, cc7', got '.word 0xD2AF9081 # INVALID $s5, $t7, -0x6F7F # 00000000 ' +Error on word '0xD2AF9081'. Expected 'vcmovf.q C010, C400, cc7', got '.word 0xD2AF9081 # vcmovf.q C010, C400 # 00070000 ' File: tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c InstrIdType: 'R4000ALLEGREX_VFPU4_FMT2_FMT5' gnuMode 'true' diff --git a/cplusplus/include/generated/UniqueId_enum_class.hpp b/cplusplus/include/generated/UniqueId_enum_class.hpp index 4db58038..b55215fc 100644 --- a/cplusplus/include/generated/UniqueId_enum_class.hpp +++ b/cplusplus/include/generated/UniqueId_enum_class.hpp @@ -701,6 +701,14 @@ enum class UniqueId { r4000allegrex_vi2f_p, r4000allegrex_vi2f_t, r4000allegrex_vi2f_q, + r4000allegrex_vcmovt_s, + r4000allegrex_vcmovt_p, + r4000allegrex_vcmovt_t, + r4000allegrex_vcmovt_q, + r4000allegrex_vcmovf_s, + r4000allegrex_vcmovf_p, + r4000allegrex_vcmovf_t, + r4000allegrex_vcmovf_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 668fca32..d3e34c93 100644 --- a/include/generated/InstrDescriptor_Descriptors_array.h +++ b/include/generated/InstrDescriptor_Descriptors_array.h @@ -701,6 +701,14 @@ const RabbitizerInstrDescriptor RabbitizerInstrDescriptor_Descriptors[] = { [RABBITIZER_INSTR_ID_r4000allegrex_vi2f_p] = { .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, [RABBITIZER_INSTR_ID_r4000allegrex_vi2f_t] = { .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, [RABBITIZER_INSTR_ID_r4000allegrex_vi2f_q] = { .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vcmovt_s] = { .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vcmovt_p] = { .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vcmovt_t] = { .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vcmovt_q] = { .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vcmovf_s] = { .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vcmovf_p] = { .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vcmovf_t] = { .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, .instrType=RABBITIZER_INSTR_TYPE_R }, + [RABBITIZER_INSTR_ID_r4000allegrex_vcmovf_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 b03504b0..bc218d21 100644 --- a/include/generated/InstrId_Names_array.h +++ b/include/generated/InstrId_Names_array.h @@ -701,6 +701,14 @@ const char *RabbitizerInstrId_Names[] = { [RABBITIZER_INSTR_ID_r4000allegrex_vi2f_p] = "vi2f.p", [RABBITIZER_INSTR_ID_r4000allegrex_vi2f_t] = "vi2f.t", [RABBITIZER_INSTR_ID_r4000allegrex_vi2f_q] = "vi2f.q", + [RABBITIZER_INSTR_ID_r4000allegrex_vcmovt_s] = "vcmovt.s", + [RABBITIZER_INSTR_ID_r4000allegrex_vcmovt_p] = "vcmovt.p", + [RABBITIZER_INSTR_ID_r4000allegrex_vcmovt_t] = "vcmovt.t", + [RABBITIZER_INSTR_ID_r4000allegrex_vcmovt_q] = "vcmovt.q", + [RABBITIZER_INSTR_ID_r4000allegrex_vcmovf_s] = "vcmovf.s", + [RABBITIZER_INSTR_ID_r4000allegrex_vcmovf_p] = "vcmovf.p", + [RABBITIZER_INSTR_ID_r4000allegrex_vcmovf_t] = "vcmovf.t", + [RABBITIZER_INSTR_ID_r4000allegrex_vcmovf_q] = "vcmovf.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 a9467eec..edfce9b4 100644 --- a/include/generated/InstrId_enum.h +++ b/include/generated/InstrId_enum.h @@ -701,6 +701,14 @@ typedef enum RabbitizerInstrId { RABBITIZER_INSTR_ID_r4000allegrex_vi2f_p, RABBITIZER_INSTR_ID_r4000allegrex_vi2f_t, RABBITIZER_INSTR_ID_r4000allegrex_vi2f_q, + RABBITIZER_INSTR_ID_r4000allegrex_vcmovt_s, + RABBITIZER_INSTR_ID_r4000allegrex_vcmovt_p, + RABBITIZER_INSTR_ID_r4000allegrex_vcmovt_t, + RABBITIZER_INSTR_ID_r4000allegrex_vcmovt_q, + RABBITIZER_INSTR_ID_r4000allegrex_vcmovf_s, + RABBITIZER_INSTR_ID_r4000allegrex_vcmovf_p, + RABBITIZER_INSTR_ID_r4000allegrex_vcmovf_t, + RABBITIZER_INSTR_ID_r4000allegrex_vcmovf_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 eb2a544e..fd0f65d4 100644 --- a/rabbitizer/InstrId.pyi +++ b/rabbitizer/InstrId.pyi @@ -642,6 +642,14 @@ class InstrId: r4000allegrex_vi2f_p: Enum r4000allegrex_vi2f_t: Enum r4000allegrex_vi2f_q: Enum + r4000allegrex_vcmovt_s: Enum + r4000allegrex_vcmovt_p: Enum + r4000allegrex_vcmovt_t: Enum + r4000allegrex_vcmovt_q: Enum + r4000allegrex_vcmovf_s: Enum + r4000allegrex_vcmovf_p: Enum + r4000allegrex_vcmovf_t: Enum + r4000allegrex_vcmovf_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 ac2a96fa..e6defa3c 100644 --- a/rust/src/instr_id_enum.rs +++ b/rust/src/instr_id_enum.rs @@ -701,6 +701,14 @@ pub enum InstrId { r4000allegrex_vi2f_p, r4000allegrex_vi2f_t, r4000allegrex_vi2f_q, + r4000allegrex_vcmovt_s, + r4000allegrex_vcmovt_p, + r4000allegrex_vcmovt_t, + r4000allegrex_vcmovt_q, + r4000allegrex_vcmovf_s, + r4000allegrex_vcmovf_p, + r4000allegrex_vcmovf_t, + r4000allegrex_vcmovf_q, r4000allegrex_svl_q, r4000allegrex_svr_q, r4000allegrex_USERDEF_00, diff --git a/tables/tables/instr_id/r4000allegrex/r4000allegrex_vfpu4_fmt2_fmt5.inc b/tables/tables/instr_id/r4000allegrex/r4000allegrex_vfpu4_fmt2_fmt5.inc index d3bd3497..6aa20242 100644 --- a/tables/tables/instr_id/r4000allegrex/r4000allegrex_vfpu4_fmt2_fmt5.inc +++ b/tables/tables/instr_id/r4000allegrex/r4000allegrex_vfpu4_fmt2_fmt5.inc @@ -6,10 +6,10 @@ | VFPU4 |1 0|1 0 1|fmt| |t| |p| | ------6-------2----3----2--------1---------------1--------------- |-------00------|-------01------|-------10------|-------11------| fmt - 00 | --- | --- | --- | --- | - 01 | --- | --- | --- | --- | - 10 | --- | --- | --- | --- | - 11 | --- | --- | --- | --- | + 00 | vcmovt.s | vcmovf.s | --- | --- | + 01 | vcmovt.p | vcmovf.p | --- | --- | + 10 | vcmovt.q | vcmovf.q | --- | --- | + 11 | vcmovt.t | vcmovf.t | --- | --- | tp |---------------|---------------|---------------|---------------| */ @@ -20,6 +20,13 @@ vcmovt.s ------6-------2----3----2----3---1-------7-------1-------7------- */ + // TODO: vd, vs, imm3 + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x0 << 2 | 0x0, vcmovt_s, vcmovt.s, + .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // Conditional Move on True Single Word + /* vcmovt.p 31--------26-25-24--21--19-18-16---14----------8---6------------0 @@ -27,6 +34,13 @@ vcmovt.p ------6-------2----3----2----3---1-------7-------1-------7------- */ + // TODO: vd, vs, imm3 + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x0 << 2 | 0x1, vcmovt_p, vcmovt.p, + .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // Conditional Move on True Single Pair + /* vcmovt.t 31--------26-25-24--21--19-18-16---14----------8---6------------0 @@ -34,6 +48,13 @@ vcmovt.t ------6-------2----3----2----3---1-------7-------1-------7------- */ + // TODO: vd, vs, imm3 + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x0 << 2 | 0x2, vcmovt_t, vcmovt.t, + .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // Conditional Move on True Single Triple + /* vcmovt.q 31--------26-25-24--21--19-18-16---14----------8---6------------0 @@ -41,6 +62,13 @@ vcmovt.q ------6-------2----3----2----3---1-------7-------1-------7------- */ + // TODO: vd, vs, imm3 + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x0 << 2 | 0x3, vcmovt_q, vcmovt.q, + .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // Conditional Move on True Single Quad + /* vcmovf.s 31--------26-25-24--21--19-18-16---14----------8---6------------0 @@ -48,6 +76,13 @@ vcmovf.s ------6-------2----3----2----3---1-------7-------1-------7------- */ + // TODO: vd, vs, imm3 + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x1 << 2 | 0x0, vcmovf_s, vcmovf.s, + .operands={RAB_OPERAND_r4000allegrex_s_vd, RAB_OPERAND_r4000allegrex_s_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // Conditional Move on False Single Word + /* vcmovf.p 31--------26-25-24--21--19-18-16---14----------8---6------------0 @@ -55,6 +90,13 @@ vcmovf.p ------6-------2----3----2----3---1-------7-------1-------7------- */ + // TODO: vd, vs, imm3 + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x1 << 2 | 0x1, vcmovf_p, vcmovf.p, + .operands={RAB_OPERAND_r4000allegrex_p_vd, RAB_OPERAND_r4000allegrex_p_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // Conditional Move on False Single Pair + /* vcmovf.t 31--------26-25-24--21--19-18-16---14----------8---6------------0 @@ -62,9 +104,23 @@ vcmovf.t ------6-------2----3----2----3---1-------7-------1-------7------- */ + // TODO: vd, vs, imm3 + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x1 << 2 | 0x2, vcmovf_t, vcmovf.t, + .operands={RAB_OPERAND_r4000allegrex_t_vd, RAB_OPERAND_r4000allegrex_t_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // Conditional Move on False Single Triple + /* vcmovf.q 31--------26-25-24--21--19-18-16---14----------8---6------------0 | VFPU4 |1 0|1 0 1|0 1| imm3|1| vs |1| vd | ------6-------2----3----2----3---1-------7-------1-------7------- */ + + // TODO: vd, vs, imm3 + RABBITIZER_DEF_INSTR_ID_ALTNAME( + r4000allegrex, 0x1 << 2 | 0x3, vcmovf_q, vcmovf.q, + .operands={RAB_OPERAND_r4000allegrex_q_vd, RAB_OPERAND_r4000allegrex_q_vs}, + .instrType=RABBITIZER_INSTR_TYPE_R + ) // Conditional Move on False Single Quad